]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: set STATE_KV_SUBMITTED properly.
authorIgor Fedotov <ifedotov@suse.com>
Mon, 7 Oct 2019 12:57:36 +0000 (15:57 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Mon, 7 Oct 2019 12:57:36 +0000 (15:57 +0300)
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 <ifedotov@suse.com>
src/os/bluestore/BlueStore.cc

index 09931b70ea1fca148fc2559b91312929d1ac702a..03620f6fbdb631b86a10b39e516d062fcda9873f 100644 (file)
@@ -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) {