}
SegmentAllocator::SegmentAllocator(
+ std::string name,
segment_type_t type,
SegmentProvider &sp,
SegmentManager &sm)
- : type{type},
+ : name{name},
+ type{type},
segment_provider{sp},
segment_manager{sm}
{
{
LOG_PREFIX(SegmentAllocator::set_next_segment_seq);
INFO("{} {} next_segment_seq={}",
- type, get_device_id(), segment_seq_printer_t{seq});
+ name, get_device_id(), segment_seq_printer_t{seq});
assert(type == segment_seq_to_type(seq));
next_segment_seq = seq;
}
new_journal_tail,
current_segment_nonce};
INFO("{} {} writing header to new segment ... -- {}",
- type, get_device_id(), header);
+ name, get_device_id(), header);
auto header_length = segment_manager.get_block_size();
bufferlist bl;
segment_provider.update_journal_tail_committed(new_journal_tail);
}
DEBUG("{} {} rolled new segment id={}",
- type, get_device_id(), current_segment->get_segment_id());
+ name, get_device_id(), current_segment->get_segment_id());
ceph_assert(new_journal_seq.segment_seq == get_current_segment_seq());
return new_journal_seq;
});
paddr_t::make_seg_paddr(
current_segment->get_segment_id(), write_start_offset)
};
- TRACE("{} {} {}~{}", type, get_device_id(), write_start_seq, write_length);
+ TRACE("{} {} {}~{}", name, get_device_id(), write_start_seq, write_length);
assert(write_length > 0);
assert((write_length % segment_manager.get_block_size()) == 0);
assert(!needs_roll(write_length));
if (current_segment) {
return close_segment(false);
} else {
- INFO("{} {} no current segment", type, get_device_id());
+ INFO("{} {} no current segment", name, get_device_id());
return close_segment_ertr::now();
}
}().finally([this] {
assert(can_write());
auto close_segment_id = current_segment->get_segment_id();
INFO("{} {} close segment id={}, seq={}, written_to={}, nonce={}",
- type, get_device_id(),
+ name, get_device_id(),
close_segment_id,
segment_seq_printer_t{get_current_segment_seq()},
written_to,
crimson::ct_error::input_output_error>;
public:
- SegmentAllocator(segment_type_t type,
+ SegmentAllocator(std::string name,
+ segment_type_t type,
SegmentProvider &sp,
SegmentManager &sm);
+ const std::string& get_name() const {
+ return name;
+ }
+
device_id_t get_device_id() const {
return segment_manager.get_device_id();
}
return ret;
}
+ const std::string name;
const segment_type_t type; // JOURNAL or OOL
SegmentProvider &segment_provider;
SegmentManager &segment_manager;