).safe_then([this] {
return shard_devices.invoke_on_all([](auto &local_device) {
return local_device.shard_mkfs(
- // TODO: It would make more sense to pass the error further
- // to the caller but invoke_on_all expectes a seastar::future
).handle_error(
crimson::ct_error::assert_all{
"Invalid error in BlockSegmentManager::mkfs"
seastar::stat_data stat;
block_sm_superblock_t sb;
std::unique_ptr<SegmentStateTracker> tracker;
+
using crimson::common::get_conf;
if (get_conf<bool>("seastore_block_create")) {
auto size = get_conf<Option::size_t>("seastore_device_size");
std::ignore = device.close();
});
sb = make_superblock(get_device_id(), sm_config, stat);
- rewrite_gen_t hot_tier_generations = crimson::common::get_conf<uint64_t>(
- "seastore_hot_tier_generations");
- rewrite_gen_t cold_tier_generations = crimson::common::get_conf<uint64_t>(
- "seastore_cold_tier_generations");
- if (std::cmp_less(sb.shard_infos[0].segments,
- (hot_tier_generations + cold_tier_generations + 1))) {
- // TODO: cold device might not be used, for now assume it would be
- ERROR("Not enough available segments to open! "
- "Consider increasing the device size (needed {} got {})",
- (hot_tier_generations + cold_tier_generations + 1),
- sb.shard_infos[0].segments);
- co_await mkfs_ertr::future<>(crimson::ct_error::enoent::make());
- }
stats.metadata_write.increment(ceph::encoded_sizeof<block_sm_superblock_t>(sb));
co_await write_superblock(get_device_id(), device, sb);
INFO("{} complete", device_id_printer_t{get_device_id()});