From 4c0c017e15899b55b91bd164f10a82867c3ce4fc Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Wed, 2 Mar 2011 08:48:06 -0500 Subject: [PATCH] --- yaml --- r: 233822 b: refs/heads/master c: 255bb490c8c27eed484d538efe6ef6a7473bd3f6 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/blk-flush.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 828951d2fd15..834343152c11 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1654e7411a1ad4999fe7890ef51d2a2bbb1fcf76 +refs/heads/master: 255bb490c8c27eed484d538efe6ef6a7473bd3f6 diff --git a/trunk/block/blk-flush.c b/trunk/block/blk-flush.c index 56adaa8d55cd..b27d0208611b 100644 --- a/trunk/block/blk-flush.c +++ b/trunk/block/blk-flush.c @@ -66,10 +66,12 @@ static void blk_flush_complete_seq_end_io(struct request_queue *q, /* * Moving a request silently to empty queue_head may stall the - * queue. Kick the queue in those cases. + * queue. Kick the queue in those cases. This function is called + * from request completion path and calling directly into + * request_fn may confuse the driver. Always use kblockd. */ if (was_empty && next_rq) - __blk_run_queue(q, false); + __blk_run_queue(q, true); } static void pre_flush_end_io(struct request *rq, int error) @@ -130,7 +132,7 @@ static struct request *queue_next_fseq(struct request_queue *q) BUG(); } - elv_insert(q, rq, ELEVATOR_INSERT_FRONT); + elv_insert(q, rq, ELEVATOR_INSERT_REQUEUE); return rq; }