diff options
author | Chunwei Chen <[email protected]> | 2014-03-29 20:26:17 +0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-04-10 14:28:51 -0700 |
commit | b761912b3473f09a642eea21d609ce9bc1c91546 (patch) | |
tree | 7ddeae7c8957961dab2175308f3dc65f6cb0b5f8 /include/linux/blkdev_compat.h | |
parent | 22760eebeff0e0ad826132b1be1113eecb39938a (diff) |
Linux 3.14 compat: rq_for_each_segment in dmu_req_copy
rq_for_each_segment changed from taking bio_vec * to taking bio_vec.
We provide rq_for_each_segment4 which takes both.
Signed-off-by: Chunwei Chen <[email protected]>
Signed-off-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #2124
Diffstat (limited to 'include/linux/blkdev_compat.h')
-rw-r--r-- | include/linux/blkdev_compat.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/blkdev_compat.h b/include/linux/blkdev_compat.h index be22ae700..8566033fc 100644 --- a/include/linux/blkdev_compat.h +++ b/include/linux/blkdev_compat.h @@ -284,8 +284,32 @@ struct req_iterator { #define rq_for_each_segment(bvl, _rq, _iter) \ __rq_for_each_bio(_iter.bio, _rq) \ bio_for_each_segment(bvl, _iter.bio, _iter.i) + +#define HAVE_RQ_FOR_EACH_SEGMENT_BVP 1 #endif /* HAVE_RQ_FOR_EACH_SEGMENT */ +/* + * 3.14 API change + * rq_for_each_segment changed from taking bio_vec * to taking bio_vec. + * We provide rq_for_each_segment4 which takes both. + * You should not modify the fields in @bv and @bvp. + * + * Note: the if-else is just to inject the assignment before the loop body. + */ +#ifdef HAVE_RQ_FOR_EACH_SEGMENT_BVP +#define rq_for_each_segment4(bv, bvp, rq, iter) \ + rq_for_each_segment(bvp, rq, iter) \ + if ((bv = *bvp), 0) \ + ; \ + else +#else +#define rq_for_each_segment4(bv, bvp, rq, iter) \ + rq_for_each_segment(bv, rq, iter) \ + if ((bvp = &bv), 0) \ + ; \ + else +#endif + #ifdef HAVE_BIO_BVEC_ITER #define BIO_BI_SECTOR(bio) (bio)->bi_iter.bi_sector #define BIO_BI_SIZE(bio) (bio)->bi_iter.bi_size |