return open(get_device_path(),
seastar::open_flags::rw | seastar::open_flags::dsync
).safe_then([this] {
- return read_rbm_superblock(RBM_START_ADDRESS
- ).safe_then([this](auto sb) {
- return read_ertr::make_ready_future<unsigned int>(sb.shard_num);
+ return stat_device(
+ ).handle_error(
+ mount_ertr::pass_further{},
+ crimson::ct_error::assert_all{
+ "Invalid error stat_device in RBMDevice::get_shard_nums"}
+ ).safe_then([this](auto st) {
+ assert(st.block_size > 0);
+ super.block_size = st.block_size;
+ return read_rbm_superblock(RBM_START_ADDRESS
+ ).safe_then([this](auto sb) {
+ return read_ertr::make_ready_future<unsigned int>(sb.shard_num);
+ });
});
}).handle_error(
crimson::ct_error::assert_all{