]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
bio-integrity: fix interface for bio_integrity_trim
authorDmitry Monakhov <dmonakhov@openvz.org>
Thu, 29 Jun 2017 18:31:10 +0000 (11:31 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 3 Jul 2017 22:56:22 +0000 (16:56 -0600)
bio_integrity_trim inherent it's interface from bio_trim and accept
offset and size, but this API is error prone because data offset
must always be insync with bio's data offset. That is why we have
integrity update hook in bio_advance()

So only meaningful values are: offset == 0, sectors == bio_sectors(bio)
Let's just remove them completely.

Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio-integrity.c
block/bio.c
drivers/md/dm.c
include/linux/bio.h

index 8c2253c59edbcc2920097433cc5acb973cff0287..3a0d71199fb079ada2f94511acf470d70c4fce9f 100644 (file)
@@ -433,22 +433,15 @@ EXPORT_SYMBOL(bio_integrity_advance);
 /**
  * bio_integrity_trim - Trim integrity vector
  * @bio:       bio whose integrity vector to update
- * @offset:    offset to first data sector
- * @sectors:   number of data sectors
  *
  * Description: Used to trim the integrity vector in a cloned bio.
- * The ivec will be advanced corresponding to 'offset' data sectors
- * and the length will be truncated corresponding to 'len' data
- * sectors.
  */
-void bio_integrity_trim(struct bio *bio, unsigned int offset,
-                       unsigned int sectors)
+void bio_integrity_trim(struct bio *bio)
 {
        struct bio_integrity_payload *bip = bio_integrity(bio);
        struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
 
-       bio_integrity_advance(bio, offset << 9);
-       bip->bip_iter.bi_size = bio_integrity_bytes(bi, sectors);
+       bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio));
 }
 EXPORT_SYMBOL(bio_integrity_trim);
 
index 5b4b32a2f8d0e36f3ef3168dd2c41b52770f29e5..a6b225324a61b21854497ea09ef36b555f9a09d5 100644 (file)
@@ -1868,7 +1868,7 @@ struct bio *bio_split(struct bio *bio, int sectors,
        split->bi_iter.bi_size = sectors << 9;
 
        if (bio_integrity(split))
-               bio_integrity_trim(split, 0, sectors);
+               bio_integrity_trim(split);
 
        bio_advance(bio, split->bi_iter.bi_size);
 
@@ -1902,7 +1902,7 @@ void bio_trim(struct bio *bio, int offset, int size)
        bio->bi_iter.bi_size = size;
 
        if (bio_integrity(bio))
-               bio_integrity_trim(bio, 0, size);
+               bio_integrity_trim(bio);
 
 }
 EXPORT_SYMBOL_GPL(bio_trim);
index 40294603530804f121ae2723d43de8b1c892d5d0..13e714ea7a4218d76c58caa5f834408c6636eefb 100644 (file)
@@ -1153,7 +1153,7 @@ static int clone_bio(struct dm_target_io *tio, struct bio *bio,
        clone->bi_iter.bi_size = to_bytes(len);
 
        if (unlikely(bio_integrity(bio) != NULL))
-               bio_integrity_trim(clone, 0, len);
+               bio_integrity_trim(clone);
 
        return 0;
 }
index 664a27da276d64d3d84375c0baaa983d4c546cd5..1d74f5120369df8430717abdd9345f7f83cb2e85 100644 (file)
@@ -728,7 +728,7 @@ extern bool bio_integrity_enabled(struct bio *bio);
 extern int bio_integrity_prep(struct bio *);
 extern void bio_integrity_endio(struct bio *);
 extern void bio_integrity_advance(struct bio *, unsigned int);
-extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
+extern void bio_integrity_trim(struct bio *);
 extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t);
 extern int bioset_integrity_create(struct bio_set *, int);
 extern void bioset_integrity_free(struct bio_set *);
@@ -778,8 +778,7 @@ static inline void bio_integrity_advance(struct bio *bio,
        return;
 }
 
-static inline void bio_integrity_trim(struct bio *bio, unsigned int offset,
-                                     unsigned int sectors)
+static inline void bio_integrity_trim(struct bio *bio)
 {
        return;
 }