diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2007-10-23 09:08:18 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-10-29 06:33:05 -0400 |
commit | 4310864b9d17714e64446bfb8bc7dbcb96454475 (patch) | |
tree | b3a1efec204dc7eeb05ccdb28a954efe6ec8f621 | |
parent | b238b3d4be04d3acf1f86ff8ad0b0e803def67ff (diff) |
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.c | 2 |
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) | |||
2053 | { | 2053 | { |
2054 | del_timer_sync(&cfqd->idle_slice_timer); | 2054 | del_timer_sync(&cfqd->idle_slice_timer); |
2055 | del_timer_sync(&cfqd->idle_class_timer); | 2055 | del_timer_sync(&cfqd->idle_class_timer); |
2056 | blk_sync_queue(cfqd->queue); | 2056 | kblockd_flush_work(&cfqd->unplug_work); |
2057 | } | 2057 | } |
2058 | 2058 | ||
2059 | static void cfq_put_async_queues(struct cfq_data *cfqd) | 2059 | static void cfq_put_async_queues(struct cfq_data *cfqd) |