From: Sage Weil Date: Thu, 3 Aug 2017 20:37:36 +0000 (-0400) Subject: os/bluestore: set deferred_aggressive if initial throttle get fails X-Git-Tag: ses5-milestone10~3^2~3^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3c6a6c46d5808d6c42ed4dcfb441bad64366686b;p=ceph.git os/bluestore: set deferred_aggressive if initial throttle get fails This ensures that in-progress transactions with deferred writes queue their IO immediately. Otherwise, we may end up waiting indefinitely. This is a biggish hammer. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7276b60fa40a9..baf4eff96b354 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8808,9 +8808,13 @@ int BlueStore::queue_transactions( if (txc->deferred_txn) { // ensure we do not block here because of deferred writes if (!throttle_deferred_bytes.get_or_fail(txc->cost)) { + dout(10) << __func__ << " failed get throttle_deferred_bytes, aggressive" + << dendl; + ++deferred_aggressive; deferred_submit_all(); throttle_deferred_bytes.get(txc->cost); - } + --deferred_aggressive; + } } utime_t tend = ceph_clock_now();