]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Move reservation of bdev label to proper place. 59850/head
authorAdam Kupczyk <akupczyk@ibm.com>
Wed, 18 Sep 2024 07:32:09 +0000 (07:32 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Wed, 18 Sep 2024 07:38:25 +0000 (07:38 +0000)
Reservation (alloc->init_rm_free) was after reopening DB in r/w mode.
This was a problem - as soon as DB is in r/w it can flush sst or compact,
which will make allocations.

Fixes: https://tracker.ceph.com/issues/67911
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
src/os/bluestore/BlueStore.cc

index 236336386728f24302b1ce9b3a80eaf67c1696c5..4e0d9e099226ed5bc8635d8003c69b6f39970930 100644 (file)
@@ -7724,6 +7724,10 @@ int BlueStore::_open_db_and_around(bool read_only, bool to_repair)
   if (r < 0)
     goto out_fm;
 
+  if (bdev_label_multi) {
+    _main_bdev_label_try_reserve();
+  }
+
   // Re-open in the proper mode(s).
 
   // Can't simply bypass second open for read-only mode as we need to
@@ -7740,10 +7744,6 @@ int BlueStore::_open_db_and_around(bool read_only, bool to_repair)
     _post_init_alloc();
   }
 
-  if (bdev_label_multi) {
-    _main_bdev_label_try_reserve();
-  }
-
   // when function is called in repair mode (to_repair=true) we skip db->open()/create()
   // we can't change bluestore allocation so no need to invlidate allocation-file
   if (fm->is_null_manager() && !read_only && !to_repair) {