crimson::ct_error::invarg
>;
// TODO: will include trim if necessary
- virtual free_block_ertr::future<> free_extent(Transaction &t, blk_paddr_t from, blk_paddr_t to) = 0;
+ virtual free_block_ertr::future<> free_extent(Transaction &t, blk_paddr_t from, size_t len) = 0;
using abort_allocation_ertr = crimson::errorator<
crimson::ct_error::input_output_error,
}
NVMeManager::free_block_ertr::future<> NVMeManager::free_extent(
- Transaction &t, blk_paddr_t from, blk_paddr_t to)
+ Transaction &t, blk_paddr_t from, size_t len)
{
+ ceph_assert(!(len % super.block_size));
blk_id_t blk_id_start = from / super.block_size;
- blk_id_t blk_id_end = to / super.block_size;
interval_set<blk_id_t> free_extent;
- free_extent.insert(blk_id_start, blk_id_end - blk_id_start + 1);
+ free_extent.insert(blk_id_start, len / super.block_size);
rbm_alloc_delta_t alloc_info {
extent_types_t::RBM_ALLOC_INFO,
free_extent,
*/
// TODO: will include trim if necessary
free_block_ertr::future<> free_extent(
- Transaction &t, blk_paddr_t from, blk_paddr_t to) final;
+ Transaction &t, blk_paddr_t from, size_t len) final;
abort_allocation_ertr::future<> abort_allocation(Transaction &t) final;
write_ertr::future<> complete_allocation(Transaction &t) final;
auto free_extent(Transaction &t, interval_set<blk_id_t> range) {
for (auto r : range) {
- logger().debug("free_extent: start {} end {}", r.first * DEFAULT_BLOCK_SIZE,
- (r.first + r.second - 1) * DEFAULT_BLOCK_SIZE);
+ logger().debug("free_extent: start {} len {}", r.first * DEFAULT_BLOCK_SIZE,
+ r.second * DEFAULT_BLOCK_SIZE);
return rbm_manager->free_extent(t, r.first * DEFAULT_BLOCK_SIZE,
- (r.first + r.second - 1) * DEFAULT_BLOCK_SIZE).unsafe_get0();
+ r.second * DEFAULT_BLOCK_SIZE).unsafe_get0();
}
}