bool gap = false;
uint64_t gap_start = -1;
for (uint64_t obj_offset = (read_offset / object_size); ; obj_offset++) {
+ uint64_t offset_in_obj = 0;
+ if (obj_offset * object_size < header->expire_pos) {
+ // Skip up to expire_pos from start of the object
+ // (happens for the first object we read)
+ offset_in_obj = header->expire_pos - obj_offset * object_size;
+ }
+
// Read this journal segment
bufferlist this_object;
std::string const oid = obj_name(obj_offset);
- r = io.read(oid, this_object, INT_MAX, 0);
+ r = io.read(oid, this_object, INT_MAX, offset_in_obj);
// Handle absent journal segments
if (r < 0) {