diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2008-08-28 03:17:05 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-10-09 02:56:10 -0400 |
commit | a3bce90edd8f6cafe3f63b1a943800792e830178 (patch) | |
tree | c07a2962987e57997b4ff6f6c63febe1feaa0a9c /include | |
parent | 45333d5a31296d0af886d94f1d08f128231cab8e (diff) |
block: add gfp_mask argument to blk_rq_map_user and blk_rq_map_user_iov
Currently, blk_rq_map_user and blk_rq_map_user_iov always do
GFP_KERNEL allocation.
This adds gfp_mask argument to blk_rq_map_user and blk_rq_map_user_iov
so sg can use it (sg always does GFP_ATOMIC allocation).
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Douglas Gilbert <dougg@torque.net>
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/bio.h | 9 | ||||
-rw-r--r-- | include/linux/blkdev.h | 5 |
2 files changed, 8 insertions, 6 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index 13aba20edb2d..200b185c3e83 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -325,11 +325,11 @@ extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *, | |||
325 | unsigned int, unsigned int); | 325 | unsigned int, unsigned int); |
326 | extern int bio_get_nr_vecs(struct block_device *); | 326 | extern int bio_get_nr_vecs(struct block_device *); |
327 | extern struct bio *bio_map_user(struct request_queue *, struct block_device *, | 327 | extern struct bio *bio_map_user(struct request_queue *, struct block_device *, |
328 | unsigned long, unsigned int, int); | 328 | unsigned long, unsigned int, int, gfp_t); |
329 | struct sg_iovec; | 329 | struct sg_iovec; |
330 | extern struct bio *bio_map_user_iov(struct request_queue *, | 330 | extern struct bio *bio_map_user_iov(struct request_queue *, |
331 | struct block_device *, | 331 | struct block_device *, |
332 | struct sg_iovec *, int, int); | 332 | struct sg_iovec *, int, int, gfp_t); |
333 | extern void bio_unmap_user(struct bio *); | 333 | extern void bio_unmap_user(struct bio *); |
334 | extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int, | 334 | extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int, |
335 | gfp_t); | 335 | gfp_t); |
@@ -337,9 +337,10 @@ extern struct bio *bio_copy_kern(struct request_queue *, void *, unsigned int, | |||
337 | gfp_t, int); | 337 | gfp_t, int); |
338 | extern void bio_set_pages_dirty(struct bio *bio); | 338 | extern void bio_set_pages_dirty(struct bio *bio); |
339 | extern void bio_check_pages_dirty(struct bio *bio); | 339 | extern void bio_check_pages_dirty(struct bio *bio); |
340 | extern struct bio *bio_copy_user(struct request_queue *, unsigned long, unsigned int, int); | 340 | extern struct bio *bio_copy_user(struct request_queue *, unsigned long, |
341 | unsigned int, int, gfp_t); | ||
341 | extern struct bio *bio_copy_user_iov(struct request_queue *, struct sg_iovec *, | 342 | extern struct bio *bio_copy_user_iov(struct request_queue *, struct sg_iovec *, |
342 | int, int); | 343 | int, int, gfp_t); |
343 | extern int bio_uncopy_user(struct bio *); | 344 | extern int bio_uncopy_user(struct bio *); |
344 | void zero_fill_bio(struct bio *bio); | 345 | void zero_fill_bio(struct bio *bio); |
345 | extern struct bio_vec *bvec_alloc_bs(gfp_t, int, unsigned long *, struct bio_set *); | 346 | extern struct bio_vec *bvec_alloc_bs(gfp_t, int, unsigned long *, struct bio_set *); |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 12df8efeef19..00e388d0e221 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -710,11 +710,12 @@ extern void __blk_stop_queue(struct request_queue *q); | |||
710 | extern void __blk_run_queue(struct request_queue *); | 710 | extern void __blk_run_queue(struct request_queue *); |
711 | extern void blk_run_queue(struct request_queue *); | 711 | extern void blk_run_queue(struct request_queue *); |
712 | extern void blk_start_queueing(struct request_queue *); | 712 | extern void blk_start_queueing(struct request_queue *); |
713 | extern int blk_rq_map_user(struct request_queue *, struct request *, void __user *, unsigned long); | 713 | extern int blk_rq_map_user(struct request_queue *, struct request *, |
714 | void __user *, unsigned long, gfp_t); | ||
714 | extern int blk_rq_unmap_user(struct bio *); | 715 | extern int blk_rq_unmap_user(struct bio *); |
715 | extern int blk_rq_map_kern(struct request_queue *, struct request *, void *, unsigned int, gfp_t); | 716 | extern int blk_rq_map_kern(struct request_queue *, struct request *, void *, unsigned int, gfp_t); |
716 | extern int blk_rq_map_user_iov(struct request_queue *, struct request *, | 717 | extern int blk_rq_map_user_iov(struct request_queue *, struct request *, |
717 | struct sg_iovec *, int, unsigned int); | 718 | struct sg_iovec *, int, unsigned int, gfp_t); |
718 | extern int blk_execute_rq(struct request_queue *, struct gendisk *, | 719 | extern int blk_execute_rq(struct request_queue *, struct gendisk *, |
719 | struct request *, int); | 720 | struct request *, int); |
720 | extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *, | 721 | extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *, |