virtual device_type_t get_device_type() const = 0;
+ virtual backend_type_t get_backend_type() const = 0;
+
virtual const seastore_meta_t &get_meta() const = 0;
virtual seastore_off_t get_block_size() const = 0;
{
ceph_assert(primary_device == nullptr);
primary_device = device;
- if (device->get_device_type() == device_type_t::SSD) {
+ if (device->get_backend_type() == backend_type_t::SEGMENTED) {
prefer_ool = false;
ceph_assert(devices_by_id[device->get_device_id()] == device);
} else {
// RBM device is not in the cleaner.
- ceph_assert(device->get_device_type() == device_type_t::RANDOM_BLOCK_SSD);
+ ceph_assert(device->get_backend_type() == backend_type_t::RANDOM_BLOCK);
prefer_ool = true;
add_device(primary_device);
}
// Testing interfaces
void test_init_no_background(Device *test_device) {
- assert(test_device->get_device_type() == device_type_t::SSD);
+ assert(test_device->get_backend_type() == backend_type_t::SEGMENTED);
add_device(test_device);
set_primary_device(test_device);
}
return device_type_t::RANDOM_BLOCK_SSD;
}
+ backend_type_t get_backend_type() const final {
+ return backend_type_t::RANDOM_BLOCK;
+ }
+
const seastore_meta_t &get_meta() const final {
return meta;
}
return device_type_t::SSD;
}
+ backend_type_t get_backend_type() const final {
+ return backend_type_t::SEGMENTED;
+ }
+
using open_ertr = crimson::errorator<
crimson::ct_error::input_output_error,
crimson::ct_error::invarg,
auto sms = std::make_unique<SegmentManagerGroup>();
auto backref_manager = create_backref_manager(*cache);
- auto p_device_type = primary_device->get_device_type();
- ceph_assert(p_device_type == device_type_t::SSD ||
- p_device_type == device_type_t::RANDOM_BLOCK_SSD);
+ auto p_backend_type = primary_device->get_backend_type();
- if (p_device_type == device_type_t::SSD) {
+ if (p_backend_type == backend_type_t::SEGMENTED) {
sms->add_segment_manager(static_cast<SegmentManager*>(primary_device));
}
+
for (auto &p_dev : secondary_devices) {
- ceph_assert(p_dev->get_device_type() == device_type_t::SSD);
+ ceph_assert(p_dev->get_backend_type() == backend_type_t::SEGMENTED);
sms->add_segment_manager(static_cast<SegmentManager*>(p_dev));
}
- auto journal_type = (p_device_type == device_type_t::SSD ?
- journal_type_t::SEGMENTED : journal_type_t::RANDOM_BLOCK);
+ auto journal_type = p_backend_type;
seastore_off_t roll_size;
seastore_off_t roll_start;
if (journal_type == journal_type_t::SEGMENTED) {