diff options
author | Greg Farnum <gregory.farnum@dreamhost.com> | 2012-04-13 16:49:10 -0700 |
---|---|---|
committer | Sage Weil <sage.weil@dreamhost.com> | 2012-04-13 21:51:21 -0700 |
commit | f355875baf42078b3917d9f23414f3f7e5b25458 (patch) | |
tree | 45e82573904785479fa69ee686fd897e40bd1136 /src/osdc | |
parent | 6257a94e3c7762980ed616586c0ed945884f3a27 (diff) | |
download | ceph-f355875baf42078b3917d9f23414f3f7e5b25458.tar.gz |
ObjectCacher: group all the function definitions properly
Some of the ObjectCacher functions were separate, which works poorly
if you're trying to do things like use ldout.
Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
Diffstat (limited to 'src/osdc')
-rw-r--r-- | src/osdc/ObjectCacher.cc | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/src/osdc/ObjectCacher.cc b/src/osdc/ObjectCacher.cc index 52c1a793a6d..a6c0328df30 100644 --- a/src/osdc/ObjectCacher.cc +++ b/src/osdc/ObjectCacher.cc @@ -15,61 +15,6 @@ #define dout_subsys ceph_subsys_objectcacher #undef dout_prefix #define dout_prefix *_dout << "objectcacher.object(" << oid << ") " - -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), - 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) { - perf_start(); -} - -ObjectCacher::~ObjectCacher() -{ - perf_stop(); - // we should be empty. - for (vector<hash_map<sobject_t, Object *> >::iterator i = objects.begin(); - i != objects.end(); - ++i) - assert(!i->size()); - assert(lru_rest.lru_get_size() == 0); - assert(lru_dirty.lru_get_size() == 0); - assert(dirty_bh.empty()); -} - -void ObjectCacher::perf_start() -{ - PerfCountersBuilder plb(cct, cct->_conf->name.to_str(), 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"); - plb.add_u64_counter(l_objectcacher_cache_bytes_hit, "cache_bytes_hit"); - plb.add_u64_counter(l_objectcacher_cache_bytes_miss, "cache_bytes_miss"); - plb.add_u64_counter(l_objectcacher_data_read, "data_read"); - plb.add_u64_counter(l_objectcacher_data_written, "data_written"); - plb.add_u64_counter(l_objectcacher_data_flushed, "data_flushed"); - plb.add_u64_counter(l_objectcacher_overwritten_in_flush, - "data_overwritten_while_flushing"); - plb.add_u64_counter(l_objectcacher_write_ops_blocked, "write_ops_blocked"); - plb.add_u64_counter(l_objectcacher_write_bytes_blocked, "write_bytes_blocked"); - plb.add_fl(l_objectcacher_write_time_blocked, "write_time_blocked"); - - perfcounter = plb.create_perf_counters(); - cct->get_perfcounters_collection()->add(perfcounter); -} - -void ObjectCacher::perf_stop() -{ - assert(perfcounter); - cct->get_perfcounters_collection()->remove(perfcounter); - delete perfcounter; -} - ObjectCacher::BufferHead *ObjectCacher::Object::split(BufferHead *left, loff_t off) { ldout(oc->cct, 20) << "split " << *left << " at " << off << dendl; @@ -467,6 +412,61 @@ void ObjectCacher::Object::truncate(loff_t s) #undef dout_prefix #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), + 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) { + perf_start(); +} + +ObjectCacher::~ObjectCacher() +{ + perf_stop(); + // we should be empty. + for (vector<hash_map<sobject_t, Object *> >::iterator i = objects.begin(); + i != objects.end(); + ++i) + assert(!i->size()); + assert(lru_rest.lru_get_size() == 0); + assert(lru_dirty.lru_get_size() == 0); + assert(dirty_bh.empty()); +} + +void ObjectCacher::perf_start() +{ + PerfCountersBuilder plb(cct, cct->_conf->name.to_str(), 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"); + plb.add_u64_counter(l_objectcacher_cache_bytes_hit, "cache_bytes_hit"); + plb.add_u64_counter(l_objectcacher_cache_bytes_miss, "cache_bytes_miss"); + plb.add_u64_counter(l_objectcacher_data_read, "data_read"); + plb.add_u64_counter(l_objectcacher_data_written, "data_written"); + plb.add_u64_counter(l_objectcacher_data_flushed, "data_flushed"); + plb.add_u64_counter(l_objectcacher_overwritten_in_flush, + "data_overwritten_while_flushing"); + plb.add_u64_counter(l_objectcacher_write_ops_blocked, "write_ops_blocked"); + plb.add_u64_counter(l_objectcacher_write_bytes_blocked, "write_bytes_blocked"); + plb.add_fl(l_objectcacher_write_time_blocked, "write_time_blocked"); + + perfcounter = plb.create_perf_counters(); + cct->get_perfcounters_collection()->add(perfcounter); +} + +void ObjectCacher::perf_stop() +{ + assert(perfcounter); + cct->get_perfcounters_collection()->remove(perfcounter); + delete perfcounter; +} + /* private */ ObjectCacher::Object *ObjectCacher::get_object(sobject_t oid, ObjectSet *oset, object_locator_t &l) |