From: Igor Fedotov Date: Mon, 7 Oct 2019 12:57:36 +0000 (+0300) Subject: os/bluestore: set STATE_KV_SUBMITTED properly. X-Git-Tag: v15.1.0~1272^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0f222105aa14cbe2e6b348c57b75e825dd9d4f3c;p=ceph.git os/bluestore: set STATE_KV_SUBMITTED properly. TXC's state was set before actual DB update which improperly permits OpSequencer::flush to proceed. This is a regression caused by: https://github.com/ceph/ceph/pull/29674/commits/a2fa546d02cfe2a910413acdec5ef11dbfacb359 Fixes: https://tracker.ceph.com/issues/42189 Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 09931b70ea1f..03620f6fbdb6 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -11174,7 +11174,6 @@ void BlueStore::_txc_finalize_kv(TransContext *txc, KeyValueDB::Transaction t) void BlueStore::_txc_apply_kv(TransContext *txc, bool sync_submit_transaction) { ceph_assert(txc->state == TransContext::STATE_KV_QUEUED); - txc->state = TransContext::STATE_KV_SUBMITTED; { #if defined(WITH_LTTNG) auto start = mono_clock::now(); @@ -11182,6 +11181,7 @@ void BlueStore::_txc_apply_kv(TransContext *txc, bool sync_submit_transaction) int r = cct->_conf->bluestore_debug_omit_kv_commit ? 0 : db->submit_transaction(txc->t); ceph_assert(r == 0); + txc->state = TransContext::STATE_KV_SUBMITTED; #if defined(WITH_LTTNG) if (txc->tracing) {