From: James Liu Date: Fri, 18 Mar 2016 17:39:44 +0000 (-0700) Subject: os/kstore: we have flush_txns is to make sure read after write for the same object... X-Git-Tag: v11.0.0~178^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cccf1f0b2c0134705d14acd17eaf9120b60a0467;p=ceph.git os/kstore: we have flush_txns is to make sure read after write for the same object. That's the reason why we add _txc_finalize(osr,txc) after we add the transaction. However, since we did not call STATE_FINISHING at all, The _txf_finish will never be called and flush_txns of object will never be removed. It will make the read on the same object hanging there forever. We will combine KV_DONE and STATE_FINISHING. Signed-off-by: James Liu --- diff --git a/src/os/kstore/KStore.cc b/src/os/kstore/KStore.cc old mode 100644 new mode 100755 index a2250d8bfdf2..3c36b5c75da8 --- a/src/os/kstore/KStore.cc +++ b/src/os/kstore/KStore.cc @@ -2204,7 +2204,7 @@ void KStore::_txc_state_proc(TransContext *txc) case TransContext::STATE_KV_DONE: txc->log_state_latency(logger, l_kstore_state_kv_done_lat); txc->state = TransContext::STATE_FINISHING; - break; + // ** fall-thru ** case TransContext::TransContext::STATE_FINISHING: txc->log_state_latency(logger, l_kstore_state_finishing_lat);