From: Sage Weil Date: Fri, 29 Sep 2017 18:47:19 +0000 (-0500) Subject: os/bluestore: wake kv thread when blocking on deferred_bytes X-Git-Tag: v12.2.2~170^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9ab0f64bcf74f74838f6066d554f728902c31715;p=ceph.git os/bluestore: wake kv thread when blocking on deferred_bytes We need to wake the kv thread whenever setting deferred_aggressive to ensure that txns with deferred io that have committed but haven't submitted their deferred writes get submitted. This aligns us with the other users of deferred_aggressive (e.g., _osr_drain_all). Signed-off-by: Sage Weil (cherry picked from commit 633b17007701d87903fe1d10b19c44210a3326eb) --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e8e3e29b43fa..b46b06ae410a 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8865,6 +8865,11 @@ int BlueStore::queue_transactions( << dendl; ++deferred_aggressive; deferred_try_submit(); + { + // wake up any previously finished deferred events + std::lock_guard l(kv_lock); + kv_cond.notify_one(); + } throttle_deferred_bytes.get(txc->cost); --deferred_aggressive; }