]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: wake kv thread when blocking on deferred_bytes
authorSage Weil <sage@redhat.com>
Fri, 29 Sep 2017 18:47:19 +0000 (13:47 -0500)
committerSage Weil <sage@redhat.com>
Wed, 4 Oct 2017 21:52:18 +0000 (16:52 -0500)
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 <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index 852c6ba14e3150c70aab6a412650cf15bb07e3b3..f5a198a4de420f52a5433dba738a9c518ad0934c 100644 (file)
@@ -8951,6 +8951,11 @@ int BlueStore::queue_transactions(
               << dendl;
       ++deferred_aggressive;
       deferred_try_submit();
+      {
+       // wake up any previously finished deferred events
+       std::lock_guard<std::mutex> l(kv_lock);
+       kv_cond.notify_one();
+      }
       throttle_deferred_bytes.get(txc->cost);
       --deferred_aggressive;
    }