[PATCH] fix queue stalling while barrier sequencing
authorTejun Heo <htejun@gmail.com>
Thu, 12 Jan 2006 14:39:26 +0000 (15:39 +0100)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 12 Jan 2006 17:05:39 +0000 (09:05 -0800)
commit1bc691d357c646700b9523d2aeca02847d3fb3f4
tree430e13982f894c44e4a33dee188b3c718ec989ed
parent593195f9b2309693f27b402f34573f7920b82c3e
[PATCH] fix queue stalling while barrier sequencing

If ordered tag isn't supported, request ordering for barrier
sequencing is performed by queue draining, which basically hangs the
request queue until elv_completed_request() reports completion of all
previous fs requests.

The condition check in elv_completed_request() was only performed for
fs requests.  If a special request is queued between the last
to-be-drained request and the barrier sequence, draining is never
completed and the queue is stalled forever.

This patch moves the end-of-draining condition check such that it's
performed for all requests.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
block/elevator.c