]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: narrow deferred_lock in _deferred_aio_finish.
authorJianpeng Ma <jianpeng.ma@intel.com>
Tue, 6 Aug 2019 13:42:27 +0000 (21:42 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Wed, 7 Aug 2019 01:58:16 +0000 (09:58 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/bluestore/BlueStore.cc

index e79ad0b1beea043e7c3b2845516a6dec9807634a..e9d111ef8553cd9248af78b216146a5daf24b48b 100644 (file)
@@ -11003,18 +11003,22 @@ void BlueStore::_deferred_aio_finish(OpSequencer *osr)
   DeferredBatch *b = osr->deferred_running;
 
   {
-    std::lock_guard l(deferred_lock);
+    deferred_lock.lock();
     ceph_assert(osr->deferred_running == b);
     osr->deferred_running = nullptr;
     if (!osr->deferred_pending) {
       dout(20) << __func__ << " dequeueing" << dendl;
       auto q = deferred_queue.iterator_to(*osr);
       deferred_queue.erase(q);
-    } else if (deferred_aggressive) {
-      dout(20) << __func__ << " queuing async deferred_try_submit" << dendl;
-      deferred_finisher.queue(new C_DeferredTrySubmit(this));
+      deferred_lock.unlock();
     } else {
-      dout(20) << __func__ << " leaving queued, more pending" << dendl;
+      deferred_lock.unlock();
+      if (deferred_aggressive) {
+       dout(20) << __func__ << " queuing async deferred_try_submit" << dendl;
+       deferred_finisher.queue(new C_DeferredTrySubmit(this));
+      } else {
+       dout(20) << __func__ << " leaving queued, more pending" << dendl;
+      }
     }
   }