diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-04 02:52:14 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-04 02:52:14 -0500 |
commit | cb9c34e6d090d376b77becaa5d29a65dec7f4272 (patch) | |
tree | 3678abce20d6825aebe3fec218057d4131e13fd6 /Documentation/blockdev/cciss.txt | |
parent | 470c66239ef0336429b35345f3f615d47341e13b (diff) | |
parent | 061e41fdb5047b1fb161e89664057835935ca1d2 (diff) |
Merge commit 'v2.6.28-rc7' into core/locking
Diffstat (limited to 'Documentation/blockdev/cciss.txt')
-rw-r--r-- | Documentation/blockdev/cciss.txt | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/Documentation/blockdev/cciss.txt b/Documentation/blockdev/cciss.txt new file mode 100644 index 000000000000..89698e8df7d4 --- /dev/null +++ b/Documentation/blockdev/cciss.txt | |||
@@ -0,0 +1,171 @@ | |||
1 | This driver is for Compaq's SMART Array Controllers. | ||
2 | |||
3 | Supported Cards: | ||
4 | ---------------- | ||
5 | |||
6 | This driver is known to work with the following cards: | ||
7 | |||
8 | * SA 5300 | ||
9 | * SA 5i | ||
10 | * SA 532 | ||
11 | * SA 5312 | ||
12 | * SA 641 | ||
13 | * SA 642 | ||
14 | * SA 6400 | ||
15 | * SA 6400 U320 Expansion Module | ||
16 | * SA 6i | ||
17 | * SA P600 | ||
18 | * SA P800 | ||
19 | * SA E400 | ||
20 | * SA P400i | ||
21 | * SA E200 | ||
22 | * SA E200i | ||
23 | * SA E500 | ||
24 | * SA P700m | ||
25 | * SA P212 | ||
26 | * SA P410 | ||
27 | * SA P410i | ||
28 | * SA P411 | ||
29 | * SA P812 | ||
30 | * SA P712m | ||
31 | * SA P711m | ||
32 | |||
33 | Detecting drive failures: | ||
34 | ------------------------- | ||
35 | |||
36 | To get the status of logical volumes and to detect physical drive | ||
37 | failures, you can use the cciss_vol_status program found here: | ||
38 | http://cciss.sourceforge.net/#cciss_utils | ||
39 | |||
40 | Device Naming: | ||
41 | -------------- | ||
42 | |||
43 | If nodes are not already created in the /dev/cciss directory, run as root: | ||
44 | |||
45 | # cd /dev | ||
46 | # ./MAKEDEV cciss | ||
47 | |||
48 | You need some entries in /dev for the cciss device. The MAKEDEV script | ||
49 | can make device nodes for you automatically. Currently the device setup | ||
50 | is as follows: | ||
51 | |||
52 | Major numbers: | ||
53 | 104 cciss0 | ||
54 | 105 cciss1 | ||
55 | 106 cciss2 | ||
56 | 105 cciss3 | ||
57 | 108 cciss4 | ||
58 | 109 cciss5 | ||
59 | 110 cciss6 | ||
60 | 111 cciss7 | ||
61 | |||
62 | Minor numbers: | ||
63 | b7 b6 b5 b4 b3 b2 b1 b0 | ||
64 | |----+----| |----+----| | ||
65 | | | | ||
66 | | +-------- Partition ID (0=wholedev, 1-15 partition) | ||
67 | | | ||
68 | +-------------------- Logical Volume number | ||
69 | |||
70 | The device naming scheme is: | ||
71 | /dev/cciss/c0d0 Controller 0, disk 0, whole device | ||
72 | /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1 | ||
73 | /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2 | ||
74 | /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3 | ||
75 | |||
76 | /dev/cciss/c1d1 Controller 1, disk 1, whole device | ||
77 | /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1 | ||
78 | /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2 | ||
79 | /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3 | ||
80 | |||
81 | SCSI tape drive and medium changer support | ||
82 | ------------------------------------------ | ||
83 | |||
84 | SCSI sequential access devices and medium changer devices are supported and | ||
85 | appropriate device nodes are automatically created. (e.g. | ||
86 | /dev/st0, /dev/st1, etc. See the "st" man page for more details.) | ||
87 | You must enable "SCSI tape drive support for Smart Array 5xxx" and | ||
88 | "SCSI support" in your kernel configuration to be able to use SCSI | ||
89 | tape drives with your Smart Array 5xxx controller. | ||
90 | |||
91 | Additionally, note that the driver will not engage the SCSI core at init | ||
92 | time. The driver must be directed to dynamically engage the SCSI core via | ||
93 | the /proc filesystem entry which the "block" side of the driver creates as | ||
94 | /proc/driver/cciss/cciss* at runtime. This is because at driver init time, | ||
95 | the SCSI core may not yet be initialized (because the driver is a block | ||
96 | driver) and attempting to register it with the SCSI core in such a case | ||
97 | would cause a hang. This is best done via an initialization script | ||
98 | (typically in /etc/init.d, but could vary depending on distribution). | ||
99 | For example: | ||
100 | |||
101 | for x in /proc/driver/cciss/cciss[0-9]* | ||
102 | do | ||
103 | echo "engage scsi" > $x | ||
104 | done | ||
105 | |||
106 | Once the SCSI core is engaged by the driver, it cannot be disengaged | ||
107 | (except by unloading the driver, if it happens to be linked as a module.) | ||
108 | |||
109 | Note also that if no sequential access devices or medium changers are | ||
110 | detected, the SCSI core will not be engaged by the action of the above | ||
111 | script. | ||
112 | |||
113 | Hot plug support for SCSI tape drives | ||
114 | ------------------------------------- | ||
115 | |||
116 | Hot plugging of SCSI tape drives is supported, with some caveats. | ||
117 | The cciss driver must be informed that changes to the SCSI bus | ||
118 | have been made. This may be done via the /proc filesystem. | ||
119 | For example: | ||
120 | |||
121 | echo "rescan" > /proc/scsi/cciss0/1 | ||
122 | |||
123 | This causes the driver to query the adapter about changes to the | ||
124 | physical SCSI buses and/or fibre channel arbitrated loop and the | ||
125 | driver to make note of any new or removed sequential access devices | ||
126 | or medium changers. The driver will output messages indicating what | ||
127 | devices have been added or removed and the controller, bus, target and | ||
128 | lun used to address the device. It then notifies the SCSI mid layer | ||
129 | of these changes. | ||
130 | |||
131 | Note that the naming convention of the /proc filesystem entries | ||
132 | contains a number in addition to the driver name. (E.g. "cciss0" | ||
133 | instead of just "cciss" which you might expect.) | ||
134 | |||
135 | Note: ONLY sequential access devices and medium changers are presented | ||
136 | as SCSI devices to the SCSI mid layer by the cciss driver. Specifically, | ||
137 | physical SCSI disk drives are NOT presented to the SCSI mid layer. The | ||
138 | physical SCSI disk drives are controlled directly by the array controller | ||
139 | hardware and it is important to prevent the kernel from attempting to directly | ||
140 | access these devices too, as if the array controller were merely a SCSI | ||
141 | controller in the same way that we are allowing it to access SCSI tape drives. | ||
142 | |||
143 | SCSI error handling for tape drives and medium changers | ||
144 | ------------------------------------------------------- | ||
145 | |||
146 | The linux SCSI mid layer provides an error handling protocol which | ||
147 | kicks into gear whenever a SCSI command fails to complete within a | ||
148 | certain amount of time (which can vary depending on the command). | ||
149 | The cciss driver participates in this protocol to some extent. The | ||
150 | normal protocol is a four step process. First the device is told | ||
151 | to abort the command. If that doesn't work, the device is reset. | ||
152 | If that doesn't work, the SCSI bus is reset. If that doesn't work | ||
153 | the host bus adapter is reset. Because the cciss driver is a block | ||
154 | driver as well as a SCSI driver and only the tape drives and medium | ||
155 | changers are presented to the SCSI mid layer, and unlike more | ||
156 | straightforward SCSI drivers, disk i/o continues through the block | ||
157 | side during the SCSI error recovery process, the cciss driver only | ||
158 | implements the first two of these actions, aborting the command, and | ||
159 | resetting the device. Additionally, most tape drives will not oblige | ||
160 | in aborting commands, and sometimes it appears they will not even | ||
161 | obey a reset command, though in most circumstances they will. In | ||
162 | the case that the command cannot be aborted and the device cannot be | ||
163 | reset, the device will be set offline. | ||
164 | |||
165 | In the event the error handling code is triggered and a tape drive is | ||
166 | successfully reset or the tardy command is successfully aborted, the | ||
167 | tape drive may still not allow i/o to continue until some command | ||
168 | is issued which positions the tape to a known position. Typically you | ||
169 | must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example) | ||
170 | before i/o can proceed again to a tape drive which was reset. | ||
171 | |||