});
}
-seastar::future<>
+TransactionManager::alloc_extent_ertr::future<>
SeaStore::Shard::mkfs_managers()
{
+ LOG_PREFIX(SeaStoreS::mkfs_managers);
+ INFO("...");
init_managers();
- return transaction_manager->mkfs(
- ).safe_then([this] {
- init_managers();
- return transaction_manager->mount();
- }).safe_then([this] {
-
- ++(shard_stats.io_num);
- ++(shard_stats.pending_io_num);
- // For TM::submit_transaction()
- ++(shard_stats.processing_inlock_io_num);
-
- return repeat_eagain([this] {
- ++(shard_stats.repeat_io_num);
-
- return transaction_manager->with_transaction_intr(
- Transaction::src_t::MUTATE,
- "mkfs_seastore",
- CACHE_HINT_TOUCH,
- [this](auto& t)
- {
- LOG_PREFIX(SeaStoreS::mkfs_managers);
- DEBUGT("...", t);
- return onode_manager->mkfs(t
- ).si_then([this, &t] {
- return collection_manager->mkfs(t);
- }).si_then([this, &t](auto coll_root) {
- transaction_manager->write_collection_root(
- t, coll_root);
- return transaction_manager->submit_transaction(t);
- });
- });
- });
- }).handle_error(
- crimson::ct_error::assert_all{
- "Invalid error in Shard::mkfs_managers"
- }
- ).finally([this] {
- assert(shard_stats.pending_io_num);
- --(shard_stats.pending_io_num);
- // XXX: it's wrong to assume no failure
- --(shard_stats.processing_postlock_io_num);
- });
+ co_await transaction_manager->mkfs();
+ init_managers();
+ co_await transaction_manager->mount();
+ ++(shard_stats.io_num);
+ ++(shard_stats.pending_io_num);
+ // For TM::submit_transaction()
+ ++(shard_stats.processing_inlock_io_num);
+ TransactionRef t = transaction_manager->create_transaction(
+ Transaction::src_t::MUTATE, "mkfs_seastore", CACHE_HINT_TOUCH);
+ co_await with_repeat_trans_intr(*t,
+ seastar::coroutine::lambda([&](auto &tr) -> TransactionManager::alloc_extent_iertr::future<> {
+ ++(shard_stats.repeat_io_num);
+ DEBUGT("...", tr);
+ co_await onode_manager->mkfs(tr);
+ auto coll_root = co_await collection_manager->mkfs(tr);
+ transaction_manager->write_collection_root(tr, coll_root);
+ co_await transaction_manager->submit_transaction(tr);
+ }));
+ assert(shard_stats.pending_io_num);
+ --(shard_stats.pending_io_num);
+ // XXX: it's wrong to assume no failure
+ --(shard_stats.processing_postlock_io_num);
}
seastar::future<> SeaStore::set_secondaries()
return seastar::now();
}
return shard_stores.local().mkfs_managers(
- ).then([this, new_osd_fsid] {
+ ).safe_then([this, new_osd_fsid] {
return prepare_meta(new_osd_fsid);
- }).then([FNAME] {
+ }).safe_then([FNAME] {
INFO("done");
- });
+ }).handle_error(
+ crimson::ct_error::assert_all{
+ "Invalid error in SeaStore::mkfs"
+ }
+ );
});
}
return device->mount();
}).safe_then([this] {
return shard_stores.invoke_on_all([] (auto &local_store) {
- return local_store.mkfs_managers();
+ return local_store.mkfs_managers().handle_error(
+ crimson::ct_error::assert_all{"Invalid error in SeaStoreS::mkfs_managers"});
});
}).safe_then([this, new_osd_fsid] {
return prepare_meta(new_osd_fsid);