diff options
| author | Andrew Morton <akpm@osdl.org> | 2003-07-04 19:36:44 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-04 19:36:44 -0700 |
| commit | ee66147bf85b90df796737381e057155b4bc4fe9 (patch) | |
| tree | 163cf5e9c460e3de83beb94c241696ee282ad340 /include/linux | |
| parent | 179b68bbaadd8296c537ac11f0f5e825c188bfa8 (diff) | |
[PATCH] per queue nr_requests
From: Nick Piggin <piggin@cyberone.com.au>
This gets rid of the global queue_nr_requests and usage of BLKDEV_MAX_RQ
(the latter is now only used to set the queues' defaults).
The queue depth becomes per-queue, controlled by a sysfs entry.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/blkdev.h | 11 | ||||
| -rw-r--r-- | include/linux/elevator.h | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index e97790517973..4295d60bf661 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -22,7 +22,7 @@ typedef struct elevator_s elevator_t; struct request_pm_state; #define BLKDEV_MIN_RQ 4 -#define BLKDEV_MAX_RQ 128 +#define BLKDEV_MAX_RQ 128 /* Default maximum */ struct request_list { int count[2]; @@ -269,8 +269,15 @@ struct request_queue spinlock_t *queue_lock; /* + * queue kobject + */ + struct kobject kobj; + + /* * queue settings */ + unsigned long nr_requests; /* Max # of requests */ + unsigned short max_sectors; unsigned short max_phys_segments; unsigned short max_hw_segments; @@ -398,6 +405,8 @@ struct sec_size { unsigned block_size_bits; }; +extern int blk_register_queue(struct gendisk *disk); +extern void blk_unregister_queue(struct gendisk *disk); extern void register_disk(struct gendisk *dev); extern void generic_make_request(struct bio *bio); extern void blk_put_request(struct request *); diff --git a/include/linux/elevator.h b/include/linux/elevator.h index d793bb97dd54..b0e70562be94 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -68,8 +68,8 @@ extern int elv_queue_empty(request_queue_t *); extern struct request *elv_next_request(struct request_queue *q); extern struct request *elv_former_request(request_queue_t *, struct request *); extern struct request *elv_latter_request(request_queue_t *, struct request *); -extern int elv_register_queue(struct gendisk *); -extern void elv_unregister_queue(struct gendisk *); +extern int elv_register_queue(request_queue_t *q); +extern void elv_unregister_queue(request_queue_t *q); extern int elv_may_queue(request_queue_t *, int); extern void elv_completed_request(request_queue_t *, struct request *); extern int elv_set_request(request_queue_t *, struct request *, int); |
