]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: prevent sync transaction submit with extent freelist
authorSage Weil <sage@redhat.com>
Wed, 19 Oct 2016 17:59:53 +0000 (13:59 -0400)
committerSage Weil <sage@redhat.com>
Tue, 1 Nov 2016 14:30:03 +0000 (10:30 -0400)
It doesn't support unordered transactions.

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

index b351dec68c132c62358ec38e022805820320114a..3119ae1bd5f77dba476d0baca23dd0a8c04b8114 100644 (file)
@@ -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
index bd81dd931c7c4435e0ceeb73c45514fb113602a8..18f9eab3b43e78f1b46c450930eede1501ba0404 100644 (file)
@@ -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__
index b3ca24b7bf46907136e4aa2d910feb1edea96566..97062fc991714a30a12bc8afc4113af8a27efe33 100644 (file)
@@ -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;
+  }
 };