From: Deepika Upadhyay Date: Wed, 17 Jun 2020 14:42:32 +0000 (-0400) Subject: os/Bluefs: fix file reader/writer buffer mempool X-Git-Tag: v15.2.9~122^2~66^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=96a339970a0012ae86162364fb0967e8aa1a533f;p=ceph.git os/Bluefs: fix file reader/writer buffer mempool Signed-off-by: Deepika Upadhyay (cherry picked from commit 6a50c85067c03884473922318267769a9e77ef2e) Conflicts: src/os/bluestore/bluestore_types.h Lacked explicit std:: ref in the target header --- diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index 00ea0d8fb65..4bf39fa0f17 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -1647,7 +1647,6 @@ int BlueFS::device_migrate_to_existing( ceph_assert(cur_len > 0); cur.substr_of(bl, off, cur_len); int r = bdev[dev_target]->write(i.offset, cur, buffered); - cur.reassign_to_mempool(mempool::mempool_bluefs_file_writer); ceph_assert(r == 0); off += cur_len; } @@ -1911,6 +1910,7 @@ int BlueFS::_read_random( logger->inc(l_bluefs_read_random_bytes, len); std::shared_lock s_lock(h->lock); + buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader); while (len > 0) { if (off < buf->bl_off || off >= buf->get_buf_end()) { s_lock.unlock(); @@ -1962,7 +1962,6 @@ int BlueFS::_read_random( buf->pos += r; } } - buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader); dout(20) << __func__ << " got " << ret << dendl; --h->file->num_reading; return ret; @@ -2011,6 +2010,7 @@ int BlueFS::_read( if (off < buf->bl_off || off >= buf->get_buf_end()) { s_lock.unlock(); std::unique_lock u_lock(h->lock); + buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader); if (off < buf->bl_off || off >= buf->get_buf_end()) { // if precondition hasn't changed during locking upgrade. buf->bl.clear(); @@ -2073,7 +2073,6 @@ int BlueFS::_read( buf->pos += r; } - buf->bl.reassign_to_mempool(mempool::mempool_bluefs_file_reader); dout(20) << __func__ << " got " << ret << dendl; ceph_assert(!outbl || (int)outbl->length() == ret); --h->file->num_reading; @@ -3341,7 +3340,6 @@ int BlueFS::open_for_write( } } - (*h)->buffer.reassign_to_mempool(mempool::mempool_bluefs_file_writer); dout(10) << __func__ << " h " << *h << " on " << file->fnode << dendl; return 0; } @@ -3360,6 +3358,7 @@ BlueFS::FileWriter *BlueFS::_create_writer(FileRef f) void BlueFS::_close_writer(FileWriter *h) { dout(10) << __func__ << " " << h << " type " << h->writer_type << dendl; + h->buffer.reassign_to_mempool(mempool::mempool_bluefs_file_writer); for (unsigned i=0; iiocv[i]) { diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index fee9c99ee11..449bde654a7 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_onode); + i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_data); } // initialize extent_map @@ -3354,7 +3354,7 @@ BlueStore::Onode* BlueStore::Onode::decode( denc(on->extent_map.inline_bl, p); on->extent_map.decode_some(on->extent_map.inline_bl); on->extent_map.inline_bl.reassign_to_mempool( - mempool::mempool_bluestore_cache_onode); + mempool::mempool_bluestore_cache_data); } else { on->extent_map.init_shards(false, false); @@ -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_onode); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); } else { auto& b = o->onode.attrs[name.c_str()] = val; - b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); } 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_onode); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); } else { auto& b = o->onode.attrs[p->first.c_str()] = p->second; - b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode); + b.reassign_to_mempool(mempool::mempool_bluestore_cache_data); } } txc->write_onode(o); diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 99976265f33..6fc7630f4b5 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -1283,7 +1283,7 @@ public: private: /// forward lookups - mempool::bluestore_cache_onode::unordered_map onode_map; + mempool::bluestore_cache_meta::unordered_map onode_map; friend class Collection; // for split_cache() @@ -2166,6 +2166,7 @@ private: mempool::bluestore_Extent::allocated_bytes() + mempool::bluestore_cache_meta::allocated_bytes() + mempool::bluestore_cache_other::allocated_bytes() + + mempool::bluestore_cache_onode::allocated_bytes() + mempool::bluestore_SharedBlob::allocated_bytes() + mempool::bluestore_inline_bl::allocated_bytes(); } diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index fb4e023be49..174cf3dddbf 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -898,7 +898,6 @@ struct bluestore_onode_t { uint64_t size = 0; ///< object size // FIXME: bufferptr does not have a mempool map attrs; -// mempool::bluestore_cache_onode::map attrs; ///< attrs struct shard_info { uint32_t offset = 0; ///< logical offset for start of shard