aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-10 20:23:49 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-10 20:23:49 -0500
commit3419b45039c6b799c974a8019361c045e7ca232c (patch)
tree36a63602036cc50f34fadcbd5d5d8fca94e44297 /include/linux/blkdev.h
parent01504f5e9e071f1dde1062e3be15f54d4555308f (diff)
parentc1c534609fe8a859f9c8108a5591e6e8a97e34d1 (diff)
Merge branch 'for-4.4/io-poll' of git://git.kernel.dk/linux-block
Pull block IO poll support from Jens Axboe: "Various groups have been doing experimentation around IO polling for (really) fast devices. The code has been reviewed and has been sitting on the side for a few releases, but this is now good enough for coordinated benchmarking and further experimentation. Currently O_DIRECT sync read/write are supported. A framework is in the works that allows scalable stats tracking so we can auto-tune this. And we'll add libaio support as well soon. Fow now, it's an opt-in feature for test purposes" * 'for-4.4/io-poll' of git://git.kernel.dk/linux-block: direct-io: be sure to assign dio->bio_bdev for both paths directio: add block polling support NVMe: add blk polling support block: add block polling support blk-mq: return tag/queue combo in the make_request_fn handlers block: change ->make_request_fn() and users to return a queue cookie
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index d045ca8487af..3fe27f8d91f0 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -209,7 +209,7 @@ static inline unsigned short req_get_ioprio(struct request *req)
209struct blk_queue_ctx; 209struct blk_queue_ctx;
210 210
211typedef void (request_fn_proc) (struct request_queue *q); 211typedef void (request_fn_proc) (struct request_queue *q);
212typedef void (make_request_fn) (struct request_queue *q, struct bio *bio); 212typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio);
213typedef int (prep_rq_fn) (struct request_queue *, struct request *); 213typedef int (prep_rq_fn) (struct request_queue *, struct request *);
214typedef void (unprep_rq_fn) (struct request_queue *, struct request *); 214typedef void (unprep_rq_fn) (struct request_queue *, struct request *);
215 215
@@ -487,6 +487,7 @@ struct request_queue {
487#define QUEUE_FLAG_DEAD 19 /* queue tear-down finished */ 487#define QUEUE_FLAG_DEAD 19 /* queue tear-down finished */
488#define QUEUE_FLAG_INIT_DONE 20 /* queue is initialized */ 488#define QUEUE_FLAG_INIT_DONE 20 /* queue is initialized */
489#define QUEUE_FLAG_NO_SG_MERGE 21 /* don't attempt to merge SG segments*/ 489#define QUEUE_FLAG_NO_SG_MERGE 21 /* don't attempt to merge SG segments*/
490#define QUEUE_FLAG_POLL 22 /* IO polling enabled if set */
490 491
491#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ 492#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \
492 (1 << QUEUE_FLAG_STACKABLE) | \ 493 (1 << QUEUE_FLAG_STACKABLE) | \
@@ -761,7 +762,7 @@ static inline void rq_flush_dcache_pages(struct request *rq)
761 762
762extern int blk_register_queue(struct gendisk *disk); 763extern int blk_register_queue(struct gendisk *disk);
763extern void blk_unregister_queue(struct gendisk *disk); 764extern void blk_unregister_queue(struct gendisk *disk);
764extern void generic_make_request(struct bio *bio); 765extern blk_qc_t generic_make_request(struct bio *bio);
765extern void blk_rq_init(struct request_queue *q, struct request *rq); 766extern void blk_rq_init(struct request_queue *q, struct request *rq);
766extern void blk_put_request(struct request *); 767extern void blk_put_request(struct request *);
767extern void __blk_put_request(struct request_queue *, struct request *); 768extern void __blk_put_request(struct request_queue *, struct request *);
@@ -814,6 +815,8 @@ extern int blk_execute_rq(struct request_queue *, struct gendisk *,
814extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *, 815extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *,
815 struct request *, int, rq_end_io_fn *); 816 struct request *, int, rq_end_io_fn *);
816 817
818bool blk_poll(struct request_queue *q, blk_qc_t cookie);
819
817static inline struct request_queue *bdev_get_queue(struct block_device *bdev) 820static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
818{ 821{
819 return bdev->bd_disk->queue; /* this is never NULL */ 822 return bdev->bd_disk->queue; /* this is never NULL */