From 9dd0b2369f9c07548074f778ad47614f9d7caa4e Mon Sep 17 00:00:00 2001 From: Adam Kupczyk Date: Wed, 18 Sep 2024 07:32:09 +0000 Subject: [PATCH] os/bluestore: Move reservation of bdev label to proper place. 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 --- src/os/bluestore/BlueStore.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 23633638672..4e0d9e09922 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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) { -- 2.39.5