crimson::ct_error::invarg,
crimson::ct_error::enoent,
crimson::ct_error::erange>;
- virtual read_ertr::future<> read(uint64_t addr, bufferptr &buffer) = 0;
+ virtual read_ertr::future<> read(paddr_t addr, bufferptr &buffer) = 0;
using write_ertr = crimson::errorator<
crimson::ct_error::input_output_error,
crimson::ct_error::enospc,
crimson::ct_error::erange
>;
- virtual write_ertr::future<> write(uint64_t addr, bufferptr &buf) = 0;
+ virtual write_ertr::future<> write(paddr_t addr, bufferptr &buf) = 0;
using open_ertr = crimson::errorator<
crimson::ct_error::input_output_error,
}
NVMeManager::write_ertr::future<> NVMeManager::write(
- rbm_abs_addr addr,
+ paddr_t paddr,
bufferptr &bptr)
{
ceph_assert(device);
+ rbm_abs_addr addr = convert_paddr_to_abs_addr(paddr);
if (addr > super.end || addr < super.start ||
bptr.length() > super.end - super.start) {
return crimson::ct_error::erange::make();
}
NVMeManager::read_ertr::future<> NVMeManager::read(
- rbm_abs_addr addr,
+ paddr_t paddr,
bufferptr &bptr)
{
ceph_assert(device);
+ rbm_abs_addr addr = convert_paddr_to_abs_addr(paddr);
if (addr > super.end || addr < super.start ||
bptr.length() > super.end - super.start) {
return crimson::ct_error::erange::make();
*/
mkfs_ertr::future<> mkfs(mkfs_config_t) final;
- read_ertr::future<> read(uint64_t addr, bufferptr &buffer) final;
- write_ertr::future<> write(uint64_t addr, bufferptr &buf) final;
+ read_ertr::future<> read(paddr_t addr, bufferptr &buffer) final;
+ write_ertr::future<> write(paddr_t addr, bufferptr &buf) final;
open_ertr::future<> open(const std::string &path, paddr_t start) final;
close_ertr::future<> close() final;
}
auto read_rbm_header() {
- rbm_abs_addr addr = convert_paddr_to_abs_addr(
- config.start,
- config.block_size);
+ rbm_abs_addr addr = convert_paddr_to_abs_addr(config.start);
return rbm_manager->read_rbm_header(addr).unsafe_get0();
}
}
auto write(uint64_t addr, bufferptr &ptr) {
- return rbm_manager->write(addr, ptr).unsafe_get0();
+ paddr_t paddr = convert_abs_addr_to_paddr(
+ addr,
+ rbm_manager->get_device_id());
+ return rbm_manager->write(paddr, ptr).unsafe_get0();
}
auto read(uint64_t addr, bufferptr &ptr) {
- return rbm_manager->read(addr, ptr).unsafe_get0();
+ paddr_t paddr = convert_abs_addr_to_paddr(
+ addr,
+ rbm_manager->get_device_id());
+ return rbm_manager->read(paddr, ptr).unsafe_get0();
}
auto create_rbm_transaction() {
for (auto p : extent) {
paddr_t paddr = convert_abs_addr_to_paddr(
p.first * block_size,
- block_size,
- 0);
+ rbm_manager->get_device_id());
size_t len = p.second * 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;
for (auto p : allocated_blocks) {
for (auto b : p.alloc_blk_ranges) {
rbm_abs_addr addr =
- convert_paddr_to_abs_addr(
- b.first,
- block_size);
+ convert_paddr_to_abs_addr(b.first);
alloc_ids.insert(addr / block_size, b.second / block_size);
}
}
* DEFAULT_BLOCK_SIZE;
logger().debug(" addr {} id {} ", addr, id);
auto bp = bufferptr(ceph::buffer::create_page_aligned(DEFAULT_BLOCK_SIZE));
- rbm_manager->read(addr, bp).unsafe_get0();
+ paddr_t paddr = convert_abs_addr_to_paddr(
+ addr,
+ rbm_manager->get_device_id());
+ rbm_manager->read(paddr, bp).unsafe_get0();
rbm_bitmap_block_t b_block(DEFAULT_BLOCK_SIZE);
bufferlist bl;
bl.append(bp);