diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-17 12:29:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-17 12:29:55 -0400 |
commit | c53dbf54863e7f3b0b8810dda2bdd0290006bdac (patch) | |
tree | f783074f1bec1112bf1148a077e0114a38403ad4 /block/blk-core.c | |
parent | b73b636e8987f8728c6c700377615757691b9a55 (diff) | |
parent | f73e2d13a16cc88c4faa4729967f92bfeec8a142 (diff) |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
block: remove __generic_unplug_device() from exports
block: move q->unplug_work initialization
blktrace: pass zfcp driver data
blktrace: add support for driver data
block: fix current kernel-doc warnings
block: only call ->request_fn when the queue is not stopped
block: simplify string handling in elv_iosched_store()
block: fix kernel-doc for blk_alloc_devt()
block: fix nr_phys_segments miscalculation bug
block: add partition attribute for partition number
block: add BIG FAT WARNING to CONFIG_DEBUG_BLOCK_EXT_DEVT
softirq: Add support for triggering softirq work on softirqs.
Diffstat (limited to 'block/blk-core.c')
-rw-r--r-- | block/blk-core.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 9e79a485e4f3..c3df30cfb3fc 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -257,7 +257,6 @@ void __generic_unplug_device(struct request_queue *q) | |||
257 | 257 | ||
258 | q->request_fn(q); | 258 | q->request_fn(q); |
259 | } | 259 | } |
260 | EXPORT_SYMBOL(__generic_unplug_device); | ||
261 | 260 | ||
262 | /** | 261 | /** |
263 | * generic_unplug_device - fire a request queue | 262 | * generic_unplug_device - fire a request queue |
@@ -325,6 +324,9 @@ EXPORT_SYMBOL(blk_unplug); | |||
325 | 324 | ||
326 | static void blk_invoke_request_fn(struct request_queue *q) | 325 | static void blk_invoke_request_fn(struct request_queue *q) |
327 | { | 326 | { |
327 | if (unlikely(blk_queue_stopped(q))) | ||
328 | return; | ||
329 | |||
328 | /* | 330 | /* |
329 | * one level of recursion is ok and is much faster than kicking | 331 | * one level of recursion is ok and is much faster than kicking |
330 | * the unplug handling | 332 | * the unplug handling |
@@ -399,8 +401,13 @@ void blk_sync_queue(struct request_queue *q) | |||
399 | EXPORT_SYMBOL(blk_sync_queue); | 401 | EXPORT_SYMBOL(blk_sync_queue); |
400 | 402 | ||
401 | /** | 403 | /** |
402 | * blk_run_queue - run a single device queue | 404 | * __blk_run_queue - run a single device queue |
403 | * @q: The queue to run | 405 | * @q: The queue to run |
406 | * | ||
407 | * Description: | ||
408 | * See @blk_run_queue. This variant must be called with the queue lock | ||
409 | * held and interrupts disabled. | ||
410 | * | ||
404 | */ | 411 | */ |
405 | void __blk_run_queue(struct request_queue *q) | 412 | void __blk_run_queue(struct request_queue *q) |
406 | { | 413 | { |
@@ -418,6 +425,12 @@ EXPORT_SYMBOL(__blk_run_queue); | |||
418 | /** | 425 | /** |
419 | * blk_run_queue - run a single device queue | 426 | * blk_run_queue - run a single device queue |
420 | * @q: The queue to run | 427 | * @q: The queue to run |
428 | * | ||
429 | * Description: | ||
430 | * Invoke request handling on this queue, if it has pending work to do. | ||
431 | * May be used to restart queueing when a request has completed. Also | ||
432 | * See @blk_start_queueing. | ||
433 | * | ||
421 | */ | 434 | */ |
422 | void blk_run_queue(struct request_queue *q) | 435 | void blk_run_queue(struct request_queue *q) |
423 | { | 436 | { |
@@ -501,6 +514,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id) | |||
501 | init_timer(&q->unplug_timer); | 514 | init_timer(&q->unplug_timer); |
502 | setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q); | 515 | setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q); |
503 | INIT_LIST_HEAD(&q->timeout_list); | 516 | INIT_LIST_HEAD(&q->timeout_list); |
517 | INIT_WORK(&q->unplug_work, blk_unplug_work); | ||
504 | 518 | ||
505 | kobject_init(&q->kobj, &blk_queue_ktype); | 519 | kobject_init(&q->kobj, &blk_queue_ktype); |
506 | 520 | ||
@@ -884,7 +898,8 @@ EXPORT_SYMBOL(blk_get_request); | |||
884 | * | 898 | * |
885 | * This is basically a helper to remove the need to know whether a queue | 899 | * This is basically a helper to remove the need to know whether a queue |
886 | * is plugged or not if someone just wants to initiate dispatch of requests | 900 | * is plugged or not if someone just wants to initiate dispatch of requests |
887 | * for this queue. | 901 | * for this queue. Should be used to start queueing on a device outside |
902 | * of ->request_fn() context. Also see @blk_run_queue. | ||
888 | * | 903 | * |
889 | * The queue lock must be held with interrupts disabled. | 904 | * The queue lock must be held with interrupts disabled. |
890 | */ | 905 | */ |
@@ -1003,8 +1018,9 @@ static void part_round_stats_single(int cpu, struct hd_struct *part, | |||
1003 | } | 1018 | } |
1004 | 1019 | ||
1005 | /** | 1020 | /** |
1006 | * part_round_stats() - Round off the performance stats on a struct | 1021 | * part_round_stats() - Round off the performance stats on a struct disk_stats. |
1007 | * disk_stats. | 1022 | * @cpu: cpu number for stats access |
1023 | * @part: target partition | ||
1008 | * | 1024 | * |
1009 | * The average IO queue length and utilisation statistics are maintained | 1025 | * The average IO queue length and utilisation statistics are maintained |
1010 | * by observing the current state of the queue length and the amount of | 1026 | * by observing the current state of the queue length and the amount of |