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/68222
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
(cherry picked from commit
9dd0b2369f9c07548074f778ad47614f9d7caa4e)
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
_post_init_alloc(zone_adjustments);
}
- 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) {