Skip to content

Commit ce35632

Browse files
authored
Merge pull request ceph#64771 from Matan-B/wip-matanb-crimson-seastore-coro
crimson/os/seastore/segment_manager: Check segments prior to mkfs Reviewed-by: Samuel Just <[email protected]>
2 parents 6920277 + 3b96326 commit ce35632

File tree

7 files changed

+234
-281
lines changed

7 files changed

+234
-281
lines changed

src/common/options/crimson.yaml.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ options:
231231
level: advanced
232232
desc: The number of generations in the hot tier or the whole SeaStore instance if there's only one tier.
233233
default: 5
234+
min: 5
234235
- name: seastore_cold_tier_generations
235236
type: uint
236237
level: advanced

src/crimson/os/seastore/device.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ check_create_device_ret check_create_device(
8383
return seastar::now();
8484
} catch (const std::system_error &e) {
8585
if (e.code().value() == EEXIST) {
86-
ERROR("path={} exists", path);
86+
DEBUG("path={} exists", path);
8787
return seastar::now();
8888
} else {
8989
ERROR("path={} creation error -- {}", path, e);

src/crimson/os/seastore/extent_placement_manager.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,19 +192,27 @@ void ExtentPlacementManager::init(
192192
AsyncCleanerRef &&cleaner,
193193
AsyncCleanerRef &&cold_cleaner)
194194
{
195+
LOG_PREFIX(ExtentPlacementManager::init);
195196
writer_refs.clear();
196197
auto cold_segment_cleaner = dynamic_cast<SegmentCleaner*>(cold_cleaner.get());
197198
dynamic_max_rewrite_generation = hot_tier_generations - 1;
198199
if (cold_segment_cleaner) {
199200
dynamic_max_rewrite_generation = hot_tier_generations + cold_tier_generations - 1;
200201
}
202+
DEBUG("dynamic_max_rewrite_generation: {}, "
203+
"hot_tier_generations{} , cold_tier_generations {}",
204+
dynamic_max_rewrite_generation, hot_tier_generations,
205+
cold_tier_generations);
201206
ceph_assert(dynamic_max_rewrite_generation > MIN_REWRITE_GENERATION);
202207

203208
if (trimmer->get_backend_type() == backend_type_t::SEGMENTED) {
209+
DEBUG("initiating SegmentCleaner");
204210
auto segment_cleaner = dynamic_cast<SegmentCleaner*>(cleaner.get());
205211
ceph_assert(segment_cleaner != nullptr);
206212
auto num_writers = generation_to_writer(dynamic_max_rewrite_generation + 1);
213+
DEBUG("num_writers {}", num_writers);
207214

215+
// DATA
208216
data_writers_by_gen.resize(num_writers, nullptr);
209217
for (rewrite_gen_t gen = OOL_GENERATION; gen < hot_tier_generations; ++gen) {
210218
writer_refs.emplace_back(std::make_unique<SegmentedOolWriter>(
@@ -213,6 +221,7 @@ void ExtentPlacementManager::init(
213221
data_writers_by_gen[generation_to_writer(gen)] = writer_refs.back().get();
214222
}
215223

224+
// METADATA
216225
md_writers_by_gen.resize(num_writers, {});
217226
for (rewrite_gen_t gen = OOL_GENERATION; gen < hot_tier_generations; ++gen) {
218227
writer_refs.emplace_back(std::make_unique<SegmentedOolWriter>(
@@ -226,10 +235,12 @@ void ExtentPlacementManager::init(
226235
add_device(device);
227236
}
228237
} else {
238+
DEBUG("initiating RBMCleaner cleaner");
229239
assert(trimmer->get_backend_type() == backend_type_t::RANDOM_BLOCK);
230240
auto rb_cleaner = dynamic_cast<RBMCleaner*>(cleaner.get());
231241
ceph_assert(rb_cleaner != nullptr);
232242
auto num_writers = generation_to_writer(dynamic_max_rewrite_generation + 1);
243+
DEBUG("num_writers {}", num_writers);
233244
data_writers_by_gen.resize(num_writers, nullptr);
234245
md_writers_by_gen.resize(num_writers, {});
235246
writer_refs.emplace_back(std::make_unique<RandomBlockOolWriter>(
@@ -243,13 +254,15 @@ void ExtentPlacementManager::init(
243254
}
244255

245256
if (cold_segment_cleaner) {
257+
// Cold DATA Segments
246258
for (rewrite_gen_t gen = hot_tier_generations; gen <= dynamic_max_rewrite_generation; ++gen) {
247259
writer_refs.emplace_back(std::make_unique<SegmentedOolWriter>(
248260
data_category_t::DATA, gen, *cold_segment_cleaner,
249261
*ool_segment_seq_allocator));
250262
data_writers_by_gen[generation_to_writer(gen)] = writer_refs.back().get();
251263
}
252264
for (rewrite_gen_t gen = hot_tier_generations; gen <= dynamic_max_rewrite_generation; ++gen) {
265+
// Cold METADATA Segments
253266
writer_refs.emplace_back(std::make_unique<SegmentedOolWriter>(
254267
data_category_t::METADATA, gen, *cold_segment_cleaner,
255268
*ool_segment_seq_allocator));

0 commit comments

Comments
 (0)