]> git.baikalelectronics.ru Git - kernel.git/commit
block: kick queue after sequencing REQ_FLUSH/FUA
authorTejun Heo <tj@kernel.org>
Fri, 3 Sep 2010 09:56:17 +0000 (11:56 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Fri, 10 Sep 2010 10:35:37 +0000 (12:35 +0200)
commitca2be640956ae8381ca2fa3c901de26746a2f130
treefff5197359b989197eda76dd019746fbba054e88
parent20ac231432782029f2afdbc10a43ea0d0f5c7c94
block: kick queue after sequencing REQ_FLUSH/FUA

While completing a request from a REQ_FLUSH/FUA sequence, another
request can be pushed to the request queue.  If a driver tests
elv_queue_empty() before completing a request and runs the queue again
only if the queue wasn't empty, this may lead to hang.  Please note
that most drivers either kick the queue unconditionally or test queue
emptiness after completing the current request and don't have this
problem.

This patch removes this possibility by making REQ_FLUSH/FUA sequence
code kick the queue if the queue was empty before completing a request
from REQ_FLUSH/FUA sequence.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
block/blk-flush.c