diff options
author | Christoph Hellwig <hch@lst.de> | 2020-04-14 10:42:22 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-04-22 19:47:06 +0300 |
commit | 89de1504d53b59b12bfff227328ee3e63dd3a112 (patch) | |
tree | 2205ed1010c146887a329bdf953b74b04afedd87 /include/linux | |
parent | e64a0e16928415648d53d721b3d6fc3635eddf92 (diff) | |
download | linux-89de1504d53b59b12bfff227328ee3e63dd3a112.tar.xz |
block: provide a blk_rq_map_sg variant that returns the last element
To be able to move some of the special purpose hacks in blk_rq_map_sg
into the callers we need a variant that returns the last mapped
S/G list element to the caller. Add that variant as __blk_rq_map_sg
and make blk_rq_map_sg a trivial inline wrapper around it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blkdev.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 76da162b6ae9..496dc9491026 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1136,7 +1136,15 @@ static inline unsigned short blk_rq_nr_discard_segments(struct request *rq) return max_t(unsigned short, rq->nr_phys_segments, 1); } -extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); +int __blk_rq_map_sg(struct request_queue *q, struct request *rq, + struct scatterlist *sglist, struct scatterlist **last_sg); +static inline int blk_rq_map_sg(struct request_queue *q, struct request *rq, + struct scatterlist *sglist) +{ + struct scatterlist *last_sg = NULL; + + return __blk_rq_map_sg(q, rq, sglist, &last_sg); +} extern void blk_dump_rq_flags(struct request *, char *); extern long nr_blockdev_pages(void); |