<< ", uuid=" << header.uuid
<< ", block_size=" << header.block_size
<< ", size=" << header.size
- << ", used_size=" << header.used_size
<< ", error=" << header.error
<< ", start_offset=" << header.start_offset
<< ", applied_to="<< header.applied_to
// | cbjournal |
// v v
// written_to <-> the end of journal
- set_used_size(get_used_size() + (header.end - get_written_to()));
set_written_to(get_start_addr());
}
if (encoded_size > get_available_size()) {
"append_record: commit target {} used_size {} written length {}",
target, get_used_size(), length);
- set_used_size(get_used_size() + length);
paddr_t paddr = convert_abs_addr_to_paddr(
target + r_size.get_mdlength(),
header.device_id);
cursor_addr += bl.length();
set_written_to(cursor_addr);
last_seq = r_header.committed_to.segment_seq;
- set_used_size(get_used_size() + bl.length());
return seastar::do_with(
std::move(*maybe_record_deltas_list),
[write_result,
uuid_d uuid;
uint64_t block_size = 0; // aligned with block_size
uint64_t size = 0; // max length of journal
- uint64_t used_size = 0; // current used_size of journal
uint32_t error = 0; // reserved
// start offset of CircularBoundedJournal in the device (start + header length)
*/
size_t get_used_size() const {
- return header.used_size;
- }
- void set_used_size(size_t size) {
- header.used_size = size;
+ return get_written_to() >= get_applied_to() ?
+ get_written_to() - get_applied_to() :
+ get_written_to() + get_total_size() - get_applied_to();
}
size_t get_total_size() const {
return header.size;
}
void update_applied_to(rbm_abs_addr addr, uint32_t len) {
- rbm_abs_addr new_applied_to = addr;
- set_used_size(
- get_written_to() >= new_applied_to ?
- get_written_to() - (new_applied_to + len) :
- get_written_to() + get_total_size() - (new_applied_to + len));
- set_applied_to(new_applied_to + len);
+ set_applied_to(addr + len);
}
write_ertr::future<> write_header();
void set_written_to(rbm_abs_addr addr) {
cbj->set_written_to(addr);
}
- void set_used_size(size_t size) {
- cbj->set_used_size(size);
- }
};
TEST_F(cbjournal_test_t, submit_one_record)
ASSERT_EQ(header.start, update_header.start);
ASSERT_EQ(header.end, update_header.end);
ASSERT_EQ(header.size, update_header.size);
- ASSERT_EQ(header.used_size, update_header.used_size);
ASSERT_EQ(header.written_to + record_total_size, update_header.written_to);
});
}
auto old_written_to = get_written_to();
auto old_used_size = get_used_size();
set_written_to(4096);
- set_used_size(0);
replay();
ASSERT_EQ(old_written_to, get_written_to());
ASSERT_EQ(old_used_size,