Skip to content

Commit d77caf3

Browse files
committed
crimson/os/seastore: prepare_meta() into coroutines
Signed-off-by: Matan Breizman <[email protected]>
1 parent 7a50999 commit d77caf3

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

src/crimson/os/seastore/seastore.cc

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -412,23 +412,20 @@ SeaStore::mkfs_ertr::future<> SeaStore::test_mkfs(uuid_d new_osd_fsid)
412412

413413
seastar::future<> SeaStore::prepare_meta(uuid_d new_osd_fsid)
414414
{
415+
LOG_PREFIX(SeaStore::prepare_meta);
415416
ceph_assert(seastar::this_shard_id() == primary_core);
416-
return write_fsid(new_osd_fsid).then([this] {
417-
return read_meta("type").then([this] (auto tuple) {
418-
auto [ret, type] = tuple;
419-
if (ret == 0 && type == "seastore") {
420-
return seastar::now();
421-
} else if (ret == 0 && type != "seastore") {
422-
LOG_PREFIX(SeaStore::prepare_meta);
423-
ERROR("expected seastore, but type is {}", type);
424-
throw std::runtime_error("store type error");
425-
} else {
426-
return write_meta("type", "seastore");
427-
}
428-
});
429-
}).then([this] {
430-
return write_meta("mkfs_done", "yes");
431-
});
417+
co_await write_fsid(new_osd_fsid);
418+
// todo: read_meta to return errorator
419+
auto [ret, type] = co_await read_meta("type");
420+
if (ret == 0 && type == "seastore") {
421+
co_return;
422+
} else if (ret == 0 && type != "seastore") {
423+
ERROR("expected seastore, but type is {}", type);
424+
throw std::runtime_error("store type error");
425+
} else {
426+
co_await write_meta("type", "seastore");
427+
}
428+
co_await write_meta("mkfs_done", "yes");
432429
}
433430

434431
SeaStore::mkfs_ertr::future<> SeaStore::mkfs(uuid_d new_osd_fsid)

0 commit comments

Comments
 (0)