From 8835d07c235e141f26fead706dfb13a8f4d15f47 Mon Sep 17 00:00:00 2001 From: Adam Kupczyk Date: Fri, 13 Sep 2024 16:39:51 +0000 Subject: [PATCH] os/bluestore: Fix ceph-bluestore-tool allocmap command BlueStore::read_allocation_from_drive_for_bluestore_tool was not informed that multiple bdev labels can exist and reserve space. Comparison of real alloc vs recovered alloc was failing. Fixes: https://tracker.ceph.com/issues/68560 Signed-off-by: Adam Kupczyk (cherry picked from commit 358f33a148c9a65478e33648f16e8c8af73c98f2) --- src/os/bluestore/BlueStore.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index c883f6fb7dba8..25ec963cde179 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -20190,6 +20190,14 @@ int BlueStore::read_allocation_from_drive_for_bluestore_tool() if (ret < 0) { return ret; } + if (bdev_label_multi) { + uint64_t lsize = std::max(BDEV_LABEL_BLOCK_SIZE, min_alloc_size); + for (uint64_t p : bdev_label_valid_locations) { + if (p != BDEV_FIRST_LABEL_POSITION) { + allocator->init_rm_free(p, lsize); + } + } + } duration = ceph_clock_now() - start; stats.insert_count = 0; -- 2.39.5