From: Sage Weil Date: Wed, 19 Oct 2016 17:59:53 +0000 (-0400) Subject: os/bluestore: prevent sync transaction submit with extent freelist X-Git-Tag: v11.1.0~456^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=722bb20306fc49db0bf1315de536ad07231200f2;p=ceph.git os/bluestore: prevent sync transaction submit with extent freelist It doesn't support unordered transactions. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BitmapFreelistManager.h b/src/os/bluestore/BitmapFreelistManager.h index b351dec68c13..3119ae1bd5f7 100644 --- a/src/os/bluestore/BitmapFreelistManager.h +++ b/src/os/bluestore/BitmapFreelistManager.h @@ -67,6 +67,10 @@ public: void release( uint64_t offset, uint64_t length, KeyValueDB::Transaction txn) override; + + bool supports_parallel_transactions() override { + return true; + } }; #endif diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index bd81dd931c7c..18f9eab3b43e 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -6166,7 +6166,8 @@ void BlueStore::_txc_state_proc(TransContext *txc) sb->bc.finish_write(txc->seq); } txc->shared_blobs_written.clear(); - if (g_conf->bluestore_sync_submit_transaction) { + if (g_conf->bluestore_sync_submit_transaction && + fm->supports_parallel_transactions()) { if (txc->last_nid >= nid_max || txc->last_blobid >= blobid_max) { dout(20) << __func__ diff --git a/src/os/bluestore/FreelistManager.h b/src/os/bluestore/FreelistManager.h index b3ca24b7bf46..97062fc99171 100644 --- a/src/os/bluestore/FreelistManager.h +++ b/src/os/bluestore/FreelistManager.h @@ -38,6 +38,10 @@ public: virtual void release( uint64_t offset, uint64_t length, KeyValueDB::Transaction txn) = 0; + + virtual bool supports_parallel_transactions() { + return false; + } };