objecter = new Objecter(cct, messenger, monclient, osdmap, client_lock, timer);
objecter->set_client_incarnation(0); // client always 0, for now.
writeback_handler = new ObjecterWriteback(objecter);
- objectcacher = new ObjectCacher(cct, *writeback_handler, client_lock,
+ objectcacher = new ObjectCacher(cct, "libcephfs", *writeback_handler, client_lock,
client_flush_set_callback, // all commit callback
(void*)this);
filer = new Filer(objecter);
Mutex::Locker l(cache_lock);
ldout(cct, 20) << "enabling writback caching..." << dendl;
writeback_handler = new LibrbdWriteback(data_ctx, cache_lock);
- object_cacher = new ObjectCacher(cct, *writeback_handler, cache_lock,
+ string ocname = string("librbd-") + data_ctx.get_pool_name() + string("/") + name;
+ if (snapname.length()) {
+ ocname += "@";
+ ocname += snapname;
+ }
+ object_cacher = new ObjectCacher(cct, name, *writeback_handler, cache_lock,
NULL, NULL);
object_set = new ObjectCacher::ObjectSet(NULL, data_ctx.get_id(), 0);
object_cacher->start();
#define dout_subsys ceph_subsys_objectcacher
#undef dout_prefix
#define dout_prefix *_dout << "objectcacher.object(" << oid << ") "
+
+
+
ObjectCacher::BufferHead *ObjectCacher::Object::split(BufferHead *left, loff_t off)
{
ldout(oc->cct, 20) << "split " << *left << " at " << off << dendl;
#define dout_prefix *_dout << "objectcacher "
-ObjectCacher::
-ObjectCacher(CephContext *cct_, WritebackHandler& wb, Mutex& l,
- flush_set_callback_t flush_callback,
- void *flush_callback_arg) :
- perfcounter(NULL),
- cct(cct_), writeback_handler(wb), lock(l),
+ObjectCacher::ObjectCacher(CephContext *cct_, string name, WritebackHandler& wb, Mutex& l,
+ flush_set_callback_t flush_callback,
+ void *flush_callback_arg)
+ : perfcounter(NULL),
+ cct(cct_), writeback_handler(wb), name(name), lock(l),
flush_set_callback(flush_callback), flush_set_callback_arg(flush_callback_arg),
flusher_stop(false), flusher_thread(this),
stat_waiter(0),
- stat_clean(0), stat_dirty(0), stat_rx(0), stat_tx(0), stat_missing(0) {
+ stat_clean(0), stat_dirty(0), stat_rx(0), stat_tx(0), stat_missing(0)
+{
perf_start();
}
void ObjectCacher::perf_start()
{
- PerfCountersBuilder plb(cct, "objectcacher", l_objectcacher_first, l_objectcacher_last);
+ string n = "objectcacher-" + name;
+ PerfCountersBuilder plb(cct, n, l_objectcacher_first, l_objectcacher_last);
plb.add_u64_counter(l_objectcacher_cache_ops_hit, "cache_ops_hit");
plb.add_u64_counter(l_objectcacher_cache_ops_miss, "cache_ops_miss");
private:
WritebackHandler& writeback_handler;
+ string name;
Mutex& lock;
flush_set_callback_t flush_set_callback;
- ObjectCacher(CephContext *cct_, WritebackHandler& wb, Mutex& l,
+ ObjectCacher(CephContext *cct_, string name, WritebackHandler& wb, Mutex& l,
flush_set_callback_t flush_callback,
void *flush_callback_arg);
~ObjectCacher();