struct mkfs_config_t {
std::string path;
- blk_paddr_t start;
- blk_paddr_t end;
+ paddr_t start;
+ paddr_t end;
size_t block_size = 0;
size_t total_size = 0;
uint32_t blocks_per_segment = 1 << 18;
crimson::ct_error::input_output_error,
crimson::ct_error::invarg,
crimson::ct_error::enoent>;
- virtual open_ertr::future<> open(const std::string &path, blk_paddr_t start) = 0;
+ virtual open_ertr::future<> open(const std::string &path, paddr_t start) = 0;
using close_ertr = crimson::errorator<
crimson::ct_error::input_output_error,
{
logger().debug("path {}", path);
return _open_device(path).safe_then([this, &config]() {
- return read_rbm_header(config.start).safe_then([](auto super) {
+ blk_paddr_t addr = convert_paddr_to_blk_paddr(
+ config.start,
+ config.block_size,
+ config.blocks_per_segment);
+ return read_rbm_header(addr).safe_then([](auto super) {
logger().debug(" already exists ");
return mkfs_ertr::now();
}).handle_error(
crimson::ct_error::enoent::handle([this, &config] (auto) {
super.uuid = uuid_d(); // TODO
super.magic = 0xFF; // TODO
- super.start = config.start;
- super.end = config.end;
+ super.start = convert_paddr_to_blk_paddr(
+ config.start,
+ config.block_size,
+ config.blocks_per_segment);
+ super.end = convert_paddr_to_blk_paddr(
+ config.end,
+ config.block_size,
+ config.blocks_per_segment);
super.block_size = config.block_size;
super.size = config.total_size;
super.free_block_count = config.total_size/config.block_size - 2;
}
NVMeManager::open_ertr::future<> NVMeManager::open(
- const std::string &path, blk_paddr_t addr)
+ const std::string &path, paddr_t paddr)
{
logger().debug("open: path{}", path);
+
+ blk_paddr_t addr = convert_paddr_to_blk_paddr(
+ paddr,
+ super.block_size,
+ super.blocks_per_segment);
return _open_device(path
).safe_then([this, addr]() {
return read_rbm_header(addr).safe_then([&](auto s)
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;
- open_ertr::future<> open(const std::string &path, blk_paddr_t start) final;
+ open_ertr::future<> open(const std::string &path, paddr_t start) final;
close_ertr::future<> close() final;
/*
reader->add_segment_manager(segment_manager.get());
device = new nvme_device::TestMemory(DEFAULT_TEST_SIZE);
rbm_manager.reset(new NVMeManager(device, std::string()));
- config.start = 0;
- config.end = DEFAULT_TEST_SIZE;
+ config.start = paddr_t {0, 0, 0};
+ config.end = paddr_t {0, 0, DEFAULT_TEST_SIZE};
config.block_size = DEFAULT_BLOCK_SIZE;
config.total_size = DEFAULT_TEST_SIZE;
}
}
auto read_rbm_header() {
- return rbm_manager->read_rbm_header(config.start).unsafe_get0();
+ blk_paddr_t addr = convert_paddr_to_blk_paddr(
+ config.start,
+ config.block_size,
+ config.blocks_per_segment);
+ return rbm_manager->read_rbm_header(addr).unsafe_get0();
}
auto open() {
TEST_F(rbm_test_t, many_block_alloc)
{
run_async([this] {
- config.start = 0;
- config.end = DEFAULT_TEST_SIZE * 1024;
+ config.start = paddr_t {0, 0, 0};
+ config.end = paddr_t {0, 0, DEFAULT_TEST_SIZE * 1024};
config.block_size = DEFAULT_BLOCK_SIZE;
config.total_size = DEFAULT_TEST_SIZE * 1024;
mkfs();