f(bluestore_alloc) \
f(bluestore_cache_data) \
f(bluestore_cache_onode) \
+ f(bluestore_cache_meta) \
f(bluestore_cache_other) \
f(bluestore_fsck) \
f(bluestore_txc) \
- f(bluestore_writing_deferred) \
+ f(bluestore_writing_deferred) \
f(bluestore_writing) \
f(bluefs) \
+ f(bluefs_file_reader) \
+ f(bluefs_file_writer) \
f(buffer_anon) \
f(buffer_meta) \
f(osd) \
OnodeRef& oldo,
const ghobject_t& old_oid,
const ghobject_t& new_oid,
- const mempool::bluestore_cache_other::string& new_okey)
+ const mempool::bluestore_cache_meta::string& new_okey)
{
std::lock_guard l(cache->lock);
ldout(cache->cct, 30) << __func__ << " " << old_oid << " -> " << new_oid
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_other);
+ i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_onode);
}
// initialize extent_map
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_other);
+ mempool::mempool_bluestore_cache_onode);
}
else {
on->extent_map.init_shards(false, false);
int r;
{
std::shared_lock l(c->lock);
- mempool::bluestore_cache_other::string k(name);
+ mempool::bluestore_cache_meta::string k(name);
OnodeRef o = c->get_onode(oid, false);
if (!o || !o->exists) {
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_other);
+ b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode);
} else {
auto& b = o->onode.attrs[name.c_str()] = val;
- b.reassign_to_mempool(mempool::mempool_bluestore_cache_other);
+ b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode);
}
txc->write_onode(o);
dout(10) << __func__ << " " << c->cid << " " << o->oid
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_other);
+ b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode);
} else {
auto& b = o->onode.attrs[p->first.c_str()] = p->second;
- b.reassign_to_mempool(mempool::mempool_bluestore_cache_other);
+ b.reassign_to_mempool(mempool::mempool_bluestore_cache_onode);
}
}
txc->write_onode(o);
<< new_oid << dendl;
int r;
ghobject_t old_oid = oldo->oid;
- mempool::bluestore_cache_other::string new_okey;
+ mempool::bluestore_cache_meta::string new_okey;
if (newo) {
if (newo->exists) {
boost::intrusive::list_member_hook<>,
&Buffer::state_item> > state_list_t;
- mempool::bluestore_cache_other::map<uint32_t, std::unique_ptr<Buffer>>
+ mempool::bluestore_cache_meta::map<uint32_t, std::unique_ptr<Buffer>>
buffer_map;
// we use a bare intrusive list here instead of std::map because
// we use a bare pointer because we don't want to affect the ref
// count
- mempool::bluestore_cache_other::unordered_map<uint64_t,SharedBlob*> sb_map;
+ mempool::bluestore_cache_meta::unordered_map<uint64_t,SharedBlob*> sb_map;
SharedBlobRef lookup(uint64_t sbid) {
std::lock_guard l(lock);
#endif
};
typedef boost::intrusive_ptr<Blob> BlobRef;
- typedef mempool::bluestore_cache_other::map<int,BlobRef> blob_map_t;
+ typedef mempool::bluestore_cache_meta::map<int,BlobRef> blob_map_t;
/// a logical extent, pointing to (some portion of) a blob
typedef boost::intrusive::set_base_hook<boost::intrusive::optimize_size<true> > ExtentBase; //making an alias to avoid build warnings
bool loaded = false; ///< true if shard is loaded
bool dirty = false; ///< true if shard is dirty and needs reencoding
};
- mempool::bluestore_cache_other::vector<Shard> shards; ///< shards
+ mempool::bluestore_cache_meta::vector<Shard> shards; ///< shards
ceph::buffer::list inline_bl; ///< cached encoded map, if unsharded; empty=>dirty
ghobject_t oid;
/// key under PREFIX_OBJ where we are stored
- mempool::bluestore_cache_other::string key;
+ mempool::bluestore_cache_meta::string key;
boost::intrusive::list_member_hook<> lru_item;
ceph::condition_variable flush_cond; ///< wait here for uncommitted txns
Onode(Collection *c, const ghobject_t& o,
- const mempool::bluestore_cache_other::string& k)
+ const mempool::bluestore_cache_meta::string& k)
: nref(0),
c(c),
oid(o),
private:
/// forward lookups
- mempool::bluestore_cache_other::unordered_map<ghobject_t,OnodeRef> onode_map;
+ mempool::bluestore_cache_onode::unordered_map<ghobject_t,OnodeRef> onode_map;
friend struct Collection; // for split_cache()
OnodeRef lookup(const ghobject_t& o);
void rename(OnodeRef& o, const ghobject_t& old_oid,
const ghobject_t& new_oid,
- const mempool::bluestore_cache_other::string& new_okey);
+ const mempool::bluestore_cache_meta::string& new_okey);
void clear();
bool empty();
MetaCache(BlueStore *s) : MempoolCache(s) {};
virtual uint64_t _get_used_bytes() const {
- return mempool::bluestore_cache_other::allocated_bytes() +
- mempool::bluestore_cache_onode::allocated_bytes();
+ return mempool::bluestore_cache_meta::allocated_bytes() +
+ mempool::bluestore_cache_other::allocated_bytes() +
+ mempool::bluestore_cache_onode::allocated_bytes();
}
virtual std::string get_cache_name() const {
struct bluestore_onode_t {
uint64_t nid = 0; ///< numeric id (locally unique)
uint64_t size = 0; ///< object size
- std::map<mempool::bluestore_cache_other::string, ceph::buffer::ptr> attrs; ///< attrs
+ // FIXME: bufferptr does not have a mempool
+ std::map<mempool::bluestore_cache_meta::string, ceph::buffer::ptr> attrs;
+// mempool::bluestore_cache_onode::map<string, bufferptr> attrs; ///< attrs
struct shard_info {
uint32_t offset = 0; ///< logical offset for start of shard
#if defined(WITH_BLUESTORE)
void get_mempool_stats(uint64_t* total_bytes, uint64_t* total_items)
{
+ uint64_t meta_allocated = mempool::bluestore_cache_meta::allocated_bytes();
uint64_t onode_allocated = mempool::bluestore_cache_onode::allocated_bytes();
uint64_t other_allocated = mempool::bluestore_cache_other::allocated_bytes();
+ uint64_t meta_items = mempool::bluestore_cache_meta::allocated_items();
uint64_t onode_items = mempool::bluestore_cache_onode::allocated_items();
uint64_t other_items = mempool::bluestore_cache_other::allocated_items();
- cout << "onode(" << onode_allocated << "/" << onode_items
+ cout << "meta(" << meta_allocated << "/" << meta_items
+ << ") onode(" << onode_allocated << "/" << onode_items
<< ") other(" << other_allocated << "/" << other_items
<< ")" << std::endl;
- *total_bytes = onode_allocated + other_allocated;
+ *total_bytes = meta_allocated + onode_allocated + other_allocated;
*total_items = onode_items;
}