summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2007-10-23 17:08:18 +0400
committerJens Axboe <jens.axboe@oracle.com>2007-10-29 13:33:05 +0300
commit4310864b9d17714e64446bfb8bc7dbcb96454475 (patch)
treeb3a1efec204dc7eeb05ccdb28a954efe6ec8f621
parentb238b3d4be04d3acf1f86ff8ad0b0e803def67ff (diff)
downloadlinux-4310864b9d17714e64446bfb8bc7dbcb96454475.tar.xz
cfq_exit_queue() should cancel cfq_data->unplug_work
Spotted by Nick <gentuu@gmail.com>, 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 <oleg@tv-sign.ru> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/cfq-iosched.c2
1 files changed, 1 insertions, 1 deletions
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)