From: Bart Van Assche Date: Wed, 28 Nov 2012 12:45:56 +0000 (+0100) Subject: block: Avoid scheduling delayed work on a dead queue X-Git-Tag: v3.8-rc1~81^2~7 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=704605711ef048a7c6ad2ec599f15d2e0baf86b2;p=pandora-kernel.git 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 Cc: Mike Christie Acked-by: Tejun Heo Signed-off-by: Jens Axboe --- Reading git-diff-tree failed