summaryrefslogtreecommitdiffstats
path: root/mm/init-mm.c
diff options
context:
space:
mode:
authorBart Van Assche <bvanassche@acm.org>2012-11-28 13:45:56 +0100
committerJens Axboe <axboe@kernel.dk>2012-12-06 14:32:30 +0100
commit704605711ef048a7c6ad2ec599f15d2e0baf86b2 (patch)
tree16620b55d00b289a9a343d1d2c150684fbb1661c /mm/init-mm.c
parentc246e80d86736312933646896c4157daf511dadc (diff)
downloadlinux-704605711ef048a7c6ad2ec599f15d2e0baf86b2.tar.bz2
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 <bvanassche@acm.org> Cc: Mike Christie <michaelc@cs.wisc.edu> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'mm/init-mm.c')
0 files changed, 0 insertions, 0 deletions