patch-2.4.1 linux/include/linux/blkdev.h
Next file: linux/include/linux/dn.h
Previous file: linux/include/linux/blk.h
Back to the patch index
Back to the overall index
- Lines: 92
- Date:
Mon Jan 29 23:24:59 2001
- Orig file:
v2.4.0/linux/include/linux/blkdev.h
- Orig date:
Thu Jan 4 14:50:47 2001
diff -u --recursive --new-file v2.4.0/linux/include/linux/blkdev.h linux/include/linux/blkdev.h
@@ -23,8 +23,6 @@
int elevator_sequence;
struct list_head table;
- struct list_head *free_list;
-
volatile int rq_status; /* should split this into a few status bits */
#define RQ_INACTIVE (-1)
#define RQ_ACTIVE 1
@@ -47,7 +45,6 @@
struct buffer_head * bh;
struct buffer_head * bhtail;
request_queue_t *q;
- elevator_t *e;
};
#include <linux/elevator.h>
@@ -67,9 +64,10 @@
typedef void (unplug_device_fn) (void *q);
/*
- * Default nr free requests per queue
+ * Default nr free requests per queue, ll_rw_blk will scale it down
+ * according to available RAM at init time
*/
-#define QUEUE_NR_REQUESTS 256
+#define QUEUE_NR_REQUESTS 8192
struct request_queue
{
@@ -77,6 +75,8 @@
* the queue request freelist, one for reads and one for writes
*/
struct list_head request_freelist[2];
+ struct list_head pending_freelist[2];
+ int pending_free[2];
/*
* Together with queue_head for cacheline sharing
@@ -116,7 +116,7 @@
* Is meant to protect the queue in the future instead of
* io_request_lock
*/
- spinlock_t request_lock;
+ spinlock_t queue_lock;
/*
* Tasks wait here for free request
@@ -152,6 +152,7 @@
extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size);
extern void generic_make_request(int rw, struct buffer_head * bh);
extern request_queue_t *blk_get_queue(kdev_t dev);
+extern inline request_queue_t *__blk_get_queue(kdev_t dev);
extern void blkdev_release_request(struct request *);
/*
@@ -162,6 +163,7 @@
extern void blk_queue_headactive(request_queue_t *, int);
extern void blk_queue_pluggable(request_queue_t *, plug_device_fn *);
extern void blk_queue_make_request(request_queue_t *, make_request_fn *);
+extern void generic_unplug_device(void *);
extern int * blk_size[MAX_BLKDEV];
@@ -175,9 +177,10 @@
extern int * max_segments[MAX_BLKDEV];
-#define MAX_SECTORS 254
+extern atomic_t queued_sectors;
-#define MAX_SEGMENTS MAX_SECTORS
+#define MAX_SEGMENTS 128
+#define MAX_SECTORS (MAX_SEGMENTS*8)
#define PageAlignSize(size) (((size) + PAGE_SIZE -1) & PAGE_MASK)
@@ -203,5 +206,14 @@
return 512;
}
+#define blk_finished_io(nsects) \
+ atomic_sub(nsects, &queued_sectors); \
+ if (atomic_read(&queued_sectors) < 0) { \
+ printk("block: queued_sectors < 0\n"); \
+ atomic_set(&queued_sectors, 0); \
+ }
+
+#define blk_started_io(nsects) \
+ atomic_add(nsects, &queued_sectors);
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)