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 /block/cfq-iosched.c | |
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 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 3202c7e87fb3..89dc745c7d94 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -3324,7 +3324,7 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
3324 | cfqd->busy_queues > 1) { | 3324 | cfqd->busy_queues > 1) { |
3325 | cfq_del_timer(cfqd, cfqq); | 3325 | cfq_del_timer(cfqd, cfqq); |
3326 | cfq_clear_cfqq_wait_request(cfqq); | 3326 | cfq_clear_cfqq_wait_request(cfqq); |
3327 | __blk_run_queue(cfqd->queue); | 3327 | __blk_run_queue(cfqd->queue, false); |
3328 | } else { | 3328 | } else { |
3329 | cfq_blkiocg_update_idle_time_stats( | 3329 | cfq_blkiocg_update_idle_time_stats( |
3330 | &cfqq->cfqg->blkg); | 3330 | &cfqq->cfqg->blkg); |
@@ -3339,7 +3339,7 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
3339 | * this new queue is RT and the current one is BE | 3339 | * this new queue is RT and the current one is BE |
3340 | */ | 3340 | */ |
3341 | cfq_preempt_queue(cfqd, cfqq); | 3341 | cfq_preempt_queue(cfqd, cfqq); |
3342 | __blk_run_queue(cfqd->queue); | 3342 | __blk_run_queue(cfqd->queue, false); |
3343 | } | 3343 | } |
3344 | } | 3344 | } |
3345 | 3345 | ||
@@ -3700,7 +3700,7 @@ static void cfq_kick_queue(struct work_struct *work) | |||
3700 | struct request_queue *q = cfqd->queue; | 3700 | struct request_queue *q = cfqd->queue; |
3701 | 3701 | ||
3702 | spin_lock_irq(q->queue_lock); | 3702 | spin_lock_irq(q->queue_lock); |
3703 | __blk_run_queue(cfqd->queue); | 3703 | __blk_run_queue(cfqd->queue, false); |
3704 | spin_unlock_irq(q->queue_lock); | 3704 | spin_unlock_irq(q->queue_lock); |
3705 | } | 3705 | } |
3706 | 3706 | ||