diff options
author | Tejun Heo <tj@kernel.org> | 2011-03-04 13:09:02 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2011-03-04 13:09:02 -0500 |
commit | e83a46bbb1d4c03defd733a64b727632a40059ad (patch) | |
tree | c4bc4822b2d3af1bf38095f531adc0a2aac054a5 /include/linux/blkdev.h | |
parent | da527770007fce8e4541947d47918248286da875 (diff) | |
parent | fd51469fb68b987032e46297e0a4fe9020063c20 (diff) |
Merge branch 'for-linus' of ../linux-2.6-block into block-for-2.6.39/core
This merge creates two set of conflicts. One is simple context
conflicts caused by removal of throtl_scheduled_delayed_work() in
for-linus and removal of throtl_shutdown_timer_wq() in
for-2.6.39/core.
The other is caused by commit 255bb490c8 (block: blk-flush shouldn't
call directly into q->request_fn() __blk_run_queue()) in for-linus
crashing with FLUSH reimplementation in for-2.6.39/core. The conflict
isn't trivial but the resolution is straight-forward.
* __blk_run_queue() calls in flush_end_io() and flush_data_end_io()
should be called with @force_kblockd set to %true.
* elv_insert() in blk_kick_flush() should use
%ELEVATOR_INSERT_REQUEUE.
Both changes are to avoid invoking ->request_fn() directly from
request completion path and closely match the changes in the commit
255bb490c8.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r-- | include/linux/blkdev.h | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 23fb92506c31..13b75ca62181 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -706,7 +706,7 @@ extern void blk_start_queue(struct request_queue *q); | |||
706 | extern void blk_stop_queue(struct request_queue *q); | 706 | extern void blk_stop_queue(struct request_queue *q); |
707 | extern void blk_sync_queue(struct request_queue *q); | 707 | extern void blk_sync_queue(struct request_queue *q); |
708 | extern void __blk_stop_queue(struct request_queue *q); | 708 | extern void __blk_stop_queue(struct request_queue *q); |
709 | extern void __blk_run_queue(struct request_queue *); | 709 | extern void __blk_run_queue(struct request_queue *q, bool force_kblockd); |
710 | extern void blk_run_queue(struct request_queue *); | 710 | extern void blk_run_queue(struct request_queue *); |
711 | extern int blk_rq_map_user(struct request_queue *, struct request *, | 711 | extern int blk_rq_map_user(struct request_queue *, struct request *, |
712 | struct rq_map_data *, void __user *, unsigned long, | 712 | struct rq_map_data *, void __user *, unsigned long, |
@@ -1095,7 +1095,6 @@ static inline void put_dev_sector(Sector p) | |||
1095 | 1095 | ||
1096 | struct work_struct; | 1096 | struct work_struct; |
1097 | int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); | 1097 | int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); |
1098 | int kblockd_schedule_delayed_work(struct request_queue *q, struct delayed_work *dwork, unsigned long delay); | ||
1099 | 1098 | ||
1100 | #ifdef CONFIG_BLK_CGROUP | 1099 | #ifdef CONFIG_BLK_CGROUP |
1101 | /* | 1100 | /* |
@@ -1143,7 +1142,6 @@ static inline uint64_t rq_io_start_time_ns(struct request *req) | |||
1143 | extern int blk_throtl_init(struct request_queue *q); | 1142 | extern int blk_throtl_init(struct request_queue *q); |
1144 | extern void blk_throtl_exit(struct request_queue *q); | 1143 | extern void blk_throtl_exit(struct request_queue *q); |
1145 | extern int blk_throtl_bio(struct request_queue *q, struct bio **bio); | 1144 | extern int blk_throtl_bio(struct request_queue *q, struct bio **bio); |
1146 | extern void throtl_schedule_delayed_work(struct request_queue *q, unsigned long delay); | ||
1147 | #else /* CONFIG_BLK_DEV_THROTTLING */ | 1145 | #else /* CONFIG_BLK_DEV_THROTTLING */ |
1148 | static inline int blk_throtl_bio(struct request_queue *q, struct bio **bio) | 1146 | static inline int blk_throtl_bio(struct request_queue *q, struct bio **bio) |
1149 | { | 1147 | { |
@@ -1152,7 +1150,6 @@ static inline int blk_throtl_bio(struct request_queue *q, struct bio **bio) | |||
1152 | 1150 | ||
1153 | static inline int blk_throtl_init(struct request_queue *q) { return 0; } | 1151 | static inline int blk_throtl_init(struct request_queue *q) { return 0; } |
1154 | static inline int blk_throtl_exit(struct request_queue *q) { return 0; } | 1152 | static inline int blk_throtl_exit(struct request_queue *q) { return 0; } |
1155 | static inline void throtl_schedule_delayed_work(struct request_queue *q, unsigned long delay) {} | ||
1156 | #endif /* CONFIG_BLK_DEV_THROTTLING */ | 1153 | #endif /* CONFIG_BLK_DEV_THROTTLING */ |
1157 | 1154 | ||
1158 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ | 1155 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |