From 2303c732614e710bac2af20faa690d7d7092b2f8 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 9 Oct 2017 22:38:33 +0800 Subject: [PATCH] os/bluestore/BlueStore: ASAP wake up _kv_finalize_thread. Signed-off-by: Jianpeng Ma --- src/os/bluestore/BlueStore.cc | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index d2b852f41c7..f519860c7d6 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8564,6 +8564,29 @@ void BlueStore::_kv_sync_thread() int r = cct->_conf->bluestore_debug_omit_kv_commit ? 0 : db->submit_transaction_sync(synct); assert(r == 0); + { + std::unique_lock m(kv_finalize_lock); + if (kv_committing_to_finalize.empty()) { + kv_committing_to_finalize.swap(kv_committing); + } else { + kv_committing_to_finalize.insert( + kv_committing_to_finalize.end(), + kv_committing.begin(), + kv_committing.end()); + kv_committing.clear(); + } + if (deferred_stable_to_finalize.empty()) { + deferred_stable_to_finalize.swap(deferred_stable); + } else { + deferred_stable_to_finalize.insert( + deferred_stable_to_finalize.end(), + deferred_stable.begin(), + deferred_stable.end()); + deferred_stable.clear(); + } + kv_finalize_cond.notify_one(); + } + if (new_nid_max) { nid_max = new_nid_max; dout(10) << __func__ << " nid_max now " << nid_max << dendl; @@ -8598,29 +8621,6 @@ void BlueStore::_kv_sync_thread() bluefs_extents_reclaiming.clear(); } - { - std::unique_lock m(kv_finalize_lock); - if (kv_committing_to_finalize.empty()) { - kv_committing_to_finalize.swap(kv_committing); - } else { - kv_committing_to_finalize.insert( - kv_committing_to_finalize.end(), - kv_committing.begin(), - kv_committing.end()); - kv_committing.clear(); - } - if (deferred_stable_to_finalize.empty()) { - deferred_stable_to_finalize.swap(deferred_stable); - } else { - deferred_stable_to_finalize.insert( - deferred_stable_to_finalize.end(), - deferred_stable.begin(), - deferred_stable.end()); - deferred_stable.clear(); - } - kv_finalize_cond.notify_one(); - } - l.lock(); // previously deferred "done" are now "stable" by virtue of this // commit cycle. -- 2.39.5