aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-04-15 11:01:13 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-04-15 11:01:13 -0400
commit5853b4f06f7b9b56f37f457d7923f7b96496074e (patch)
tree8cf850e91b26af25071f00055fa89fb924796de6 /include/linux/blkdev.h
parenta970f5d513163a305d46f330d0a7d2dd4c4506f1 (diff)
parentf6603783f9f099bf7a83b3f6c689bbbf74f0e96e (diff)
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: block: only force kblockd unplugging from the schedule() path block: cleanup the block plug helper functions block, blk-sysfs: Use the variable directly instead of a function call block: move queue run on unplug to kblockd block: kill queue_sync_plugs() block: readd plug trace event block: add callback function for unplug notification block: add comment on why we save and disable interrupts in flush_plug_list() block: fixup block IO unplug trace call block: remove block_unplug_timer() trace point block: splice plug list to local context
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 32176cc8e715..1c76506fcf11 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -196,6 +196,7 @@ typedef void (request_fn_proc) (struct request_queue *q);
196typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); 196typedef int (make_request_fn) (struct request_queue *q, struct bio *bio);
197typedef int (prep_rq_fn) (struct request_queue *, struct request *); 197typedef int (prep_rq_fn) (struct request_queue *, struct request *);
198typedef void (unprep_rq_fn) (struct request_queue *, struct request *); 198typedef void (unprep_rq_fn) (struct request_queue *, struct request *);
199typedef void (unplugged_fn) (struct request_queue *);
199 200
200struct bio_vec; 201struct bio_vec;
201struct bvec_merge_data { 202struct bvec_merge_data {
@@ -283,6 +284,7 @@ struct request_queue
283 rq_timed_out_fn *rq_timed_out_fn; 284 rq_timed_out_fn *rq_timed_out_fn;
284 dma_drain_needed_fn *dma_drain_needed; 285 dma_drain_needed_fn *dma_drain_needed;
285 lld_busy_fn *lld_busy_fn; 286 lld_busy_fn *lld_busy_fn;
287 unplugged_fn *unplugged_fn;
286 288
287 /* 289 /*
288 * Dispatch queue sorting 290 * Dispatch queue sorting
@@ -841,6 +843,7 @@ extern void blk_queue_dma_alignment(struct request_queue *, int);
841extern void blk_queue_update_dma_alignment(struct request_queue *, int); 843extern void blk_queue_update_dma_alignment(struct request_queue *, int);
842extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); 844extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *);
843extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); 845extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *);
846extern void blk_queue_unplugged(struct request_queue *, unplugged_fn *);
844extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); 847extern void blk_queue_rq_timeout(struct request_queue *, unsigned int);
845extern void blk_queue_flush(struct request_queue *q, unsigned int flush); 848extern void blk_queue_flush(struct request_queue *q, unsigned int flush);
846extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); 849extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);
@@ -862,14 +865,14 @@ struct blk_plug {
862 865
863extern void blk_start_plug(struct blk_plug *); 866extern void blk_start_plug(struct blk_plug *);
864extern void blk_finish_plug(struct blk_plug *); 867extern void blk_finish_plug(struct blk_plug *);
865extern void __blk_flush_plug(struct task_struct *, struct blk_plug *); 868extern void blk_flush_plug_list(struct blk_plug *, bool);
866 869
867static inline void blk_flush_plug(struct task_struct *tsk) 870static inline void blk_flush_plug(struct task_struct *tsk)
868{ 871{
869 struct blk_plug *plug = tsk->plug; 872 struct blk_plug *plug = tsk->plug;
870 873
871 if (unlikely(plug)) 874 if (plug)
872 __blk_flush_plug(tsk, plug); 875 blk_flush_plug_list(plug, true);
873} 876}
874 877
875static inline bool blk_needs_flush_plug(struct task_struct *tsk) 878static inline bool blk_needs_flush_plug(struct task_struct *tsk)