The block layer may merge non-contiguous discard bios into a single request when the queue allows more than one discard segment, and the stacking default for dm is max_discard_segments = USHRT_MAX.
Both dm-qcow2 and dm-ploop handle a discard request as one contiguous range taken from blk_rq_pos() and blk_rq_bytes(). For a request built from bios [0, 512) and [1024, 1536) they discard [0, 1024), which hits sectors that were never asked to be discarded and misses part of the range that was. Set max_discard_segments to 1 in both targets so each discard request always describes a single contiguous range. https://virtuozzo.atlassian.net/browse/VSTOR-154159 Andrey Zhadchenko (2): dm-qcow2: set max discard segments to one dm-ploop: set max discard segments to one drivers/md/dm-ploop-target.c | 1 + drivers/md/dm-qcow2-target.c | 1 + 2 files changed, 2 insertions(+) -- 2.43.5 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
