]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: prevent sync_submit if there is unstable io for this osr 11983/head
authorSage Weil <sage@redhat.com>
Tue, 15 Nov 2016 20:31:35 +0000 (15:31 -0500)
committerSage Weil <sage@redhat.com>
Fri, 18 Nov 2016 14:58:16 +0000 (08:58 -0600)
If this txc or any txc that precedes it has unstable IO we cannot queue
our kv transaction without a bdev sync.  Currently such a sync is only
triggered from the kv_sync_thread, so we need to do this kv submission
async.

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index b1f35184a1304b21b02ca07e9c263e48bc9ec375..ce753fbb89fbd520744bca1d5e7fae6f5c2fb6c0 100644 (file)
@@ -6234,6 +6234,9 @@ void BlueStore::_txc_state_proc(TransContext *txc)
          // sequencer that is committing serially it is possible to keep
          // submitting new transactions fast enough that we get stuck doing
          // so.  the alternative is to block here... fixme?
+       } else if (txc->osr->txc_with_unstable_io) {
+         dout(20) << __func__ << " prior txc(s) with unstable ios "
+                  << txc->osr->txc_with_unstable_io.load() << dendl;
        } else if (g_conf->bluestore_debug_randomize_serial_transaction &&
                   rand() % g_conf->bluestore_debug_randomize_serial_transaction
                   == 0) {