From 11f29ec9f682ad6ea98a498918a05dc6b9b1db7c Mon Sep 17 00:00:00 2001 From: Chunmei Liu Date: Wed, 1 Oct 2025 22:58:23 +0000 Subject: [PATCH] crimson/tools: fixing tools according to osd shards number change modification Signed-off-by: Chunmei Liu --- .../objectstore/crimson_objectstore_tool.cc | 5 +- .../tools/objectstore/objectstore_tool.cc | 64 +++++++++---------- src/crimson/tools/store_bench/store-bench.cc | 6 +- src/crimson/tools/store_nbd/fs_driver.cc | 4 +- src/crimson/tools/store_nbd/fs_driver.h | 2 +- src/crimson/tools/store_nbd/tm_driver.cc | 4 +- 6 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/crimson/tools/objectstore/crimson_objectstore_tool.cc b/src/crimson/tools/objectstore/crimson_objectstore_tool.cc index 1c6fe8995a1..39e14022005 100644 --- a/src/crimson/tools/objectstore/crimson_objectstore_tool.cc +++ b/src/crimson/tools/objectstore/crimson_objectstore_tool.cc @@ -291,7 +291,8 @@ static seastar::future action_on_all_objects( { auto pgs = co_await st.list_pgs(); - for (const auto& [coll, shard_id] : pgs) { + for (const auto& [coll, shard_info] : pgs) { + auto [shard_id, store_index] = shard_info; if (pgid_filter.has_value()) { spg_t cand_pgid; if (!coll.is_pg(&cand_pgid)) { @@ -327,7 +328,7 @@ static seastar::future find_shard_for_object( fmt::println(std::cerr, "PG '{}' not found for {} object", config.coll, object_type); co_return false; } - st.set_shard_id(it->second); + st.set_shard_id(it->second.first); co_return true; } diff --git a/src/crimson/tools/objectstore/objectstore_tool.cc b/src/crimson/tools/objectstore/objectstore_tool.cc index 6fd8d602748..c7960711622 100644 --- a/src/crimson/tools/objectstore/objectstore_tool.cc +++ b/src/crimson/tools/objectstore/objectstore_tool.cc @@ -38,7 +38,7 @@ StoreTool::list_objects(const coll_t& cid, ghobject_t next) shard_id, [this, cid, next]() -> seastar::future, ghobject_t>> { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -46,7 +46,7 @@ StoreTool::list_objects(const coll_t& cid, ghobject_t next) fmt::println(std::cerr, "Failed to open collection: collection does not exist"); co_return std::make_tuple(std::vector(), ghobject_t::get_max()); } - co_return co_await store->get_sharded_store().list_objects( + co_return co_await store->get_sharded_store()->list_objects( coll, next, ghobject_t::get_max(), 100); }); } @@ -62,7 +62,7 @@ StoreTool::omap_iterate( shard_id, [this, cid, oid, start, callback]() -> seastar::future<> { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -77,7 +77,7 @@ StoreTool::omap_iterate( start.value(), ObjectStore::omap_iter_seek_t::UPPER_BOUND}; } - co_await store->get_sharded_store().omap_iterate(coll, oid, start_from, callback + co_await store->get_sharded_store()->omap_iterate(coll, oid, start_from, callback ).safe_then([] (auto ret) { ceph_assert (ret == ObjectStore::omap_iter_ret_t::NEXT); }).handle_error( @@ -95,7 +95,7 @@ seastar::future StoreTool::get_omap( shard_id, [this, cid, oid, key]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -106,7 +106,7 @@ seastar::future StoreTool::get_omap( std::set to_get; to_get.insert(key); - auto&& vals = co_await store->get_sharded_store().omap_get_values( + auto&& vals = co_await store->get_sharded_store()->omap_get_values( coll, oid, to_get).handle_error( crimson::os::FuturizedStore::Shard::read_errorator::assert_all{} ); @@ -129,7 +129,7 @@ seastar::future StoreTool::set_omap( [this, cid, oid, key, value]() mutable -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -143,7 +143,7 @@ seastar::future StoreTool::set_omap( bl.append(value.c_str(), value.length()); omap_values[key] = std::move(bl); txn.omap_setkeys(cid, oid, omap_values); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -157,7 +157,7 @@ seastar::future StoreTool::remove_omap( shard_id, [this, cid, oid, key]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -167,7 +167,7 @@ seastar::future StoreTool::remove_omap( } ceph::os::Transaction txn; txn.omap_rmkey(cid, oid, key); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -181,7 +181,7 @@ seastar::future StoreTool::get_bytes( shard_id, [this, cid, oid]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -190,7 +190,7 @@ seastar::future StoreTool::get_bytes( co_return std::string(); } - auto stat_result = co_await store->get_sharded_store().stat(coll, oid); + auto stat_result = co_await store->get_sharded_store()->stat(coll, oid); uint64_t total_size = stat_result.st_size; if (total_size == 0) { @@ -206,7 +206,7 @@ seastar::future StoreTool::get_bytes( while (offset < total_size) { uint64_t len = std::min(max_read, total_size - offset); - auto read_result = co_await store->get_sharded_store().read(coll, oid, offset, len).safe_then( + auto read_result = co_await store->get_sharded_store()->read(coll, oid, offset, len).safe_then( [](auto&& bl) -> ceph::bufferlist { return std::move(bl); }, @@ -237,7 +237,7 @@ seastar::future StoreTool::set_bytes( shard_id, [this, cid, oid, data]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -253,7 +253,7 @@ seastar::future StoreTool::set_bytes( bl.append(data.c_str(), data.length()); txn.write(cid, oid, 0, data.length(), bl, 0); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -267,7 +267,7 @@ seastar::future> Store shard_id, [this, cid, oid]() -> seastar::future> { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -278,7 +278,7 @@ seastar::future> Store using ret_t = tl::expected; co_return co_await store->get_sharded_store() - .get_attrs(coll, oid) // ertr::future + ->get_attrs(coll, oid) // ertr::future .safe_then( [](attrs_t&& a) { return ret_t{tl::in_place, std::move(a)}; @@ -300,7 +300,7 @@ seastar::future> StoreTool::get_attr( shard_id, [this, cid, oid, key]() -> seastar::future> { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -308,7 +308,7 @@ seastar::future> StoreTool::get_attr( co_return tl::make_unexpected(std::string("Failed to open collection: collection does not exist")); } using return_type = tl::expected; - co_return co_await store->get_sharded_store().get_attr(coll, oid, key).safe_then( + co_return co_await store->get_sharded_store()->get_attr(coll, oid, key).safe_then( [](auto&& bl) { return return_type{tl::in_place, bl.to_str()}; }, @@ -331,7 +331,7 @@ seastar::future StoreTool::set_attr( shard_id, [this, cid, oid, key, value]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -345,7 +345,7 @@ seastar::future StoreTool::set_attr( bl.append(value.c_str(), value.length()); txn.setattr(cid, oid, key, bl); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -359,7 +359,7 @@ seastar::future StoreTool::remove_attr( shard_id, [this, cid, oid, key]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -371,7 +371,7 @@ seastar::future StoreTool::remove_attr( ceph::os::Transaction txn; txn.rmattr(cid, oid, key); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -387,7 +387,7 @@ seastar::future StoreTool::remove_object( shard_id, [this, cid, oid, all, force]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -398,7 +398,7 @@ seastar::future StoreTool::remove_object( // First check if the object exists try { - [[maybe_unused]] auto stat_result = co_await store->get_sharded_store().stat(coll, oid); + [[maybe_unused]] auto stat_result = co_await store->get_sharded_store()->stat(coll, oid); // Object exists, proceed with removal } catch (const std::exception& e) { fmt::println(std::cerr, "Object {} does not exist or stat failed: {}", oid, e.what()); @@ -421,7 +421,7 @@ seastar::future StoreTool::remove_object( txn.remove(cid, oid); } - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); fmt::println(std::cout, "Successfully removed object {}", oid); co_return true; }); @@ -436,7 +436,7 @@ seastar::future StoreTool::dump_object_info( shard_id, [this, cid, oid]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -464,7 +464,7 @@ seastar::future StoreTool::set_object_size( shard_id, [this, cid, oid, size]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -476,7 +476,7 @@ seastar::future StoreTool::set_object_size( ceph::os::Transaction txn; txn.truncate(cid, oid, size); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -489,7 +489,7 @@ seastar::future StoreTool::clear_data_digest( shard_id, [this, cid, oid]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); @@ -501,7 +501,7 @@ seastar::future StoreTool::clear_data_digest( ceph::os::Transaction txn; txn.rmattr(cid, oid, "data_digest"); - co_await store->get_sharded_store().do_transaction(coll, std::move(txn)); + co_await store->get_sharded_store()->do_transaction(coll, std::move(txn)); co_return true; }); } @@ -513,7 +513,7 @@ seastar::future StoreTool::get_pg_info(const coll_t& cid) shard_id, [this, cid]() -> seastar::future { - auto coll = co_await store->get_sharded_store().open_collection(cid + auto coll = co_await store->get_sharded_store()->open_collection(cid ).handle_exception([](std::exception_ptr) { return seastar::make_ready_future(nullptr); }); diff --git a/src/crimson/tools/store_bench/store-bench.cc b/src/crimson/tools/store_bench/store-bench.cc index 18fe9af9d5f..9ab21d84291 100644 --- a/src/crimson/tools/store_bench/store-bench.cc +++ b/src/crimson/tools/store_bench/store-bench.cc @@ -264,7 +264,7 @@ seastar::future PGLogWorkload::run( const common_options_t &common, crimson::os::FuturizedStore &global_store) { - auto &local_store = global_store.get_sharded_store(); + auto &local_store = *(global_store.get_sharded_store().get()); std::map collection_id; std::map coll_ref_map; @@ -460,7 +460,7 @@ seastar::future RGWIndexWorkload::run( const common_options_t &common, crimson::os::FuturizedStore &global_store) { - auto &local_store = global_store.get_sharded_store(); + auto &local_store = *(global_store.get_sharded_store().get()); std::map collection_id_for_rgw; std::map coll_ref_map_rgw; // map of bucket number and coll_ref @@ -634,7 +634,7 @@ seastar::future RandomWriteWorkload::run( crimson::os::FuturizedStore &global_store) { LOG_PREFIX(random_write); - auto &local_store = global_store.get_sharded_store(); + auto &local_store = *(global_store.get_sharded_store().get()); auto random_buffer = co_await generate_random_bp(16<<20); auto get_random_buffer = [&random_buffer](uint64_t size) { diff --git a/src/crimson/tools/store_nbd/fs_driver.cc b/src/crimson/tools/store_nbd/fs_driver.cc index 6b58909021b..4e44efe8133 100644 --- a/src/crimson/tools/store_nbd/fs_driver.cc +++ b/src/crimson/tools/store_nbd/fs_driver.cc @@ -289,7 +289,7 @@ seastar::future<> FSDriver::init() *config.path, crimson::common::local_conf().get_config_values() ); - return fs->start().then([this] { - sharded_fs = &(fs->get_sharded_store()); + return fs->start().then([this](unsigned int store_shard_nums) { + sharded_fs = fs->get_sharded_store(); }); } diff --git a/src/crimson/tools/store_nbd/fs_driver.h b/src/crimson/tools/store_nbd/fs_driver.h index bc2bfcf6e3e..0708e5bfd60 100644 --- a/src/crimson/tools/store_nbd/fs_driver.h +++ b/src/crimson/tools/store_nbd/fs_driver.h @@ -37,7 +37,7 @@ private: size_t size = 0; const config_t config; std::unique_ptr fs; - crimson::os::FuturizedStore::Shard* sharded_fs; + crimson::os::FuturizedStore::StoreShardRef sharded_fs; struct pg_analogue_t { crimson::os::CollectionRef collection; diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index d70edda030a..2e485425f97 100644 --- a/src/crimson/tools/store_nbd/tm_driver.cc +++ b/src/crimson/tools/store_nbd/tm_driver.cc @@ -148,9 +148,9 @@ void TMDriver::init() std::vector sec_devices; #ifndef NDEBUG - tm = make_transaction_manager(device.get(), sec_devices, shard_stats, true); + tm = make_transaction_manager(device.get(), sec_devices, shard_stats, 0, true); #else - tm = make_transaction_manager(device.get(), sec_devices, shard_stats, false); + tm = make_transaction_manager(device.get(), sec_devices, shard_stats, 0, false); #endif } -- 2.39.5