X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=include%2Flinux%2Fbio.h;h=5a4d39b4686be4fb1f78c06442f29d4d955297d7;hb=614cd4a4ac3daf725508e372bce2160e2d8039a9;hp=70654521dab69fb03443723550e9b9f8c64a6533;hpb=878a876b2e10888afe53766dcca33f723ae20edc;p=~andy%2Flinux diff --git a/include/linux/bio.h b/include/linux/bio.h index 70654521dab..5a4d39b4686 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -250,6 +250,17 @@ static inline unsigned bio_segments(struct bio *bio) struct bio_vec bv; struct bvec_iter iter; + /* + * We special case discard/write same, because they interpret bi_size + * differently: + */ + + if (bio->bi_rw & REQ_DISCARD) + return 1; + + if (bio->bi_rw & REQ_WRITE_SAME) + return 1; + bio_for_each_segment(bv, bio, iter) segs++; @@ -332,6 +343,7 @@ extern struct bio *bio_clone_fast(struct bio *, gfp_t, struct bio_set *); extern struct bio *bio_clone_bioset(struct bio *, gfp_t, struct bio_set *bs); extern struct bio_set *fs_bio_set; +unsigned int bio_integrity_tag_size(struct bio *bio); static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) {