From 63364c7252a6243ce04ed6f6ccdc99a3aefae823 Mon Sep 17 00:00:00 2001 From: Chunmei Liu Date: Tue, 30 Sep 2025 17:14:49 +0000 Subject: [PATCH] crimson/os/seastore/rbm: fix rbm get_shard_nums Signed-off-by: Chunmei Liu --- .../seastore/random_block_manager/rbm_device.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/crimson/os/seastore/random_block_manager/rbm_device.cc b/src/crimson/os/seastore/random_block_manager/rbm_device.cc index 330ba18a253..4d18ae9f7aa 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.cc +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.cc @@ -200,9 +200,18 @@ read_ertr::future RBMDevice::get_shard_nums() return open(get_device_path(), seastar::open_flags::rw | seastar::open_flags::dsync ).safe_then([this] { - return read_rbm_superblock(RBM_START_ADDRESS - ).safe_then([this](auto sb) { - return read_ertr::make_ready_future(sb.shard_num); + return stat_device( + ).handle_error( + mount_ertr::pass_further{}, + crimson::ct_error::assert_all{ + "Invalid error stat_device in RBMDevice::get_shard_nums"} + ).safe_then([this](auto st) { + assert(st.block_size > 0); + super.block_size = st.block_size; + return read_rbm_superblock(RBM_START_ADDRESS + ).safe_then([this](auto sb) { + return read_ertr::make_ready_future(sb.shard_num); + }); }); }).handle_error( crimson::ct_error::assert_all{ -- 2.39.5