summaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 1e0b17c81..e0f578f9b 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -4,6 +4,7 @@
#include <linux/major.h>
#include <linux/sched.h>
#include <linux/genhd.h>
+#include <linux/tqueue.h>
/*
* Ok, this is an expanded form so that we can use the same
@@ -12,7 +13,14 @@
* for read/write completion.
*/
struct request {
- int dev; /* -1 if no request */
+ volatile int rq_status; /* should split this into a few status bits */
+#define RQ_INACTIVE (-1)
+#define RQ_ACTIVE 1
+#define RQ_SCSI_BUSY 0xffff
+#define RQ_SCSI_DONE 0xfffe
+#define RQ_SCSI_DISCONNECTING 0xffe0
+
+ kdev_t rq_dev;
int cmd; /* READ or WRITE */
int errors;
unsigned long sector;
@@ -28,6 +36,8 @@ struct request {
struct blk_dev_struct {
void (*request_fn)(void);
struct request * current_request;
+ struct request plug;
+ struct tq_struct plug_tq;
};
struct sec_size {
@@ -39,6 +49,10 @@ extern struct sec_size * blk_sec[MAX_BLKDEV];
extern struct blk_dev_struct blk_dev[MAX_BLKDEV];
extern struct wait_queue * wait_for_request;
extern void resetup_one_dev(struct gendisk *dev, int drive);
+extern void unplug_device(void * data);
+
+/* md needs this function to remap requests */
+extern int md_map (int minor, kdev_t *rdev, unsigned long *rsector, unsigned long size);
extern int * blk_size[MAX_BLKDEV];