From: Igor Fedotov Date: Sun, 20 Sep 2020 10:45:28 +0000 (+0300) Subject: os/bluestore: bind attrs to bluestore_cache_meta mempool. X-Git-Tag: v15.2.9~122^2~66^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F37264%2Fhead;p=ceph.git os/bluestore: bind attrs to bluestore_cache_meta mempool. This seems to be a better choice over bluestore_cache_data Signed-off-by: Igor Fedotov (cherry picked from commit f4e09fc103454fa8a41b5ffb822639368a89522d) Conflicts: src/os/bluestore/bluestore_types.h Caused by the lack of explicit std:: reference in headers - master has got this as a part of crimson effort. --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 449bde654a70..61429c03e602 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3345,7 +3345,7 @@ BlueStore::Onode* BlueStore::Onode::decode( auto p = v.front().begin_deep(); on->onode.decode(p); for (auto& i : on->onode.attrs) { - i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_data); + i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_meta); } // initialize extent_map @@ -14330,10 +14330,10 @@ int BlueStore::_setattr(TransContext *txc, if (val.is_partial()) { auto& b = o->onode.attrs[name.c_str()] = bufferptr(val.c_str(), val.length()); - b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_meta); } else { auto& b = o->onode.attrs[name.c_str()] = val; - b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_meta); } txc->write_onode(o); dout(10) << __func__ << " " << c->cid << " " << o->oid @@ -14356,10 +14356,10 @@ int BlueStore::_setattrs(TransContext *txc, if (p->second.is_partial()) { auto& b = o->onode.attrs[p->first.c_str()] = bufferptr(p->second.c_str(), p->second.length()); - b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_meta); } else { auto& b = o->onode.attrs[p->first.c_str()] = p->second; - b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_meta); } } txc->write_onode(o); diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index 4f686904501e..f0cc26c08cfe 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -900,8 +900,8 @@ ostream& operator<<(ostream& out, const bluestore_shared_blob_t& o); struct bluestore_onode_t { uint64_t nid = 0; ///< numeric id (locally unique) uint64_t size = 0; ///< object size - // FIXME: bufferptr does not have a mempool - map attrs; + // mempool to be assigned to buffer::ptr manually + std::map attrs; struct shard_info { uint32_t offset = 0; ///< logical offset for start of shard