constexpr segment_id_t BLOCK_REL_SEG_ID =
std::numeric_limits<segment_id_t>::max() - 3;
+// for tests which generate fake paddrs
+constexpr segment_id_t FAKE_SEG_ID =
+ std::numeric_limits<segment_id_t>::max() - 4;
+
std::ostream &segment_to_stream(std::ostream &, const segment_id_t &t);
// Offset within a segment on disk, see SegmentManager
constexpr paddr_t make_block_relative_paddr(segment_off_t off) {
return paddr_t{BLOCK_REL_SEG_ID, off};
}
+constexpr paddr_t make_fake_paddr(segment_off_t off) {
+ return paddr_t{FAKE_SEG_ID, off};
+}
struct paddr_le_t {
ceph_le32 segment = init_le32(NULL_SEG_ID);
);
}
+ segment_off_t next_off = 0;
+ paddr_t get_paddr() {
+ next_off += block_size;
+ return make_fake_paddr(next_off);
+ }
+
auto alloc_mapping(
test_transaction_t &t,
laddr_t hint,
{
run_async([this] {
laddr_t laddr = 0x12345678 * block_size;
- paddr_t paddr = { 1, static_cast<segment_off_t>(block_size * 10) };
{
// write initial mapping
auto t = create_transaction();
check_mappings(t); // check in progress transaction sees mapping
check_mappings(); // check concurrent does not
- auto ret = alloc_mapping(t, laddr, block_size, paddr);
+ auto ret = alloc_mapping(t, laddr, block_size, get_paddr());
submit_test_transaction(std::move(t));
}
check_mappings(); // check new transaction post commit sees it
auto t = create_transaction();
logger().debug("opened transaction");
for (unsigned j = 0; j < 5; ++j) {
- auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN);
+ auto ret = alloc_mapping(t, 0, block_size, get_paddr());
if ((i % 10 == 0) && (j == 3)) {
check_mappings(t);
check_mappings();
auto t = create_transaction();
logger().debug("opened transaction");
for (unsigned j = 0; j < 5; ++j) {
- auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN);
+ auto ret = alloc_mapping(t, 0, block_size, get_paddr());
// just to speed things up a bit
if ((i % 100 == 0) && (j == 3)) {
check_mappings(t);