From d77caf394766263a08fa0ee2cef73f129e23db4f Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Thu, 7 Aug 2025 13:20:53 +0000 Subject: [PATCH] crimson/os/seastore: prepare_meta() into coroutines Signed-off-by: Matan Breizman --- src/crimson/os/seastore/seastore.cc | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index e47df96327a..300ba7070b2 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -412,23 +412,20 @@ SeaStore::mkfs_ertr::future<> SeaStore::test_mkfs(uuid_d new_osd_fsid) seastar::future<> SeaStore::prepare_meta(uuid_d new_osd_fsid) { + LOG_PREFIX(SeaStore::prepare_meta); ceph_assert(seastar::this_shard_id() == primary_core); - return write_fsid(new_osd_fsid).then([this] { - return read_meta("type").then([this] (auto tuple) { - auto [ret, type] = tuple; - if (ret == 0 && type == "seastore") { - return seastar::now(); - } else if (ret == 0 && type != "seastore") { - LOG_PREFIX(SeaStore::prepare_meta); - ERROR("expected seastore, but type is {}", type); - throw std::runtime_error("store type error"); - } else { - return write_meta("type", "seastore"); - } - }); - }).then([this] { - return write_meta("mkfs_done", "yes"); - }); + co_await write_fsid(new_osd_fsid); + // todo: read_meta to return errorator + auto [ret, type] = co_await read_meta("type"); + if (ret == 0 && type == "seastore") { + co_return; + } else if (ret == 0 && type != "seastore") { + ERROR("expected seastore, but type is {}", type); + throw std::runtime_error("store type error"); + } else { + co_await write_meta("type", "seastore"); + } + co_await write_meta("mkfs_done", "yes"); } SeaStore::mkfs_ertr::future<> SeaStore::mkfs(uuid_d new_osd_fsid) -- 2.47.3