From: myoungwon oh Date: Fri, 24 Feb 2023 12:18:38 +0000 (+0900) Subject: crimson/os/seastore/rbm: add do_mount() and use it in derived classes X-Git-Tag: v18.1.0~271^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9a84b36181148981abe23334d73b60011987f405;p=ceph.git crimson/os/seastore/rbm: add do_mount() and use it in derived classes Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc b/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc index 754377ba47e7..44a8c1041697 100644 --- a/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc +++ b/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc @@ -82,25 +82,7 @@ open_ertr::future<> NVMeBlockDevice::open_for_io( NVMeBlockDevice::mount_ret NVMeBlockDevice::mount() { logger().debug(" mount "); - return open(device_path, seastar::open_flags::rw | seastar::open_flags::dsync - ).safe_then([this] { - return stat_device( - ).handle_error( - mount_ertr::pass_further{}, - crimson::ct_error::assert_all{ - "Invalid error stat_device in RBMDevice::mount"} - ).safe_then([this](auto st) { - super.block_size = st.block_size; - return read_rbm_header(RBM_START_ADDRESS - ).safe_then([](auto s) { - return seastar::now(); - }); - }); - }).handle_error( - mount_ertr::pass_further{}, - crimson::ct_error::assert_all{ - "Invalid error mount in NVMeBlockDevice::mount"} - ); + return do_mount(); } write_ertr::future<> NVMeBlockDevice::write( diff --git a/src/crimson/os/seastore/random_block_manager/rbm_device.cc b/src/crimson/os/seastore/random_block_manager/rbm_device.cc index d5e8827f1122..13861143898b 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.cc +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.cc @@ -129,6 +129,30 @@ read_ertr::future RBMDevice::read_rbm_header( }); } +RBMDevice::mount_ret RBMDevice::do_mount() +{ + return open(get_device_path(), + seastar::open_flags::rw | seastar::open_flags::dsync + ).safe_then([this] { + return stat_device( + ).handle_error( + mount_ertr::pass_further{}, + crimson::ct_error::assert_all{ + "Invalid error stat_device in RBMDevice::mount"} + ).safe_then([this](auto st) { + super.block_size = st.block_size; + return read_rbm_header(RBM_START_ADDRESS + ).safe_then([](auto s) { + return seastar::now(); + }); + }); + }).handle_error( + mount_ertr::pass_further{}, + crimson::ct_error::assert_all{ + "Invalid error mount in NVMeBlockDevice::mount"} + ); +} + EphemeralRBMDeviceRef create_test_ephemeral(uint64_t journal_size, uint64_t data_size) { return EphemeralRBMDeviceRef( new EphemeralRBMDevice(journal_size + data_size + diff --git a/src/crimson/os/seastore/random_block_manager/rbm_device.h b/src/crimson/os/seastore/random_block_manager/rbm_device.h index 1076afe75ced..0122b2773bec 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.h +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.h @@ -152,6 +152,8 @@ public: mkfs_ret do_mkfs(device_config_t); + mount_ret do_mount(); + write_ertr::future<> write_rbm_header(); read_ertr::future read_rbm_header(rbm_abs_addr addr); @@ -199,19 +201,7 @@ public: extent_len_t get_block_size() const final { return block_size; } mount_ret mount() final { - return open("", seastar::open_flags::rw - ).safe_then([this]() { - super.block_size = TEST_BLOCK_SIZE; - return read_rbm_header(RBM_START_ADDRESS - ).safe_then([](auto s) { - return seastar::now(); - }); - }).handle_error( - mount_ertr::pass_further{}, - crimson::ct_error::assert_all{ - "Invalid error mount" - } - ); + return do_mount(); } mkfs_ret mkfs(device_config_t config) final {