]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/Finisher: Using queue(list<context*>) instead queue(context*). 8942/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Fri, 30 Dec 2016 12:11:19 +0000 (20:11 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 30 Dec 2016 12:11:19 +0000 (20:11 +0800)
Avoid call many time queue(context*).

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/bluestore/BlueStore.cc
src/os/kstore/KStore.cc

index 801d333965a8b602c5b4634cfad840b072b40275..5a057204c82ac20c65a3e3f138b354813a2677e5 100644 (file)
@@ -6556,12 +6556,10 @@ void BlueStore::_txc_finish_kv(TransContext *txc)
     finishers[n]->queue(txc->onreadable);
     txc->onreadable = NULL;
   }
-  while (!txc->oncommits.empty()) {
-    auto f = txc->oncommits.front();
-    finishers[n]->queue(f);
-    txc->oncommits.pop_front();
-  }
 
+  if (!txc->oncommits.empty()) {
+    finishers[n]->queue(txc->oncommits);
+  }
   op_queue_release_throttle(txc);
 }
 
index 2f3708fdc7489f49c1317be964f3896e5afb9899..025fff8fd95909bf00c0fed1a89478a38258acf1 100755 (executable)
@@ -1988,9 +1988,8 @@ void KStore::_txc_finish_kv(TransContext *txc)
     finisher.queue(txc->oncommit);
     txc->oncommit = NULL;
   }
-  while (!txc->oncommits.empty()) {
-    finisher.queue(txc->oncommits.front());
-    txc->oncommits.pop_front();
+  if (!txc->oncommits.empty()) {
+    finisher.queue(txc->oncommits);
   }
 
   throttle_ops.put(txc->ops);