bio-integrity: don't restrict the size of integrity metadata
authorMikulas Patocka <mpatocka@redhat.com>
Tue, 3 Sep 2024 19:47:59 +0000 (21:47 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 4 Sep 2024 13:17:00 +0000 (07:17 -0600)
commitb858a36fe9a1261dfd097aec855161ad135bed60
tree9a5ca5fa6fb9fb6f5e4e0aac254b550250662df5
parente58f5142f88320a5b1449f96a146f2f24615c5c7
bio-integrity: don't restrict the size of integrity metadata

bio_integrity_add_page restricts the size of the integrity metadata to
queue_max_hw_sectors(q). This restriction is not needed because oversized
bios are split automatically. This restriction causes problems with
dm-integrity 'inline' mode - if we send a large bio to dm-integrity and
the bio's metadata are larger than queue_max_hw_sectors(q),
bio_integrity_add_page fails and the bio is ended with BLK_STS_RESOURCE
error.

An example that triggers it:

dd: error writing '/dev/mapper/in2': Cannot allocate memory
1+0 records in
0+0 records out
0 bytes copied, 0.00169291 s, 0.0 kB/s

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Fixes: fb0987682c62 ("dm-integrity: introduce the Inline mode")
Fixes: 0ece1d649b6d ("bio-integrity: create multi-page bvecs in bio_integrity_add_page()")
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Anuj Gupta <anuj20.g@samsung.com>
Link: https://lore.kernel.org/r/e41b3b8e-16c2-70cb-97cb-881234bb200d@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio-integrity.c