History

block: get rid of kblock_schedule_delayed_work()

It was briefly introduced to allow CFQ to to delayed scheduling, but we ended up removing that feature again. So lets kill the function and export, and just switch CFQ back to the normal work schedule since it is now passing in a '0' delay from all call sites.

Jens Axboe committed 17 years ago

Commit 23e018a1 parent 48e025e3 files · +11 −25Browse files

Unified · Split

3 files
  1. block/blk-core.c +0 −8
  2. block/cfq-iosched.c +11 −13
  3. include/linux/blkdev.h +0 −4
block/blk-core.c+0−8
@@ -2492,14 +2492,6 @@ int kblockd_schedule_work(struct request_queue *q, struct work_struct *work) · 2491 unmodified lines
2492}2492}
2493EXPORT_SYMBOL(kblockd_schedule_work);2493EXPORT_SYMBOL(kblockd_schedule_work);
2494 2494
2495int kblockd_schedule_delayed_work(struct request_queue *q,
2496 struct delayed_work *work,
2497 unsigned long delay)
2498{
2499 return queue_delayed_work(kblockd_workqueue, work, delay);
2500}
2501EXPORT_SYMBOL(kblockd_schedule_delayed_work);
2502
2503int __init blk_dev_init(void)2495int __init blk_dev_init(void)
2504{2496{
2505 BUILD_BUG_ON(__REQ_NR_BITS > 8 *2497 BUILD_BUG_ON(__REQ_NR_BITS > 8 *
block/cfq-iosched.c+11−13
@@ -150,7 +150,7 @@ struct cfq_data { · 149 unmodified lines
150 * idle window management150 * idle window management
151 */151 */
152 struct timer_list idle_slice_timer;152 struct timer_list idle_slice_timer;
153 struct delayed_work unplug_work;153 struct work_struct unplug_work;
154 154
155 struct cfq_queue *active_queue;155 struct cfq_queue *active_queue;
156 struct cfq_io_context *active_cic;156 struct cfq_io_context *active_cic;
@@ -268,13 +268,11 @@ static inline int cfq_bio_sync(struct bio *bio) · 111 unmodified lines
268 * scheduler run of queue, if there are requests pending and no one in the268 * scheduler run of queue, if there are requests pending and no one in the
269 * driver that will restart queueing269 * driver that will restart queueing
270 */270 */
271static inline void cfq_schedule_dispatch(struct cfq_data *cfqd,271static inline void cfq_schedule_dispatch(struct cfq_data *cfqd)
272 unsigned long delay)
273{272{
274 if (cfqd->busy_queues) {273 if (cfqd->busy_queues) {
275 cfq_log(cfqd, "schedule dispatch");274 cfq_log(cfqd, "schedule dispatch");
276 kblockd_schedule_delayed_work(cfqd->queue, &cfqd->unplug_work,275 kblockd_schedule_work(cfqd->queue, &cfqd->unplug_work);
277 delay);
278 }276 }
279}277}
280 278
@@ -1400,7 +1398,7 @@ static void cfq_put_queue(struct cfq_queue *cfqq) · 1119 unmodified lines
1400 1398
1401 if (unlikely(cfqd->active_queue == cfqq)) {1399 if (unlikely(cfqd->active_queue == cfqq)) {
1402 __cfq_slice_expired(cfqd, cfqq, 0);1400 __cfq_slice_expired(cfqd, cfqq, 0);
1403 cfq_schedule_dispatch(cfqd, 0);1401 cfq_schedule_dispatch(cfqd);
1404 }1402 }
1405 1403
1406 kmem_cache_free(cfq_pool, cfqq);1404 kmem_cache_free(cfq_pool, cfqq);
@@ -1495,7 +1493,7 @@ static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) · 88 unmodified lines
1495{1493{
1496 if (unlikely(cfqq == cfqd->active_queue)) {1494 if (unlikely(cfqq == cfqd->active_queue)) {
1497 __cfq_slice_expired(cfqd, cfqq, 0);1495 __cfq_slice_expired(cfqd, cfqq, 0);
1498 cfq_schedule_dispatch(cfqd, 0);1496 cfq_schedule_dispatch(cfqd);
1499 }1497 }
1500 1498
1501 cfq_put_queue(cfqq);1499 cfq_put_queue(cfqq);
@@ -2213,7 +2211,7 @@ static void cfq_completed_request(struct request_queue *q, struct request *rq) · 711 unmodified lines
2213 }2211 }
2214 2212
2215 if (!rq_in_driver(cfqd))2213 if (!rq_in_driver(cfqd))
2216 cfq_schedule_dispatch(cfqd, 0);2214 cfq_schedule_dispatch(cfqd);
2217}2215}
2218 2216
2219/*2217/*
@@ -2343,7 +2341,7 @@ queue_fail: · 123 unmodified lines
2343 if (cic)2341 if (cic)
2344 put_io_context(cic->ioc);2342 put_io_context(cic->ioc);
2345 2343
2346 cfq_schedule_dispatch(cfqd, 0);2344 cfq_schedule_dispatch(cfqd);
2347 spin_unlock_irqrestore(q->queue_lock, flags);2345 spin_unlock_irqrestore(q->queue_lock, flags);
2348 cfq_log(cfqd, "set_request fail");2346 cfq_log(cfqd, "set_request fail");
2349 return 1;2347 return 1;
@@ -2352,7 +2350,7 @@ queue_fail: · 2 unmodified lines
2352static void cfq_kick_queue(struct work_struct *work)2350static void cfq_kick_queue(struct work_struct *work)
2353{2351{
2354 struct cfq_data *cfqd =2352 struct cfq_data *cfqd =
2355 container_of(work, struct cfq_data, unplug_work.work);2353 container_of(work, struct cfq_data, unplug_work);
2356 struct request_queue *q = cfqd->queue;2354 struct request_queue *q = cfqd->queue;
2357 2355
2358 spin_lock_irq(q->queue_lock);2356 spin_lock_irq(q->queue_lock);
@@ -2406,7 +2404,7 @@ static void cfq_idle_slice_timer(unsigned long data) · 47 unmodified lines
2406expire:2404expire:
2407 cfq_slice_expired(cfqd, timed_out);2405 cfq_slice_expired(cfqd, timed_out);
2408out_kick:2406out_kick:
2409 cfq_schedule_dispatch(cfqd, 0);2407 cfq_schedule_dispatch(cfqd);
2410out_cont:2408out_cont:
2411 spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);2409 spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
2412}2410}
@@ -2414,7 +2412,7 @@ out_cont: · 1 unmodified line
2414static void cfq_shutdown_timer_wq(struct cfq_data *cfqd)2412static void cfq_shutdown_timer_wq(struct cfq_data *cfqd)
2415{2413{
2416 del_timer_sync(&cfqd->idle_slice_timer);2414 del_timer_sync(&cfqd->idle_slice_timer);
2417 cancel_delayed_work_sync(&cfqd->unplug_work);2415 cancel_work_sync(&cfqd->unplug_work);
2418}2416}
2419 2417
2420static void cfq_put_async_queues(struct cfq_data *cfqd)2418static void cfq_put_async_queues(struct cfq_data *cfqd)
@@ -2496,7 +2494,7 @@ static void *cfq_init_queue(struct request_queue *q) · 75 unmodified lines
2496 cfqd->idle_slice_timer.function = cfq_idle_slice_timer;2494 cfqd->idle_slice_timer.function = cfq_idle_slice_timer;
2497 cfqd->idle_slice_timer.data = (unsigned long) cfqd;2495 cfqd->idle_slice_timer.data = (unsigned long) cfqd;
2498 2496
2499 INIT_DELAYED_WORK(&cfqd->unplug_work, cfq_kick_queue);2497 INIT_WORK(&cfqd->unplug_work, cfq_kick_queue);
2500 2498
2501 cfqd->cfq_quantum = cfq_quantum;2499 cfqd->cfq_quantum = cfq_quantum;
2502 cfqd->cfq_fifo_expire[0] = cfq_fifo_expire[0];2500 cfqd->cfq_fifo_expire[0] = cfq_fifo_expire[0];
include/linux/blkdev.h+0−4
@@ -1172,11 +1172,7 @@ static inline void put_dev_sector(Sector p) · 1171 unmodified lines
1172}1172}
1173 1173
1174struct work_struct;1174struct work_struct;
1175struct delayed_work;
1176int kblockd_schedule_work(struct request_queue *q, struct work_struct *work);1175int kblockd_schedule_work(struct request_queue *q, struct work_struct *work);
1177int kblockd_schedule_delayed_work(struct request_queue *q,
1178 struct delayed_work *work,
1179 unsigned long delay);
1180 1176
1181#define MODULE_ALIAS_BLOCKDEV(major,minor) \1177#define MODULE_ALIAS_BLOCKDEV(major,minor) \
1182 MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))1178 MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))