aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCheng Renquan <crquan@gmail.com>2008-12-03 06:41:39 -0500
committerJens Axboe <jens.axboe@oracle.com>2008-12-29 02:28:44 -0500
commit64d01dc9e1927e6535627d73f2336c75d1dd3fe2 (patch)
tree1813333970f6ed1c1959edfc2842b00ed2b3a70e
parent08bafc0341f2f7920e9045bc32c40299cac8c21b (diff)
block: use cancel_work_sync() instead of kblockd_flush_work()
After many improvements on kblockd_flush_work, it is now identical to cancel_work_sync, so a direct call to cancel_work_sync is suggested. The only difference is that cancel_work_sync is a GPL symbol, so no non-GPL modules anymore. Signed-off-by: Cheng Renquan <crquan@gmail.com> Cc: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/as-iosched.c2
-rw-r--r--block/blk-core.c8
-rw-r--r--block/cfq-iosched.c2
-rw-r--r--include/linux/blkdev.h1
4 files changed, 3 insertions, 10 deletions
diff --git a/block/as-iosched.c b/block/as-iosched.c
index 71f0abb219ee..802b5d0d8536 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -1344,7 +1344,7 @@ static void as_exit_queue(elevator_t *e)
1344 struct as_data *ad = e->elevator_data; 1344 struct as_data *ad = e->elevator_data;
1345 1345
1346 del_timer_sync(&ad->antic_timer); 1346 del_timer_sync(&ad->antic_timer);
1347 kblockd_flush_work(&ad->antic_work); 1347 cancel_work_sync(&ad->antic_work);
1348 1348
1349 BUG_ON(!list_empty(&ad->fifo_list[REQ_SYNC])); 1349 BUG_ON(!list_empty(&ad->fifo_list[REQ_SYNC]));
1350 BUG_ON(!list_empty(&ad->fifo_list[REQ_ASYNC])); 1350 BUG_ON(!list_empty(&ad->fifo_list[REQ_ASYNC]));
diff --git a/block/blk-core.c b/block/blk-core.c
index 20e1724ccb4c..2fdcd0cff57f 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -408,7 +408,7 @@ void blk_sync_queue(struct request_queue *q)
408{ 408{
409 del_timer_sync(&q->unplug_timer); 409 del_timer_sync(&q->unplug_timer);
410 del_timer_sync(&q->timeout); 410 del_timer_sync(&q->timeout);
411 kblockd_flush_work(&q->unplug_work); 411 cancel_work_sync(&q->unplug_work);
412} 412}
413EXPORT_SYMBOL(blk_sync_queue); 413EXPORT_SYMBOL(blk_sync_queue);
414 414
@@ -2147,12 +2147,6 @@ int kblockd_schedule_work(struct request_queue *q, struct work_struct *work)
2147} 2147}
2148EXPORT_SYMBOL(kblockd_schedule_work); 2148EXPORT_SYMBOL(kblockd_schedule_work);
2149 2149
2150void kblockd_flush_work(struct work_struct *work)
2151{
2152 cancel_work_sync(work);
2153}
2154EXPORT_SYMBOL(kblockd_flush_work);
2155
2156int __init blk_dev_init(void) 2150int __init blk_dev_init(void)
2157{ 2151{
2158 kblockd_workqueue = create_workqueue("kblockd"); 2152 kblockd_workqueue = create_workqueue("kblockd");
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 6a062eebbd15..a2bfec7d6b36 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -2160,7 +2160,7 @@ out_cont:
2160static void cfq_shutdown_timer_wq(struct cfq_data *cfqd) 2160static void cfq_shutdown_timer_wq(struct cfq_data *cfqd)
2161{ 2161{
2162 del_timer_sync(&cfqd->idle_slice_timer); 2162 del_timer_sync(&cfqd->idle_slice_timer);
2163 kblockd_flush_work(&cfqd->unplug_work); 2163 cancel_work_sync(&cfqd->unplug_work);
2164} 2164}
2165 2165
2166static void cfq_put_async_queues(struct cfq_data *cfqd) 2166static void cfq_put_async_queues(struct cfq_data *cfqd)
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 482e9600f7a2..e9bb73ff1d64 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -978,7 +978,6 @@ static inline void put_dev_sector(Sector p)
978 978
979struct work_struct; 979struct work_struct;
980int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); 980int kblockd_schedule_work(struct request_queue *q, struct work_struct *work);
981void kblockd_flush_work(struct work_struct *work);
982 981
983#define MODULE_ALIAS_BLOCKDEV(major,minor) \ 982#define MODULE_ALIAS_BLOCKDEV(major,minor) \
984 MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) 983 MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))