]> git.itanic.dy.fi Git - linux-stable/commit
dm-integrity: align the outgoing bio in integrity_recheck
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 21 Mar 2024 16:48:45 +0000 (17:48 +0100)
committerMike Snitzer <snitzer@kernel.org>
Thu, 21 Mar 2024 17:19:10 +0000 (13:19 -0400)
commitb4d78cfeb30476239cf08f4f40afc095c173d6e3
tree13bae90774027cf299cafc184c5351a847c8b386
parent6e7132ed3c07bd8a6ce3db4bb307ef2852b322dc
dm-integrity: align the outgoing bio in integrity_recheck

It is possible to set up dm-integrity with smaller sector size than
the logical sector size of the underlying device. In this situation,
dm-integrity guarantees that the outgoing bios have the same alignment as
incoming bios (so, if you create a filesystem with 4k block size,
dm-integrity would send 4k-aligned bios to the underlying device).

This guarantee was broken when integrity_recheck was implemented.
integrity_recheck sends bio that is aligned to ic->sectors_per_block. So
if we set up integrity with 512-byte sector size on a device with logical
block size 4k, we would be sending unaligned bio. This triggered a bug in
one of our internal tests.

This commit fixes it by determining the actual alignment of the
incoming bio and then makes sure that the outgoing bio in
integrity_recheck has the same alignment.

Fixes: c88f5e553fe3 ("dm-integrity: recheck the integrity tag after a failure")
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
drivers/md/dm-integrity.c