From 62049dd179531fcbf76abea6bcb09e5ab6438f09 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Tue, 6 Aug 2019 21:42:27 +0800 Subject: [PATCH] os/bluestore: narrow deferred_lock in _deferred_aio_finish. Signed-off-by: Jianpeng Ma --- src/os/bluestore/BlueStore.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e79ad0b1beea..e9d111ef8553 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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; + } } } -- 2.47.3