From: Oleg Nesterov Date: Tue, 23 Oct 2007 13:08:18 +0000 (+0200) Subject: cfq_exit_queue() should cancel cfq_data->unplug_work X-Git-Tag: v2.6.24-rc2~103^2~7 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=4310864b9d17714e64446bfb8bc7dbcb96454475;p=linux.git cfq_exit_queue() should cancel cfq_data->unplug_work Spotted by Nick , perhaps explains the first trace in http://bugzilla.kernel.org/show_bug.cgi?id=9180. cfq_exit_queue() should cancel cfqd->unplug_work before freeing cfqd. blk_sync_queue() seems unneeded, removed. Q: why cfq_exit_queue() calls cfq_shutdown_timer_wq() twice? Signed-off-by: Oleg Nesterov Signed-off-by: Jens Axboe --- diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 54dc05439009..d77c9719b613 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -2053,7 +2053,7 @@ static void cfq_shutdown_timer_wq(struct cfq_data *cfqd) { del_timer_sync(&cfqd->idle_slice_timer); del_timer_sync(&cfqd->idle_class_timer); - blk_sync_queue(cfqd->queue); + kblockd_flush_work(&cfqd->unplug_work); } static void cfq_put_async_queues(struct cfq_data *cfqd)