From: Sage Weil Date: Wed, 20 Aug 2014 04:29:41 +0000 (-0700) Subject: common/Finisher: fix perfcounter X-Git-Tag: v0.86~190^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cfc68307843ea5fa878cf2f7fe9f45f25c9f9e99;p=ceph.git common/Finisher: fix perfcounter Make sure we add in the nubmer of elements when we queue them from a list or deque or vector. Fix the type to be a counter. Backport: firefly, dumpling Signed-off-by: Sage Weil --- diff --git a/src/common/Finisher.cc b/src/common/Finisher.cc index 0cbfc44926f3..f3f4107dcf17 100644 --- a/src/common/Finisher.cc +++ b/src/common/Finisher.cc @@ -11,16 +11,19 @@ void Finisher::start() { + ldout(cct, 10) << __func__ << dendl; finisher_thread.create(); } void Finisher::stop() { + ldout(cct, 10) << __func__ << dendl; finisher_lock.Lock(); finisher_stop = true; finisher_cond.Signal(); finisher_lock.Unlock(); finisher_thread.join(); + ldout(cct, 10) << __func__ << " finish" << dendl; } void Finisher::wait_for_empty() diff --git a/src/common/Finisher.h b/src/common/Finisher.h index 236fecf3f6a0..76a3944ac9e3 100644 --- a/src/common/Finisher.h +++ b/src/common/Finisher.h @@ -55,36 +55,36 @@ class Finisher { } else finisher_queue.push_back(c); finisher_cond.Signal(); - finisher_lock.Unlock(); if (logger) logger->inc(l_finisher_queue_len); + finisher_lock.Unlock(); } void queue(vector& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void queue(deque& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void queue(list& ls) { finisher_lock.Lock(); finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end()); finisher_cond.Signal(); + if (logger) + logger->inc(l_finisher_queue_len, ls.size()); finisher_lock.Unlock(); ls.clear(); - if (logger) - logger->inc(l_finisher_queue_len); } void start();