Skip to content

Commit b858a36

Browse files
Mikulas Patockaaxboe
authored andcommitted
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 <[email protected]> Fixes: fb09876 ("dm-integrity: introduce the Inline mode") Fixes: 0ece1d6 ("bio-integrity: create multi-page bvecs in bio_integrity_add_page()") Reviewed-by: Ming Lei <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Tested-by: Anuj Gupta <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent e58f514 commit b858a36

File tree

1 file changed

+0
-4
lines changed

1 file changed

+0
-4
lines changed

block/bio-integrity.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,6 @@ int bio_integrity_add_page(struct bio *bio, struct page *page,
167167
struct request_queue *q = bdev_get_queue(bio->bi_bdev);
168168
struct bio_integrity_payload *bip = bio_integrity(bio);
169169

170-
if (((bip->bip_iter.bi_size + len) >> SECTOR_SHIFT) >
171-
queue_max_hw_sectors(q))
172-
return 0;
173-
174170
if (bip->bip_vcnt > 0) {
175171
struct bio_vec *bv = &bip->bip_vec[bip->bip_vcnt - 1];
176172
bool same_page = false;

0 commit comments

Comments
 (0)