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 <sage@redhat.com>
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();