summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2015-09-08 15:33:35 (GMT)
committerJens Axboe <axboe@fb.com>2015-09-11 15:03:45 (GMT)
commit87a816df537e096d404add543ef47b796906c130 (patch)
treeae4d2c8c2606303f9ff4407a748fb48a111b7520 /block
parent7f39add3b08cbbdb99abe50e6d7c342e6800d684 (diff)
downloadlinux-87a816df537e096d404add543ef47b796906c130.tar.xz
block: Refuse adding appending a gapped integrity page to a bio
This is only theoretical at the moment given that the only subsystems that generate integrity payloads are the block layer itself and the scsi target (which generate well aligned integrity payloads). But when we will expose integrity meta-data to user-space, we'll need to refuse appending a page with a gap (if the queue virtual boundary is set). Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r--block/bio-integrity.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 4aecca7..14b8faf 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -140,6 +140,11 @@ int bio_integrity_add_page(struct bio *bio, struct page *page,
iv = bip->bip_vec + bip->bip_vcnt;
+ if (bip->bip_vcnt &&
+ bvec_gap_to_prev(bdev_get_queue(bio->bi_bdev),
+ &bip->bip_vec[bip->bip_vcnt - 1], offset))
+ return 0;
+
iv->bv_page = page;
iv->bv_len = len;
iv->bv_offset = offset;