size_t block_size = 0;
size_t total_size = 0;
uint32_t blocks_per_segment = 1 << 18;
+ device_id_t device_id = 0;
seastore_meta_t meta;
};
using mkfs_ertr = crimson::errorator<
virtual size_t get_block_size() const = 0;
virtual uint64_t get_free_blocks() const = 0;
virtual uint32_t get_blocks_per_segment() const = 0;
+ virtual device_id_t get_device_id() const = 0;
virtual ~RandomBlockManager() {}
};
using RandomBlockManagerRef = std::unique_ptr<RandomBlockManager>;
super.crc = 0;
super.feature |= RBM_BITMAP_BLOCK_CRC;
super.blocks_per_segment = config.blocks_per_segment;
+ super.device_id = config.device_id;
logger().debug(" super {} ", super);
// write super block
p.first * super.block_size,
super.block_size,
super.blocks_per_segment,
- 0);
+ super.device_id);
size_t len = p.second * super.block_size;
alloc_info.alloc_blk_ranges.push_back(std::make_pair(paddr, len));
alloc_info.op = rbm_alloc_delta_t::op_types_t::SET;
alloc_extent.range_start() * super.block_size,
super.block_size,
super.blocks_per_segment,
- 0);
+ super.device_id);
return allocate_ret(
allocate_ertr::ready_future_marker{},
paddr);
from,
super.block_size,
super.blocks_per_segment,
- 0);
+ super.device_id);
rbm_alloc_delta_t alloc_info;
alloc_info.alloc_blk_ranges.push_back(std::make_pair(paddr, len));
alloc_info.op = rbm_alloc_delta_t::op_types_t::CLEAR;
uint64_t flag; // reserved
uint64_t feature;
uint32_t blocks_per_segment; // the number of blocks in segment
+ device_id_t device_id;
checksum_t crc;
DENC(rbm_metadata_header_t, v, p) {
denc(v.flag, p);
denc(v.feature, p);
denc(v.blocks_per_segment, p);
+ denc(v.device_id, p);
denc(v.crc, p);
DENC_FINISH(p);
uint32_t get_blocks_per_segment() const final {
return super.blocks_per_segment;
}
+ device_id_t get_device_id() const final {
+ return super.device_id;
+ }
private:
/*