diff options
| author | Bart Van Assche <[email protected]> | 2012-11-28 12:45:56 +0000 |
|---|---|---|
| committer | Jens Axboe <[email protected]> | 2012-12-06 13:32:30 +0000 |
| commit | 704605711ef048a7c6ad2ec599f15d2e0baf86b2 (patch) | |
| tree | 16620b55d00b289a9a343d1d2c150684fbb1661c /fs/proc/array.c | |
| parent | block: Avoid that request_fn is invoked on a dead queue (diff) | |
| download | kernel-704605711ef048a7c6ad2ec599f15d2e0baf86b2.tar.gz kernel-704605711ef048a7c6ad2ec599f15d2e0baf86b2.zip | |
block: Avoid scheduling delayed work on a dead queue
Running a queue must continue after it has been marked dying until
it has been marked dead. So the function blk_run_queue_async() must
not schedule delayed work after blk_cleanup_queue() has marked a queue
dead. Hence add a test for that queue state in blk_run_queue_async()
and make sure that queue_unplugged() invokes that function with the
queue lock held. This avoids that the queue state can change after
it has been tested and before mod_delayed_work() is invoked. Drop
the queue dying test in queue_unplugged() since it is now
superfluous: __blk_run_queue() already tests whether or not the
queue is dead.
Signed-off-by: Bart Van Assche <[email protected]>
Cc: Mike Christie <[email protected]>
Acked-by: Tejun Heo <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'fs/proc/array.c')
0 files changed, 0 insertions, 0 deletions
