mirror of
https://github.com/ceph/ceph
synced 2025-01-05 02:32:59 +00:00
a9ed8d3279
rbd rounds off and ignores discards that are smaller than alloc_size, but the page cache is invalidated according to the original offset and length, before calling into the driver. For a 512~4193792 discard, all pages except for the first will be invalidated, but the first page may remain cached after being partially zeroed out. This results in an inconsistency when alloc_size != 512. E.g. for 64k: 0 512 4k 64k 4M | | | | | page cache: xxxxxxxx00000000xxxxxxxx0000000000000000 RADOS: xxxxxxxxxxxxxxxxxxxxxxxx0000000000000000 Given that these tests asserts on-disk state, we need to read directly from disk. krbd_discard_512b.t and krbd_zeroout.t are fine -- there is no rounding there. Fixes: https://tracker.ceph.com/issues/41753 Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
||
---|---|---|
.. | ||
common.sh | ||
krbd_blkroset.t | ||
krbd_deep_flatten.t | ||
krbd_discard_4M.t | ||
krbd_discard_512b.t | ||
krbd_discard_granularity.t | ||
krbd_discard.t | ||
krbd_huge_image.t | ||
krbd_msgr_segments.t | ||
krbd_parent_overlap.t | ||
krbd_whole_object_zeroout.t | ||
krbd_zeroout.t | ||
rbd.sh |