]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/Finisher: fix perfcounter
authorSage Weil <sage@redhat.com>
Wed, 20 Aug 2014 04:29:41 +0000 (21:29 -0700)
committerSage Weil <sage@redhat.com>
Wed, 27 Aug 2014 21:36:06 +0000 (14:36 -0700)
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 <sage@redhat.com>
src/common/Finisher.cc
src/common/Finisher.h

index 0cbfc44926f3c139679e2d264b2b33e4514310ea..f3f4107dcf1713f85f99ce93388b9421956f5032 100644 (file)
 
 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()
index 236fecf3f6a0b9fa4d73a4bc397edd1cb6677143..76a3944ac9e3eff0dd8078ec24178d1bc5955fd0 100644 (file)
@@ -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<Context*>& 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<Context*>& 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<Context*>& 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();