On Tue, Feb 15, 2011 at 04:20:16PM +0000, Jan Beulich wrote:
quoted
Yeah, right. blk_flush_complete_seq_end_io() is on completion path
and shouldn't call directly into request_fn. Can you please test
whether the following patch fixes the problem?
Isn't that rather meant to deal with the first of the two cases (i.e.
not the one above, where the problem is with the direct call to
request_fn from __generic_unplug_device())?
Right, didn't realize there were two issues. The following should
take care of the second one.
diff --git a/block/blk-flush.c b/block/blk-flush.c
index 54b123d..fbaa037 100644
--- a/block/blk-flush.c
+++ b/block/blk-flush.c
@@ -130,7 +130,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;
}
--
tejun