summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2003-07-04 19:36:44 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-07-04 19:36:44 -0700
commitee66147bf85b90df796737381e057155b4bc4fe9 (patch)
tree163cf5e9c460e3de83beb94c241696ee282ad340 /include/linux
parent179b68bbaadd8296c537ac11f0f5e825c188bfa8 (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.h11
-rw-r--r--include/linux/elevator.h4
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);