Bug #63654
closed[diff-iterate] ObjectListSnapsRequest's LIST_SNAPS_FLAG_WHOLE_OBJECT behavior is broken
0%
Description
Since pacific, LIST_SNAPS_FLAG_WHOLE_OBJECT flag is treated the same as read_whole_object case. This causes bogus holes to be reported when the object is smaller than max object size, plus a few semantic inconsistencies in other places.
On an image without fast-diff feature:
$ rbd create -s 1G --image-shared foo $ sudo rbd device map foo /dev/rbd0 $ sudo xfs_io -d -c 'pwrite -b 16k 0 16k' /dev/rbd0 $ sudo rbd device unmap /dev/rbd0 $ rbd snap create foo@snap1 Creating snap: 100% complete...done. $ rbd snap create foo@snap2 Creating snap: 100% complete...done.Running a diff from snap1 to HEAD -- no diff is expected, but --whole-object deviates:
$ rbd diff --from-snap snap1 foo $ rbd diff --from-snap snap1 --whole-object foo Offset Length Type 16384 4177920 zero
Updated by Ilya Dryomov 6 months ago
- Blocks Bug #53897: diff-iterate can report holes when diffing against the beginning of time (fromsnapname == NULL) added
Updated by Ilya Dryomov 6 months ago
And there is an additional regression, also introduced in pacific, in the same if statement! In read_whole_object case, exists is no longer set to true, so the whole thing doesn't work at all. Fortunately, an empty snapset which triggers this "force a read at max object size" code path is really an edge case.
Updated by Ilya Dryomov 6 months ago
- Related to Bug #63719: [test] scribble()-based DiffIterate tests are too weak added
Updated by Ilya Dryomov 6 months ago
- Status changed from In Progress to Fix Under Review
- Pull request ID set to 54755
Updated by Ilya Dryomov 5 months ago
- Status changed from Fix Under Review to Pending Backport
Updated by Backport Bot 5 months ago
- Copied to Backport #63736: pacific: [diff-iterate] ObjectListSnapsRequest's LIST_SNAPS_FLAG_WHOLE_OBJECT behavior is broken added
Updated by Backport Bot 5 months ago
- Copied to Backport #63737: quincy: [diff-iterate] ObjectListSnapsRequest's LIST_SNAPS_FLAG_WHOLE_OBJECT behavior is broken added
Updated by Backport Bot 5 months ago
- Copied to Backport #63738: reef: [diff-iterate] ObjectListSnapsRequest's LIST_SNAPS_FLAG_WHOLE_OBJECT behavior is broken added
Updated by Backport Bot 3 months ago
- Status changed from Pending Backport to Resolved
While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".