]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: prepare_meta() into coroutines
authorMatan Breizman <mbreizma@redhat.com>
Thu, 7 Aug 2025 13:20:53 +0000 (13:20 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Mon, 15 Sep 2025 12:36:10 +0000 (12:36 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/os/seastore/seastore.cc

index e47df96327aaf189c2ac66389ec3916234a51f93..300ba7070b283e58c354404f559e0c1d5a4a4b02 100644 (file)
@@ -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)