diff options
Diffstat (limited to 'drivers/message/i2o/i2o_block.h')
-rw-r--r-- | drivers/message/i2o/i2o_block.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/drivers/message/i2o/i2o_block.h b/drivers/message/i2o/i2o_block.h new file mode 100644 index 000000000000..ddd9a15679c0 --- /dev/null +++ b/drivers/message/i2o/i2o_block.h | |||
@@ -0,0 +1,99 @@ | |||
1 | /* | ||
2 | * Block OSM structures/API | ||
3 | * | ||
4 | * Copyright (C) 1999-2002 Red Hat Software | ||
5 | * | ||
6 | * Written by Alan Cox, Building Number Three Ltd | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, but | ||
14 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * General Public License for more details. | ||
17 | * | ||
18 | * For the purpose of avoiding doubt the preferred form of the work | ||
19 | * for making modifications shall be a standards compliant form such | ||
20 | * gzipped tar and not one requiring a proprietary or patent encumbered | ||
21 | * tool to unpack. | ||
22 | * | ||
23 | * Fixes/additions: | ||
24 | * Steve Ralston: | ||
25 | * Multiple device handling error fixes, | ||
26 | * Added a queue depth. | ||
27 | * Alan Cox: | ||
28 | * FC920 has an rmw bug. Dont or in the end marker. | ||
29 | * Removed queue walk, fixed for 64bitness. | ||
30 | * Rewrote much of the code over time | ||
31 | * Added indirect block lists | ||
32 | * Handle 64K limits on many controllers | ||
33 | * Don't use indirects on the Promise (breaks) | ||
34 | * Heavily chop down the queue depths | ||
35 | * Deepak Saxena: | ||
36 | * Independent queues per IOP | ||
37 | * Support for dynamic device creation/deletion | ||
38 | * Code cleanup | ||
39 | * Support for larger I/Os through merge* functions | ||
40 | * (taken from DAC960 driver) | ||
41 | * Boji T Kannanthanam: | ||
42 | * Set the I2O Block devices to be detected in increasing | ||
43 | * order of TIDs during boot. | ||
44 | * Search and set the I2O block device that we boot off | ||
45 | * from as the first device to be claimed (as /dev/i2o/hda) | ||
46 | * Properly attach/detach I2O gendisk structure from the | ||
47 | * system gendisk list. The I2O block devices now appear in | ||
48 | * /proc/partitions. | ||
49 | * Markus Lidel <Markus.Lidel@shadowconnect.com>: | ||
50 | * Minor bugfixes for 2.6. | ||
51 | */ | ||
52 | |||
53 | #ifndef I2O_BLOCK_OSM_H | ||
54 | #define I2O_BLOCK_OSM_H | ||
55 | |||
56 | #define I2O_BLOCK_RETRY_TIME HZ/4 | ||
57 | #define I2O_BLOCK_MAX_OPEN_REQUESTS 50 | ||
58 | |||
59 | /* I2O Block OSM mempool struct */ | ||
60 | struct i2o_block_mempool { | ||
61 | kmem_cache_t *slab; | ||
62 | mempool_t *pool; | ||
63 | }; | ||
64 | |||
65 | /* I2O Block device descriptor */ | ||
66 | struct i2o_block_device { | ||
67 | struct i2o_device *i2o_dev; /* pointer to I2O device */ | ||
68 | struct gendisk *gd; | ||
69 | spinlock_t lock; /* queue lock */ | ||
70 | struct list_head open_queue; /* list of transfered, but unfinished | ||
71 | requests */ | ||
72 | unsigned int open_queue_depth; /* number of requests in the queue */ | ||
73 | |||
74 | int rcache; /* read cache flags */ | ||
75 | int wcache; /* write cache flags */ | ||
76 | int flags; | ||
77 | int power; /* power state */ | ||
78 | int media_change_flag; /* media changed flag */ | ||
79 | }; | ||
80 | |||
81 | /* I2O Block device request */ | ||
82 | struct i2o_block_request | ||
83 | { | ||
84 | struct list_head queue; | ||
85 | struct request *req; /* corresponding request */ | ||
86 | struct i2o_block_device *i2o_blk_dev; /* I2O block device */ | ||
87 | int sg_dma_direction; /* direction of DMA buffer read/write */ | ||
88 | int sg_nents; /* number of SG elements */ | ||
89 | struct scatterlist sg_table[I2O_MAX_SEGMENTS]; /* SG table */ | ||
90 | }; | ||
91 | |||
92 | /* I2O Block device delayed request */ | ||
93 | struct i2o_block_delayed_request | ||
94 | { | ||
95 | struct work_struct work; | ||
96 | struct request_queue *queue; | ||
97 | }; | ||
98 | |||
99 | #endif | ||