return segment_managers[0]->get_block_size();
}
+ std::vector<SegmentManager*>& get_segment_managers() {
+ return segment_managers;
+ }
+
using read_ertr = SegmentManager::read_ertr;
ExtentReader() {
segment_managers.resize(DEVICE_ID_MAX, nullptr);
private:
std::vector<SegmentManager*> segment_managers;
-
- std::vector<SegmentManager*>& get_segment_managers() {
- return segment_managers;
- }
/// read record metadata for record starting at start
using read_validate_record_metadata_ertr = read_ertr;
using read_validate_record_metadata_ret =
scan_valid_records_cursor& cursor,
found_record_handler_t& handler,
std::size_t& budget_used);
-
- friend class TransactionManager;
};
using ExtentReaderRef = std::unique_ptr<ExtentReader>;
}
SegmentCleaner::mount_ret SegmentCleaner::mount(
- device_id_t pdevice_id,
- std::vector<SegmentManager*>& sms)
+ device_id_t pdevice_id)
{
+ auto& sms = scanner->get_segment_managers();
logger().debug(
"SegmentCleaner::mount: {} segment managers", sms.size());
init_complete = false;
using mount_ertr = crimson::errorator<
crimson::ct_error::input_output_error>;
using mount_ret = mount_ertr::future<>;
- mount_ret mount(device_id_t pdevice_id, std::vector<SegmentManager*>& sms);
+ mount_ret mount(device_id_t pdevice_id);
segment_id_t get_segment(
device_id_t id, segment_seq_t seq, segment_type_t type) final;
LOG_PREFIX(TransactionManager::mkfs);
INFO("enter");
return segment_cleaner->mount(
- segment_manager.get_device_id(),
- scanner.get_segment_managers()
+ segment_manager.get_device_id()
).safe_then([this] {
return journal->open_for_write();
}).safe_then([this](auto addr) {
INFO("enter");
cache->init();
return segment_cleaner->mount(
- segment_manager.get_device_id(),
- scanner.get_segment_managers()
+ segment_manager.get_device_id()
).safe_then([this] {
return journal->replay(
[this](const auto &offsets, const auto &e, auto last_modified) {