struct rbm_metadata_header_t {
size_t size = 0;
size_t block_size = 0;
- uint64_t start = 0; // start location of the device
uint64_t feature = 0;
- uint32_t start_data_area = 0;
+ uint64_t journal_size = 0;
checksum_t crc = 0;
device_config_t config;
DENC_START(1, 1, p);
denc(v.size, p);
denc(v.block_size, p);
- denc(v.start, p);
denc(v.feature, p);
- denc(v.start_data_area, p);
+ denc(v.journal_size, p);
denc(v.crc, p);
denc(v.config, p);
DENC_FINISH(p);
};
class Device;
+using rbm_abs_addr = uint64_t;
+constexpr rbm_abs_addr RBM_START_ADDRESS = 0;
class RandomBlockManager {
public:
virtual ~RandomBlockManager() {}
};
using RandomBlockManagerRef = std::unique_ptr<RandomBlockManager>;
-using blk_no_t = uint64_t;
-using rbm_abs_addr = uint64_t;
inline rbm_abs_addr convert_paddr_to_abs_addr(const paddr_t& paddr) {
const blk_paddr_t& blk_addr = paddr.as_blk_paddr();
BlockRBManager::open_ertr::future<> BlockRBManager::open()
{
return device->read_rbm_header(RBM_START_ADDRESS
- ).safe_then([&](auto s)
+ ).safe_then([](auto s)
-> open_ertr::future<> {
return open_ertr::now();
}).handle_error(
{
out << " rbm_metadata_header_t(size=" << header.size
<< ", block_size=" << header.block_size
- << ", start=" << header.start
- << ", start_data_area=" << header.start_data_area
<< ", feature=" << header.feature
+ << ", journal_size=" << header.journal_size
<< ", crc=" << header.crc
<< ", config=" << header.config;
return out << ")";
namespace crimson::os::seastore {
-constexpr rbm_abs_addr RBM_START_ADDRESS = 0;
-
using RBMDevice = random_block_device::RBMDevice;
using RBMDeviceRef = std::unique_ptr<RBMDevice>;
super.block_size = get_block_size();
super.size = get_available_size();
- super.start_data_area = 0;
super.feature |= RBM_BITMAP_BLOCK_CRC;
super.config = std::move(config);
DEBUG("super {} ", super);
assert(bl.length() < super.block_size);
iter.copy(bl.length(), bp.c_str());
- return write(super.start, bp);
+ return write(RBM_START_ADDRESS, bp);
}
read_ertr::future<rbm_metadata_header_t> RBMDevice::read_rbm_header(