export block layer functions and add a bio helper
Subsystems (3)
PATCH 1/5 export block layer functions and add a bio helper
SCSI wants to do async request so export blk_execute_rq_nowait and __blk_put_request.
And add bio_map_pages() which maps X bytes from a pages pointer array into a bio. This is useful for mapping a block of pages allocated from __get_free_pages/alloc_pages into a bio.
Signed-off-by Mike Christie <[email protected]>
drivers/block/ll_rw_blk.c +5 -1
@@ -2302,6 +2302,8 @@ void blk_execute_rq_nowait(request_queuegeneric_unplug_device (q); } +EXPORT_SYMBOL_GPL (blk_execute_rq_nowait); +/** * blk_execute_rq - insert a request into queue for execution * @q: queue to insert the request in
@@ -2483,7 +2485,7 @@ void disk_round_stats(struct gendisk *di/* * queue lock must be held */ -static void __blk_put_request (request_queue_t *q,struct request *req) +void __blk_put_request (request_queue_t *q,struct request *req) {struct request_list *rl = req->rl;
@@ -2511,6 +2513,8 @@ static void __blk_put_request(request_qu } } +EXPORT_SYMBOL_GPL (__blk_put_request); +void blk_put_request (struct request *req) {/*
fs/bio.c +43 -0
49 lines not on this page · raw message
include/linux/bio.h +2 -0
@@ -302,6 +302,8 @@ extern struct bio *bio_map_user_iov(struextern void bio_unmap_user (struct bio *);extern struct bio *bio_map_kern (struct request_queue *,void *,unsigned int ,unsigned int ); +extern struct bio *bio_map_pages (struct request_queue *,struct page *, +unsigned int ,unsigned int ,unsigned int );extern void bio_set_pages_dirty (struct bio *bio);extern void bio_check_pages_dirty (struct bio *bio);extern struct bio *bio_copy_user (struct request_queue *,unsigned long ,unsigned int ,int );
include/linux/blkdev.h +5 -0
@@ -548,6 +548,7 @@ extern void blk_unregister_queue(structextern void register_disk (struct gendisk *dev);extern void generic_make_request (struct bio *bio);extern void blk_put_request (struct request *); +extern void __blk_put_request (request_queue_t *,struct request *);extern void blk_end_sync_rq (struct request *rq);extern void blk_attempt_remerge (request_queue_t *,struct request *);extern struct request *blk_get_request (request_queue_t *,int ,int );
@@ -569,6 +570,10 @@ extern int blk_rq_map_kern(request_queueextern int blk_rq_map_user_iov (request_queue_t *,struct request *,struct sg_iovec *,int );extern int blk_execute_rq (request_queue_t *,struct gendisk *,struct request *,int ); +extern void blk_execute_rq_nowait (request_queue_t *,struct gendisk *, +struct request *,int , +void (*done)(struct request *)); +static inline request_queue_t *bdev_get_queue (struct block_device *bdev) {return bdev->bd_disk->queue;