]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: set per_pool_omap key on mkfs
authorSage Weil <sage@redhat.com>
Tue, 23 Jul 2019 22:44:40 +0000 (17:44 -0500)
committerSage Weil <sage@redhat.com>
Tue, 6 Aug 2019 14:24:14 +0000 (09:24 -0500)
This key indicates that *all* objects put omap in the per-pool prefix and
key format.

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

index 572d83c7724b187e0a3d1527baaf1700f7611961..b8589452e6c6c5117974bb29bd5db6bde81b5172 100644 (file)
@@ -6180,7 +6180,11 @@ int BlueStore::mkfs()
       encode((uint64_t)min_alloc_size, bl);
       t->set(PREFIX_SUPER, "min_alloc_size", bl);
     }
-
+    {
+      bufferlist bl;
+      bl.append("1");
+      t->set(PREFIX_SUPER, "per_pool_omap", bl);
+    }
     ondisk_format = latest_ondisk_format;
     _prepare_ondisk_format_super(t);
     db->submit_transaction_sync(t);
@@ -9840,6 +9844,18 @@ int BlueStore::_open_super_meta()
     dout(10) << __func__ << " min_alloc_size 0x" << std::hex << min_alloc_size
             << std::dec << dendl;
   }
+
+  {
+    bufferlist bl;
+    db->get(PREFIX_SUPER, "per_pool_omap", &bl);
+    if (bl.length()) {
+      per_pool_omap = true;
+      dout(10) << __func__ << " per_pool_omap=1" << dendl;
+    } else {
+      dout(10) << __func__ << " per_pool_omap not present" << dendl;
+    }
+  }
+
   _open_statfs();
   _set_alloc_sizes();
   _set_throttle_params();
index d493fead0766379cca6475e47fb77c5d5782c804..395252252a1d399389cd19f2f7ae326cb9ef5936 100644 (file)
@@ -1846,6 +1846,8 @@ private:
                std::numeric_limits<decltype(min_alloc_size)>::digits,
                "not enough bits for min_alloc_size");
 
+  bool per_pool_omap = false;
+
   ///< maximum allocation unit (power of 2)
   std::atomic<uint64_t> max_alloc_size = {0};