From a7e569c45e382b7d8432ea14201d3e8230d66e09 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Fri, 29 Jul 2022 14:24:03 +0800 Subject: [PATCH] crimson/os/seastore: misc fixes and log adjustments Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/async_cleaner.cc | 7 ++++--- src/crimson/os/seastore/cache.cc | 5 ++++- src/crimson/os/seastore/cached_extent.h | 2 +- .../os/seastore/journal/segment_allocator.cc | 15 ++++++--------- .../os/seastore/journal/segmented_journal.cc | 10 ++++++---- src/crimson/os/seastore/segment_manager_group.cc | 4 ++-- src/crimson/os/seastore/segment_seq_allocator.h | 4 ++-- 7 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/crimson/os/seastore/async_cleaner.cc b/src/crimson/os/seastore/async_cleaner.cc index 37f917c3f9c6e..153f6d101e4ae 100644 --- a/src/crimson/os/seastore/async_cleaner.cc +++ b/src/crimson/os/seastore/async_cleaner.cc @@ -1077,7 +1077,7 @@ AsyncCleaner::mount_ret AsyncCleaner::mount() return sm_group->read_segment_header( segment_id ).safe_then([segment_id, this, FNAME](auto header) { - INFO("segment_id={} -- {}", segment_id, header); + DEBUG("segment_id={} -- {}", segment_id, header); auto s_type = header.get_type(); if (s_type == segment_type_t::NULL_SEG) { ERROR("got null segment, segment_id={} -- {}", segment_id, header); @@ -1134,19 +1134,20 @@ AsyncCleaner::scan_extents_ret AsyncCleaner::scan_no_tail_segment( const segment_header_t &segment_header, segment_id_t segment_id) { + LOG_PREFIX(AsyncCleaner::scan_no_tail_segment); + INFO("scan {} {}", segment_id, segment_header); return seastar::do_with( scan_valid_records_cursor({ segments[segment_id].seq, paddr_t::make_seg_paddr(segment_id, 0) }), SegmentManagerGroup::found_record_handler_t( - [this, segment_id, segment_header]( + [this, segment_id, segment_header, FNAME]( record_locator_t locator, const record_group_header_t &record_group_header, const bufferlist& mdbuf ) mutable -> SegmentManagerGroup::scan_valid_records_ertr::future<> { - LOG_PREFIX(AsyncCleaner::scan_no_tail_segment); DEBUG("{} {}, decoding {} records", segment_id, segment_header.get_type(), record_group_header.records); diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 953429407476b..88e4a6b2e9a12 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -1579,7 +1579,10 @@ void Cache::init() root = nullptr; } root = new RootBlock(); - root->state = CachedExtent::extent_state_t::CLEAN; + root->init(CachedExtent::extent_state_t::CLEAN, + P_ADDR_NULL, + PLACEMENT_HINT_NULL, + NULL_GENERATION); INFO("init root -- {}", *root); extents.insert(*root); } diff --git a/src/crimson/os/seastore/cached_extent.h b/src/crimson/os/seastore/cached_extent.h index a4dfd68c24628..ff3f66d877bc5 100644 --- a/src/crimson/os/seastore/cached_extent.h +++ b/src/crimson/os/seastore/cached_extent.h @@ -212,7 +212,7 @@ public: << ", last_committed_crc=" << last_committed_crc << ", refcount=" << use_count() << ", user_hint=" << user_hint - << ", reclaim_gen=" << reclaim_generation; + << ", reclaim_gen=" << reclaim_gen_printer_t{reclaim_generation}; if (state != extent_state_t::INVALID && state != extent_state_t::CLEAN_PENDING) { print_detail(out); diff --git a/src/crimson/os/seastore/journal/segment_allocator.cc b/src/crimson/os/seastore/journal/segment_allocator.cc index b96032f9e8935..b8b193ae39e6d 100644 --- a/src/crimson/os/seastore/journal/segment_allocator.cc +++ b/src/crimson/os/seastore/journal/segment_allocator.cc @@ -86,8 +86,7 @@ SegmentAllocator::do_open(bool is_mkfs) type, category, gen}; - INFO("{} writing header to new segment ... -- {}", - print_name, header); + INFO("{} writing header {}", print_name, header); auto header_length = get_block_size(); bufferlist bl; @@ -141,7 +140,7 @@ SegmentAllocator::open(bool is_mkfs) oss << fmt::format("{}_G{}", category, gen); print_name = oss.str(); - INFO("{}", print_name); + DEBUG("{}", print_name); return do_open(is_mkfs); } @@ -199,7 +198,7 @@ SegmentAllocator::close() return [this] { LOG_PREFIX(SegmentAllocator::close); if (current_segment) { - INFO("{} close current segment", print_name); + DEBUG("{} close current segment", print_name); return close_segment(); } else { INFO("{} no current segment", print_name); @@ -233,12 +232,10 @@ SegmentAllocator::close_segment() close_seg_info.num_extents}; ceph::bufferlist bl; encode(tail, bl); - INFO("{} close segment id={}, seq={}, written_to={}, nonce={}", + INFO("{} close segment {}, written_to={}", print_name, - close_segment_id, - close_seg_info.seq, - written_to, - current_segment_nonce); + tail, + written_to); bufferptr bp(ceph::buffer::create_page_aligned(get_block_size())); bp.zero(); diff --git a/src/crimson/os/seastore/journal/segmented_journal.cc b/src/crimson/os/seastore/journal/segmented_journal.cc index 1465479d547f3..71579ed1a4b50 100644 --- a/src/crimson/os/seastore/journal/segmented_journal.cc +++ b/src/crimson/os/seastore/journal/segmented_journal.cc @@ -104,6 +104,9 @@ SegmentedJournal::prep_replay_segments( auto last_header = segments.rbegin()->second; return scan_last_segment(last_segment_id, last_header ).safe_then([this, FNAME, segments=std::move(segments)] { + INFO("dirty_tail={}, alloc_tail={}", + segment_provider.get_dirty_tail(), + segment_provider.get_alloc_tail()); auto journal_tail = segment_provider.get_journal_tail(); auto journal_tail_paddr = journal_tail.offset; ceph_assert(journal_tail != JOURNAL_SEQ_NULL); @@ -122,8 +125,7 @@ SegmentedJournal::prep_replay_segments( } auto num_segments = segments.end() - from; - INFO("{} segments to replay from {}", - num_segments, journal_tail); + INFO("{} segments to replay", num_segments); auto ret = replay_segments_t(num_segments); std::transform( from, segments.end(), ret.begin(), @@ -156,7 +158,7 @@ SegmentedJournal::scan_last_segment( segment_header.segment_seq, paddr_t::make_seg_paddr(segment_id, 0) }; - INFO("scanning {} for journal tail deltas", seq); + INFO("scanning journal tail deltas -- {}", segment_header); return seastar::do_with( scan_valid_records_cursor(seq), SegmentManagerGroup::found_record_handler_t( @@ -198,7 +200,7 @@ SegmentedJournal::scan_last_segment( journal_tail_delta_t tail_delta; decode(tail_delta, delta.bl); auto start_seq = locator.write_result.start_seq; - INFO("got {}, at seq {}", tail_delta, start_seq); + DEBUG("got {}, at {}", tail_delta, start_seq); ceph_assert(tail_delta.dirty_tail != JOURNAL_SEQ_NULL); ceph_assert(tail_delta.alloc_tail != JOURNAL_SEQ_NULL); segment_provider.update_journal_tails( diff --git a/src/crimson/os/seastore/segment_manager_group.cc b/src/crimson/os/seastore/segment_manager_group.cc index d27131d985cab..ff87fda71e7c3 100644 --- a/src/crimson/os/seastore/segment_manager_group.cc +++ b/src/crimson/os/seastore/segment_manager_group.cc @@ -338,8 +338,8 @@ SegmentManagerGroup::find_journal_segment_headers() LOG_PREFIX(SegmentManagerGroup::find_journal_segment_headers); auto device_id = sm->get_device_id(); auto num_segments = sm->get_num_segments(); - INFO("processing {} with {} segments", - device_id_printer_t{device_id}, num_segments); + DEBUG("processing {} with {} segments", + device_id_printer_t{device_id}, num_segments); return crimson::do_for_each( boost::counting_iterator(0), boost::counting_iterator(num_segments), diff --git a/src/crimson/os/seastore/segment_seq_allocator.h b/src/crimson/os/seastore/segment_seq_allocator.h index e4a864a7b3b66..c659a9f6e3dc1 100644 --- a/src/crimson/os/seastore/segment_seq_allocator.h +++ b/src/crimson/os/seastore/segment_seq_allocator.h @@ -26,9 +26,9 @@ public: private: void set_next_segment_seq(segment_seq_t seq) { LOG_PREFIX(SegmentSeqAllocator::set_next_segment_seq); - SUBINFO( + SUBDEBUG( seastore_journal, - "type {}, next_segment_seq={}, cur_segment_seq={}", + "{}, next={}, cur={}", type, segment_seq_printer_t{seq}, segment_seq_printer_t{next_segment_seq}); -- 2.39.5