diff options
| author | Randy Dunlap <randy.dunlap@oracle.com> | 2008-11-13 16:33:24 -0500 |
|---|---|---|
| committer | Randy Dunlap <randy.dunlap@oracle.com> | 2008-11-14 12:28:53 -0500 |
| commit | 31c00fc15ebd35c1647775dbfc167a15d46657fd (patch) | |
| tree | 6d8ff2a6607c94a791ccc56fd8eb625e4fdcc01a /Documentation/blockdev | |
| parent | 3edac25f2e8ac8c2a84904c140e1aeb434e73e75 (diff) | |
Create/use more directory structure in the Documentation/ tree.
Create Documentation/blockdev/ sub-directory and populate it.
Populate the Documentation/serial/ sub-directory.
Move MSI-HOWTO.txt to Documentation/PCI/.
Move ioctl-number.txt to Documentation/ioctl/.
Update all relevant 00-INDEX files.
Update all relevant Kconfig files and source files.
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Diffstat (limited to 'Documentation/blockdev')
| -rw-r--r-- | Documentation/blockdev/00-INDEX | 16 | ||||
| -rw-r--r-- | Documentation/blockdev/README.DAC960 | 756 | ||||
| -rw-r--r-- | Documentation/blockdev/cciss.txt | 171 | ||||
| -rw-r--r-- | Documentation/blockdev/cpqarray.txt | 93 | ||||
| -rw-r--r-- | Documentation/blockdev/floppy.txt | 245 | ||||
| -rw-r--r-- | Documentation/blockdev/nbd.txt | 47 | ||||
| -rw-r--r-- | Documentation/blockdev/paride.txt | 417 | ||||
| -rw-r--r-- | Documentation/blockdev/ramdisk.txt | 165 |
8 files changed, 1910 insertions, 0 deletions
diff --git a/Documentation/blockdev/00-INDEX b/Documentation/blockdev/00-INDEX new file mode 100644 index 000000000000..86f054c47013 --- /dev/null +++ b/Documentation/blockdev/00-INDEX | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | 00-INDEX | ||
| 2 | - this file | ||
| 3 | README.DAC960 | ||
| 4 | - info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux. | ||
| 5 | cciss.txt | ||
| 6 | - info, major/minor #'s for Compaq's SMART Array Controllers. | ||
| 7 | cpqarray.txt | ||
| 8 | - info on using Compaq's SMART2 Intelligent Disk Array Controllers. | ||
| 9 | floppy.txt | ||
| 10 | - notes and driver options for the floppy disk driver. | ||
| 11 | nbd.txt | ||
| 12 | - info on a TCP implementation of a network block device. | ||
| 13 | paride.txt | ||
| 14 | - information about the parallel port IDE subsystem. | ||
| 15 | ramdisk.txt | ||
| 16 | - short guide on how to set up and use the RAM disk. | ||
diff --git a/Documentation/blockdev/README.DAC960 b/Documentation/blockdev/README.DAC960 new file mode 100644 index 000000000000..0e8f618ab534 --- /dev/null +++ b/Documentation/blockdev/README.DAC960 | |||
| @@ -0,0 +1,756 @@ | |||
| 1 | Linux Driver for Mylex DAC960/AcceleRAID/eXtremeRAID PCI RAID Controllers | ||
| 2 | |||
| 3 | Version 2.2.11 for Linux 2.2.19 | ||
| 4 | Version 2.4.11 for Linux 2.4.12 | ||
| 5 | |||
| 6 | PRODUCTION RELEASE | ||
| 7 | |||
| 8 | 11 October 2001 | ||
| 9 | |||
| 10 | Leonard N. Zubkoff | ||
| 11 | Dandelion Digital | ||
| 12 | lnz@dandelion.com | ||
| 13 | |||
| 14 | Copyright 1998-2001 by Leonard N. Zubkoff <lnz@dandelion.com> | ||
| 15 | |||
| 16 | |||
| 17 | INTRODUCTION | ||
| 18 | |||
| 19 | Mylex, Inc. designs and manufactures a variety of high performance PCI RAID | ||
| 20 | controllers. Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, | ||
| 21 | California 94555, USA and can be reached at 510.796.6100 or on the World Wide | ||
| 22 | Web at http://www.mylex.com. Mylex Technical Support can be reached by | ||
| 23 | electronic mail at mylexsup@us.ibm.com, by voice at 510.608.2400, or by FAX at | ||
| 24 | 510.745.7715. Contact information for offices in Europe and Japan is available | ||
| 25 | on their Web site. | ||
| 26 | |||
| 27 | The latest information on Linux support for DAC960 PCI RAID Controllers, as | ||
| 28 | well as the most recent release of this driver, will always be available from | ||
| 29 | my Linux Home Page at URL "http://www.dandelion.com/Linux/". The Linux DAC960 | ||
| 30 | driver supports all current Mylex PCI RAID controllers including the new | ||
| 31 | eXtremeRAID 2000/3000 and AcceleRAID 352/170/160 models which have an entirely | ||
| 32 | new firmware interface from the older eXtremeRAID 1100, AcceleRAID 150/200/250, | ||
| 33 | and DAC960PJ/PG/PU/PD/PL. See below for a complete controller list as well as | ||
| 34 | minimum firmware version requirements. For simplicity, in most places this | ||
| 35 | documentation refers to DAC960 generically rather than explicitly listing all | ||
| 36 | the supported models. | ||
| 37 | |||
| 38 | Driver bug reports should be sent via electronic mail to "lnz@dandelion.com". | ||
| 39 | Please include with the bug report the complete configuration messages reported | ||
| 40 | by the driver at startup, along with any subsequent system messages relevant to | ||
| 41 | the controller's operation, and a detailed description of your system's | ||
| 42 | hardware configuration. Driver bugs are actually quite rare; if you encounter | ||
| 43 | problems with disks being marked offline, for example, please contact Mylex | ||
| 44 | Technical Support as the problem is related to the hardware configuration | ||
| 45 | rather than the Linux driver. | ||
| 46 | |||
| 47 | Please consult the RAID controller documentation for detailed information | ||
| 48 | regarding installation and configuration of the controllers. This document | ||
| 49 | primarily provides information specific to the Linux support. | ||
| 50 | |||
| 51 | |||
| 52 | DRIVER FEATURES | ||
| 53 | |||
| 54 | The DAC960 RAID controllers are supported solely as high performance RAID | ||
| 55 | controllers, not as interfaces to arbitrary SCSI devices. The Linux DAC960 | ||
| 56 | driver operates at the block device level, the same level as the SCSI and IDE | ||
| 57 | drivers. Unlike other RAID controllers currently supported on Linux, the | ||
| 58 | DAC960 driver is not dependent on the SCSI subsystem, and hence avoids all the | ||
| 59 | complexity and unnecessary code that would be associated with an implementation | ||
| 60 | as a SCSI driver. The DAC960 driver is designed for as high a performance as | ||
| 61 | possible with no compromises or extra code for compatibility with lower | ||
| 62 | performance devices. The DAC960 driver includes extensive error logging and | ||
| 63 | online configuration management capabilities. Except for initial configuration | ||
| 64 | of the controller and adding new disk drives, most everything can be handled | ||
| 65 | from Linux while the system is operational. | ||
| 66 | |||
| 67 | The DAC960 driver is architected to support up to 8 controllers per system. | ||
| 68 | Each DAC960 parallel SCSI controller can support up to 15 disk drives per | ||
| 69 | channel, for a maximum of 60 drives on a four channel controller; the fibre | ||
| 70 | channel eXtremeRAID 3000 controller supports up to 125 disk drives per loop for | ||
| 71 | a total of 250 drives. The drives installed on a controller are divided into | ||
| 72 | one or more "Drive Groups", and then each Drive Group is subdivided further | ||
| 73 | into 1 to 32 "Logical Drives". Each Logical Drive has a specific RAID Level | ||
| 74 | and caching policy associated with it, and it appears to Linux as a single | ||
| 75 | block device. Logical Drives are further subdivided into up to 7 partitions | ||
| 76 | through the normal Linux and PC disk partitioning schemes. Logical Drives are | ||
| 77 | also known as "System Drives", and Drive Groups are also called "Packs". Both | ||
| 78 | terms are in use in the Mylex documentation; I have chosen to standardize on | ||
| 79 | the more generic "Logical Drive" and "Drive Group". | ||
| 80 | |||
| 81 | DAC960 RAID disk devices are named in the style of the obsolete Device File | ||
| 82 | System (DEVFS). The device corresponding to Logical Drive D on Controller C | ||
| 83 | is referred to as /dev/rd/cCdD, and the partitions are called /dev/rd/cCdDp1 | ||
| 84 | through /dev/rd/cCdDp7. For example, partition 3 of Logical Drive 5 on | ||
| 85 | Controller 2 is referred to as /dev/rd/c2d5p3. Note that unlike with SCSI | ||
| 86 | disks the device names will not change in the event of a disk drive failure. | ||
| 87 | The DAC960 driver is assigned major numbers 48 - 55 with one major number per | ||
| 88 | controller. The 8 bits of minor number are divided into 5 bits for the Logical | ||
| 89 | Drive and 3 bits for the partition. | ||
| 90 | |||
| 91 | |||
| 92 | SUPPORTED DAC960/AcceleRAID/eXtremeRAID PCI RAID CONTROLLERS | ||
| 93 | |||
| 94 | The following list comprises the supported DAC960, AcceleRAID, and eXtremeRAID | ||
| 95 | PCI RAID Controllers as of the date of this document. It is recommended that | ||
| 96 | anyone purchasing a Mylex PCI RAID Controller not in the following table | ||
| 97 | contact the author beforehand to verify that it is or will be supported. | ||
| 98 | |||
| 99 | eXtremeRAID 3000 | ||
| 100 | 1 Wide Ultra-2/LVD SCSI channel | ||
| 101 | 2 External Fibre FC-AL channels | ||
| 102 | 233MHz StrongARM SA 110 Processor | ||
| 103 | 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) | ||
| 104 | 32MB/64MB ECC SDRAM Memory | ||
| 105 | |||
| 106 | eXtremeRAID 2000 | ||
| 107 | 4 Wide Ultra-160 LVD SCSI channels | ||
| 108 | 233MHz StrongARM SA 110 Processor | ||
| 109 | 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) | ||
| 110 | 32MB/64MB ECC SDRAM Memory | ||
| 111 | |||
| 112 | AcceleRAID 352 | ||
| 113 | 2 Wide Ultra-160 LVD SCSI channels | ||
| 114 | 100MHz Intel i960RN RISC Processor | ||
| 115 | 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) | ||
| 116 | 32MB/64MB ECC SDRAM Memory | ||
| 117 | |||
| 118 | AcceleRAID 170 | ||
| 119 | 1 Wide Ultra-160 LVD SCSI channel | ||
| 120 | 100MHz Intel i960RM RISC Processor | ||
| 121 | 16MB/32MB/64MB ECC SDRAM Memory | ||
| 122 | |||
| 123 | AcceleRAID 160 (AcceleRAID 170LP) | ||
| 124 | 1 Wide Ultra-160 LVD SCSI channel | ||
| 125 | 100MHz Intel i960RS RISC Processor | ||
| 126 | Built in 16M ECC SDRAM Memory | ||
| 127 | PCI Low Profile Form Factor - fit for 2U height | ||
| 128 | |||
| 129 | eXtremeRAID 1100 (DAC1164P) | ||
| 130 | 3 Wide Ultra-2/LVD SCSI channels | ||
| 131 | 233MHz StrongARM SA 110 Processor | ||
| 132 | 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) | ||
| 133 | 16MB/32MB/64MB Parity SDRAM Memory with Battery Backup | ||
| 134 | |||
| 135 | AcceleRAID 250 (DAC960PTL1) | ||
| 136 | Uses onboard Symbios SCSI chips on certain motherboards | ||
| 137 | Also includes one onboard Wide Ultra-2/LVD SCSI Channel | ||
| 138 | 66MHz Intel i960RD RISC Processor | ||
| 139 | 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory | ||
| 140 | |||
| 141 | AcceleRAID 200 (DAC960PTL0) | ||
| 142 | Uses onboard Symbios SCSI chips on certain motherboards | ||
| 143 | Includes no onboard SCSI Channels | ||
| 144 | 66MHz Intel i960RD RISC Processor | ||
| 145 | 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory | ||
| 146 | |||
| 147 | AcceleRAID 150 (DAC960PRL) | ||
| 148 | Uses onboard Symbios SCSI chips on certain motherboards | ||
| 149 | Also includes one onboard Wide Ultra-2/LVD SCSI Channel | ||
| 150 | 33MHz Intel i960RP RISC Processor | ||
| 151 | 4MB Parity EDO Memory | ||
| 152 | |||
| 153 | DAC960PJ 1/2/3 Wide Ultra SCSI-3 Channels | ||
| 154 | 66MHz Intel i960RD RISC Processor | ||
| 155 | 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory | ||
| 156 | |||
| 157 | DAC960PG 1/2/3 Wide Ultra SCSI-3 Channels | ||
| 158 | 33MHz Intel i960RP RISC Processor | ||
| 159 | 4MB/8MB ECC EDO Memory | ||
| 160 | |||
| 161 | DAC960PU 1/2/3 Wide Ultra SCSI-3 Channels | ||
| 162 | Intel i960CF RISC Processor | ||
| 163 | 4MB/8MB EDRAM or 2MB/4MB/8MB/16MB/32MB DRAM Memory | ||
| 164 | |||
| 165 | DAC960PD 1/2/3 Wide Fast SCSI-2 Channels | ||
| 166 | Intel i960CF RISC Processor | ||
| 167 | 4MB/8MB EDRAM or 2MB/4MB/8MB/16MB/32MB DRAM Memory | ||
| 168 | |||
| 169 | DAC960PL 1/2/3 Wide Fast SCSI-2 Channels | ||
| 170 | Intel i960 RISC Processor | ||
| 171 | 2MB/4MB/8MB/16MB/32MB DRAM Memory | ||
| 172 | |||
| 173 | DAC960P 1/2/3 Wide Fast SCSI-2 Channels | ||
| 174 | Intel i960 RISC Processor | ||
| 175 | 2MB/4MB/8MB/16MB/32MB DRAM Memory | ||
| 176 | |||
| 177 | For the eXtremeRAID 2000/3000 and AcceleRAID 352/170/160, firmware version | ||
| 178 | 6.00-01 or above is required. | ||
| 179 | |||
| 180 | For the eXtremeRAID 1100, firmware version 5.06-0-52 or above is required. | ||
| 181 | |||
| 182 | For the AcceleRAID 250, 200, and 150, firmware version 4.06-0-57 or above is | ||
| 183 | required. | ||
| 184 | |||
| 185 | For the DAC960PJ and DAC960PG, firmware version 4.06-0-00 or above is required. | ||
| 186 | |||
| 187 | For the DAC960PU, DAC960PD, DAC960PL, and DAC960P, either firmware version | ||
| 188 | 3.51-0-04 or above is required (for dual Flash ROM controllers), or firmware | ||
| 189 | version 2.73-0-00 or above is required (for single Flash ROM controllers) | ||
| 190 | |||
| 191 | Please note that not all SCSI disk drives are suitable for use with DAC960 | ||
| 192 | controllers, and only particular firmware versions of any given model may | ||
| 193 | actually function correctly. Similarly, not all motherboards have a BIOS that | ||
| 194 | properly initializes the AcceleRAID 250, AcceleRAID 200, AcceleRAID 150, | ||
| 195 | DAC960PJ, and DAC960PG because the Intel i960RD/RP is a multi-function device. | ||
| 196 | If in doubt, contact Mylex RAID Technical Support (mylexsup@us.ibm.com) to | ||
| 197 | verify compatibility. Mylex makes available a hard disk compatibility list at | ||
| 198 | http://www.mylex.com/support/hdcomp/hd-lists.html. | ||
| 199 | |||
| 200 | |||
| 201 | DRIVER INSTALLATION | ||
| 202 | |||
| 203 | This distribution was prepared for Linux kernel version 2.2.19 or 2.4.12. | ||
| 204 | |||
| 205 | To install the DAC960 RAID driver, you may use the following commands, | ||
| 206 | replacing "/usr/src" with wherever you keep your Linux kernel source tree: | ||
| 207 | |||
| 208 | cd /usr/src | ||
| 209 | tar -xvzf DAC960-2.2.11.tar.gz (or DAC960-2.4.11.tar.gz) | ||
| 210 | mv README.DAC960 linux/Documentation | ||
| 211 | mv DAC960.[ch] linux/drivers/block | ||
| 212 | patch -p0 < DAC960.patch (if DAC960.patch is included) | ||
| 213 | cd linux | ||
| 214 | make config | ||
| 215 | make bzImage (or zImage) | ||
| 216 | |||
| 217 | Then install "arch/i386/boot/bzImage" or "arch/i386/boot/zImage" as your | ||
| 218 | standard kernel, run lilo if appropriate, and reboot. | ||
| 219 | |||
| 220 | To create the necessary devices in /dev, the "make_rd" script included in | ||
| 221 | "DAC960-Utilities.tar.gz" from http://www.dandelion.com/Linux/ may be used. | ||
| 222 | LILO 21 and FDISK v2.9 include DAC960 support; also included in this archive | ||
| 223 | are patches to LILO 20 and FDISK v2.8 that add DAC960 support, along with | ||
| 224 | statically linked executables of LILO and FDISK. This modified version of LILO | ||
| 225 | will allow booting from a DAC960 controller and/or mounting the root file | ||
| 226 | system from a DAC960. | ||
| 227 | |||
| 228 | Red Hat Linux 6.0 and SuSE Linux 6.1 include support for Mylex PCI RAID | ||
| 229 | controllers. Installing directly onto a DAC960 may be problematic from other | ||
| 230 | Linux distributions until their installation utilities are updated. | ||
| 231 | |||
| 232 | |||
| 233 | INSTALLATION NOTES | ||
| 234 | |||
| 235 | Before installing Linux or adding DAC960 logical drives to an existing Linux | ||
| 236 | system, the controller must first be configured to provide one or more logical | ||
| 237 | drives using the BIOS Configuration Utility or DACCF. Please note that since | ||
| 238 | there are only at most 6 usable partitions on each logical drive, systems | ||
| 239 | requiring more partitions should subdivide a drive group into multiple logical | ||
| 240 | drives, each of which can have up to 6 usable partitions. Also, note that with | ||
| 241 | large disk arrays it is advisable to enable the 8GB BIOS Geometry (255/63) | ||
| 242 | rather than accepting the default 2GB BIOS Geometry (128/32); failing to so do | ||
| 243 | will cause the logical drive geometry to have more than 65535 cylinders which | ||
| 244 | will make it impossible for FDISK to be used properly. The 8GB BIOS Geometry | ||
| 245 | can be enabled by configuring the DAC960 BIOS, which is accessible via Alt-M | ||
| 246 | during the BIOS initialization sequence. | ||
| 247 | |||
| 248 | For maximum performance and the most efficient E2FSCK performance, it is | ||
| 249 | recommended that EXT2 file systems be built with a 4KB block size and 16 block | ||
| 250 | stride to match the DAC960 controller's 64KB default stripe size. The command | ||
| 251 | "mke2fs -b 4096 -R stride=16 <device>" is appropriate. Unless there will be a | ||
| 252 | large number of small files on the file systems, it is also beneficial to add | ||
| 253 | the "-i 16384" option to increase the bytes per inode parameter thereby | ||
| 254 | reducing the file system metadata. Finally, on systems that will only be run | ||
| 255 | with Linux 2.2 or later kernels it is beneficial to enable sparse superblocks | ||
| 256 | with the "-s 1" option. | ||
| 257 | |||
| 258 | |||
| 259 | DAC960 ANNOUNCEMENTS MAILING LIST | ||
| 260 | |||
| 261 | The DAC960 Announcements Mailing List provides a forum for informing Linux | ||
| 262 | users of new driver releases and other announcements regarding Linux support | ||
| 263 | for DAC960 PCI RAID Controllers. To join the mailing list, send a message to | ||
| 264 | "dac960-announce-request@dandelion.com" with the line "subscribe" in the | ||
| 265 | message body. | ||
| 266 | |||
| 267 | |||
| 268 | CONTROLLER CONFIGURATION AND STATUS MONITORING | ||
| 269 | |||
| 270 | The DAC960 RAID controllers running firmware 4.06 or above include a Background | ||
| 271 | Initialization facility so that system downtime is minimized both for initial | ||
| 272 | installation and subsequent configuration of additional storage. The BIOS | ||
| 273 | Configuration Utility (accessible via Alt-R during the BIOS initialization | ||
| 274 | sequence) is used to quickly configure the controller, and then the logical | ||
| 275 | drives that have been created are available for immediate use even while they | ||
| 276 | are still being initialized by the controller. The primary need for online | ||
| 277 | configuration and status monitoring is then to avoid system downtime when disk | ||
| 278 | drives fail and must be replaced. Mylex's online monitoring and configuration | ||
| 279 | utilities are being ported to Linux and will become available at some point in | ||
| 280 | the future. Note that with a SAF-TE (SCSI Accessed Fault-Tolerant Enclosure) | ||
| 281 | enclosure, the controller is able to rebuild failed drives automatically as | ||
| 282 | soon as a drive replacement is made available. | ||
| 283 | |||
| 284 | The primary interfaces for controller configuration and status monitoring are | ||
| 285 | special files created in the /proc/rd/... hierarchy along with the normal | ||
| 286 | system console logging mechanism. Whenever the system is operating, the DAC960 | ||
| 287 | driver queries each controller for status information every 10 seconds, and | ||
| 288 | checks for additional conditions every 60 seconds. The initial status of each | ||
| 289 | controller is always available for controller N in /proc/rd/cN/initial_status, | ||
| 290 | and the current status as of the last status monitoring query is available in | ||
| 291 | /proc/rd/cN/current_status. In addition, status changes are also logged by the | ||
| 292 | driver to the system console and will appear in the log files maintained by | ||
| 293 | syslog. The progress of asynchronous rebuild or consistency check operations | ||
| 294 | is also available in /proc/rd/cN/current_status, and progress messages are | ||
| 295 | logged to the system console at most every 60 seconds. | ||
| 296 | |||
| 297 | Starting with the 2.2.3/2.0.3 versions of the driver, the status information | ||
| 298 | available in /proc/rd/cN/initial_status and /proc/rd/cN/current_status has been | ||
| 299 | augmented to include the vendor, model, revision, and serial number (if | ||
| 300 | available) for each physical device found connected to the controller: | ||
| 301 | |||
| 302 | ***** DAC960 RAID Driver Version 2.2.3 of 19 August 1999 ***** | ||
| 303 | Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com> | ||
| 304 | Configuring Mylex DAC960PRL PCI RAID Controller | ||
| 305 | Firmware Version: 4.07-0-07, Channels: 1, Memory Size: 16MB | ||
| 306 | PCI Bus: 1, Device: 4, Function: 1, I/O Address: Unassigned | ||
| 307 | PCI Address: 0xFE300000 mapped at 0xA0800000, IRQ Channel: 21 | ||
| 308 | Controller Queue Depth: 128, Maximum Blocks per Command: 128 | ||
| 309 | Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 | ||
| 310 | Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 | ||
| 311 | SAF-TE Enclosure Management Enabled | ||
| 312 | Physical Devices: | ||
| 313 | 0:0 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 314 | Serial Number: 68016775HA | ||
| 315 | Disk Status: Online, 17928192 blocks | ||
| 316 | 0:1 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 317 | Serial Number: 68004E53HA | ||
| 318 | Disk Status: Online, 17928192 blocks | ||
| 319 | 0:2 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 320 | Serial Number: 13013935HA | ||
| 321 | Disk Status: Online, 17928192 blocks | ||
| 322 | 0:3 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 323 | Serial Number: 13016897HA | ||
| 324 | Disk Status: Online, 17928192 blocks | ||
| 325 | 0:4 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 326 | Serial Number: 68019905HA | ||
| 327 | Disk Status: Online, 17928192 blocks | ||
| 328 | 0:5 Vendor: IBM Model: DRVS09D Revision: 0270 | ||
| 329 | Serial Number: 68012753HA | ||
| 330 | Disk Status: Online, 17928192 blocks | ||
| 331 | 0:6 Vendor: ESG-SHV Model: SCA HSBP M6 Revision: 0.61 | ||
| 332 | Logical Drives: | ||
| 333 | /dev/rd/c0d0: RAID-5, Online, 89640960 blocks, Write Thru | ||
| 334 | No Rebuild or Consistency Check in Progress | ||
| 335 | |||
| 336 | To simplify the monitoring process for custom software, the special file | ||
| 337 | /proc/rd/status returns "OK" when all DAC960 controllers in the system are | ||
| 338 | operating normally and no failures have occurred, or "ALERT" if any logical | ||
| 339 | drives are offline or critical or any non-standby physical drives are dead. | ||
| 340 | |||
| 341 | Configuration commands for controller N are available via the special file | ||
| 342 | /proc/rd/cN/user_command. A human readable command can be written to this | ||
| 343 | special file to initiate a configuration operation, and the results of the | ||
| 344 | operation can then be read back from the special file in addition to being | ||
| 345 | logged to the system console. The shell command sequence | ||
| 346 | |||
| 347 | echo "<configuration-command>" > /proc/rd/c0/user_command | ||
| 348 | cat /proc/rd/c0/user_command | ||
| 349 | |||
| 350 | is typically used to execute configuration commands. The configuration | ||
| 351 | commands are: | ||
| 352 | |||
| 353 | flush-cache | ||
| 354 | |||
| 355 | The "flush-cache" command flushes the controller's cache. The system | ||
| 356 | automatically flushes the cache at shutdown or if the driver module is | ||
| 357 | unloaded, so this command is only needed to be certain a write back cache | ||
| 358 | is flushed to disk before the system is powered off by a command to a UPS. | ||
| 359 | Note that the flush-cache command also stops an asynchronous rebuild or | ||
| 360 | consistency check, so it should not be used except when the system is being | ||
| 361 | halted. | ||
| 362 | |||
| 363 | kill <channel>:<target-id> | ||
| 364 | |||
| 365 | The "kill" command marks the physical drive <channel>:<target-id> as DEAD. | ||
| 366 | This command is provided primarily for testing, and should not be used | ||
| 367 | during normal system operation. | ||
| 368 | |||
| 369 | make-online <channel>:<target-id> | ||
| 370 | |||
| 371 | The "make-online" command changes the physical drive <channel>:<target-id> | ||
| 372 | from status DEAD to status ONLINE. In cases where multiple physical drives | ||
| 373 | have been killed simultaneously, this command may be used to bring all but | ||
| 374 | one of them back online, after which a rebuild to the final drive is | ||
| 375 | necessary. | ||
| 376 | |||
| 377 | Warning: make-online should only be used on a dead physical drive that is | ||
| 378 | an active part of a drive group, never on a standby drive. The command | ||
| 379 | should never be used on a dead drive that is part of a critical logical | ||
| 380 | drive; rebuild should be used if only a single drive is dead. | ||
| 381 | |||
| 382 | make-standby <channel>:<target-id> | ||
| 383 | |||
| 384 | The "make-standby" command changes physical drive <channel>:<target-id> | ||
| 385 | from status DEAD to status STANDBY. It should only be used in cases where | ||
| 386 | a dead drive was replaced after an automatic rebuild was performed onto a | ||
| 387 | standby drive. It cannot be used to add a standby drive to the controller | ||
| 388 | configuration if one was not created initially; the BIOS Configuration | ||
| 389 | Utility must be used for that currently. | ||
| 390 | |||
| 391 | rebuild <channel>:<target-id> | ||
| 392 | |||
| 393 | The "rebuild" command initiates an asynchronous rebuild onto physical drive | ||
| 394 | <channel>:<target-id>. It should only be used when a dead drive has been | ||
| 395 | replaced. | ||
| 396 | |||
| 397 | check-consistency <logical-drive-number> | ||
| 398 | |||
| 399 | The "check-consistency" command initiates an asynchronous consistency check | ||
| 400 | of <logical-drive-number> with automatic restoration. It can be used | ||
| 401 | whenever it is desired to verify the consistency of the redundancy | ||
| 402 | information. | ||
| 403 | |||
| 404 | cancel-rebuild | ||
| 405 | cancel-consistency-check | ||
| 406 | |||
| 407 | The "cancel-rebuild" and "cancel-consistency-check" commands cancel any | ||
| 408 | rebuild or consistency check operations previously initiated. | ||
| 409 | |||
| 410 | |||
| 411 | EXAMPLE I - DRIVE FAILURE WITHOUT A STANDBY DRIVE | ||
| 412 | |||
| 413 | The following annotated logs demonstrate the controller configuration and and | ||
| 414 | online status monitoring capabilities of the Linux DAC960 Driver. The test | ||
| 415 | configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a | ||
| 416 | DAC960PJ controller. The physical drives are configured into a single drive | ||
| 417 | group without a standby drive, and the drive group has been configured into two | ||
| 418 | logical drives, one RAID-5 and one RAID-6. Note that these logs are from an | ||
| 419 | earlier version of the driver and the messages have changed somewhat with newer | ||
| 420 | releases, but the functionality remains similar. First, here is the current | ||
| 421 | status of the RAID configuration: | ||
| 422 | |||
| 423 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 424 | ***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** | ||
| 425 | Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com> | ||
| 426 | Configuring Mylex DAC960PJ PCI RAID Controller | ||
| 427 | Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB | ||
| 428 | PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned | ||
| 429 | PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 | ||
| 430 | Controller Queue Depth: 128, Maximum Blocks per Command: 128 | ||
| 431 | Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 | ||
| 432 | Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 | ||
| 433 | Physical Devices: | ||
| 434 | 0:1 - Disk: Online, 2201600 blocks | ||
| 435 | 0:2 - Disk: Online, 2201600 blocks | ||
| 436 | 0:3 - Disk: Online, 2201600 blocks | ||
| 437 | 1:1 - Disk: Online, 2201600 blocks | ||
| 438 | 1:2 - Disk: Online, 2201600 blocks | ||
| 439 | 1:3 - Disk: Online, 2201600 blocks | ||
| 440 | Logical Drives: | ||
| 441 | /dev/rd/c0d0: RAID-5, Online, 5498880 blocks, Write Thru | ||
| 442 | /dev/rd/c0d1: RAID-6, Online, 3305472 blocks, Write Thru | ||
| 443 | No Rebuild or Consistency Check in Progress | ||
| 444 | |||
| 445 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 446 | OK | ||
| 447 | |||
| 448 | The above messages indicate that everything is healthy, and /proc/rd/status | ||
| 449 | returns "OK" indicating that there are no problems with any DAC960 controller | ||
| 450 | in the system. For demonstration purposes, while I/O is active Physical Drive | ||
| 451 | 1:1 is now disconnected, simulating a drive failure. The failure is noted by | ||
| 452 | the driver within 10 seconds of the controller's having detected it, and the | ||
| 453 | driver logs the following console status messages indicating that Logical | ||
| 454 | Drives 0 and 1 are now CRITICAL as a result of Physical Drive 1:1 being DEAD: | ||
| 455 | |||
| 456 | DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 | ||
| 457 | DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 | ||
| 458 | DAC960#0: Physical Drive 1:1 killed because of timeout on SCSI command | ||
| 459 | DAC960#0: Physical Drive 1:1 is now DEAD | ||
| 460 | DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL | ||
| 461 | DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL | ||
| 462 | |||
| 463 | The Sense Keys logged here are just Check Condition / Unit Attention conditions | ||
| 464 | arising from a SCSI bus reset that is forced by the controller during its error | ||
| 465 | recovery procedures. Concurrently with the above, the driver status available | ||
| 466 | from /proc/rd also reflects the drive failure. The status message in | ||
| 467 | /proc/rd/status has changed from "OK" to "ALERT": | ||
| 468 | |||
| 469 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 470 | ALERT | ||
| 471 | |||
| 472 | and /proc/rd/c0/current_status has been updated: | ||
| 473 | |||
| 474 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 475 | ... | ||
| 476 | Physical Devices: | ||
| 477 | 0:1 - Disk: Online, 2201600 blocks | ||
| 478 | 0:2 - Disk: Online, 2201600 blocks | ||
| 479 | 0:3 - Disk: Online, 2201600 blocks | ||
| 480 | 1:1 - Disk: Dead, 2201600 blocks | ||
| 481 | 1:2 - Disk: Online, 2201600 blocks | ||
| 482 | 1:3 - Disk: Online, 2201600 blocks | ||
| 483 | Logical Drives: | ||
| 484 | /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru | ||
| 485 | /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru | ||
| 486 | No Rebuild or Consistency Check in Progress | ||
| 487 | |||
| 488 | Since there are no standby drives configured, the system can continue to access | ||
| 489 | the logical drives in a performance degraded mode until the failed drive is | ||
| 490 | replaced and a rebuild operation completed to restore the redundancy of the | ||
| 491 | logical drives. Once Physical Drive 1:1 is replaced with a properly | ||
| 492 | functioning drive, or if the physical drive was killed without having failed | ||
| 493 | (e.g., due to electrical problems on the SCSI bus), the user can instruct the | ||
| 494 | controller to initiate a rebuild operation onto the newly replaced drive: | ||
| 495 | |||
| 496 | gwynedd:/u/lnz# echo "rebuild 1:1" > /proc/rd/c0/user_command | ||
| 497 | gwynedd:/u/lnz# cat /proc/rd/c0/user_command | ||
| 498 | Rebuild of Physical Drive 1:1 Initiated | ||
| 499 | |||
| 500 | The echo command instructs the controller to initiate an asynchronous rebuild | ||
| 501 | operation onto Physical Drive 1:1, and the status message that results from the | ||
| 502 | operation is then available for reading from /proc/rd/c0/user_command, as well | ||
| 503 | as being logged to the console by the driver. | ||
| 504 | |||
| 505 | Within 10 seconds of this command the driver logs the initiation of the | ||
| 506 | asynchronous rebuild operation: | ||
| 507 | |||
| 508 | DAC960#0: Rebuild of Physical Drive 1:1 Initiated | ||
| 509 | DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01 | ||
| 510 | DAC960#0: Physical Drive 1:1 is now WRITE-ONLY | ||
| 511 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 1% completed | ||
| 512 | |||
| 513 | and /proc/rd/c0/current_status is updated: | ||
| 514 | |||
| 515 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 516 | ... | ||
| 517 | Physical Devices: | ||
| 518 | 0:1 - Disk: Online, 2201600 blocks | ||
| 519 | 0:2 - Disk: Online, 2201600 blocks | ||
| 520 | 0:3 - Disk: Online, 2201600 blocks | ||
| 521 | 1:1 - Disk: Write-Only, 2201600 blocks | ||
| 522 | 1:2 - Disk: Online, 2201600 blocks | ||
| 523 | 1:3 - Disk: Online, 2201600 blocks | ||
| 524 | Logical Drives: | ||
| 525 | /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru | ||
| 526 | /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru | ||
| 527 | Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 6% completed | ||
| 528 | |||
| 529 | As the rebuild progresses, the current status in /proc/rd/c0/current_status is | ||
| 530 | updated every 10 seconds: | ||
| 531 | |||
| 532 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 533 | ... | ||
| 534 | Physical Devices: | ||
| 535 | 0:1 - Disk: Online, 2201600 blocks | ||
| 536 | 0:2 - Disk: Online, 2201600 blocks | ||
| 537 | 0:3 - Disk: Online, 2201600 blocks | ||
| 538 | 1:1 - Disk: Write-Only, 2201600 blocks | ||
| 539 | 1:2 - Disk: Online, 2201600 blocks | ||
| 540 | 1:3 - Disk: Online, 2201600 blocks | ||
| 541 | Logical Drives: | ||
| 542 | /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru | ||
| 543 | /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru | ||
| 544 | Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 15% completed | ||
| 545 | |||
| 546 | and every minute a progress message is logged to the console by the driver: | ||
| 547 | |||
| 548 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 32% completed | ||
| 549 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 63% completed | ||
| 550 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 94% completed | ||
| 551 | DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 94% completed | ||
| 552 | |||
| 553 | Finally, the rebuild completes successfully. The driver logs the status of the | ||
| 554 | logical and physical drives and the rebuild completion: | ||
| 555 | |||
| 556 | DAC960#0: Rebuild Completed Successfully | ||
| 557 | DAC960#0: Physical Drive 1:1 is now ONLINE | ||
| 558 | DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE | ||
| 559 | DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now ONLINE | ||
| 560 | |||
| 561 | /proc/rd/c0/current_status is updated: | ||
| 562 | |||
| 563 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 564 | ... | ||
| 565 | Physical Devices: | ||
| 566 | 0:1 - Disk: Online, 2201600 blocks | ||
| 567 | 0:2 - Disk: Online, 2201600 blocks | ||
| 568 | 0:3 - Disk: Online, 2201600 blocks | ||
| 569 | 1:1 - Disk: Online, 2201600 blocks | ||
| 570 | 1:2 - Disk: Online, 2201600 blocks | ||
| 571 | 1:3 - Disk: Online, 2201600 blocks | ||
| 572 | Logical Drives: | ||
| 573 | /dev/rd/c0d0: RAID-5, Online, 5498880 blocks, Write Thru | ||
| 574 | /dev/rd/c0d1: RAID-6, Online, 3305472 blocks, Write Thru | ||
| 575 | Rebuild Completed Successfully | ||
| 576 | |||
| 577 | and /proc/rd/status indicates that everything is healthy once again: | ||
| 578 | |||
| 579 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 580 | OK | ||
| 581 | |||
| 582 | |||
| 583 | EXAMPLE II - DRIVE FAILURE WITH A STANDBY DRIVE | ||
| 584 | |||
| 585 | The following annotated logs demonstrate the controller configuration and and | ||
| 586 | online status monitoring capabilities of the Linux DAC960 Driver. The test | ||
| 587 | configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a | ||
| 588 | DAC960PJ controller. The physical drives are configured into a single drive | ||
| 589 | group with a standby drive, and the drive group has been configured into two | ||
| 590 | logical drives, one RAID-5 and one RAID-6. Note that these logs are from an | ||
| 591 | earlier version of the driver and the messages have changed somewhat with newer | ||
| 592 | releases, but the functionality remains similar. First, here is the current | ||
| 593 | status of the RAID configuration: | ||
| 594 | |||
| 595 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 596 | ***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** | ||
| 597 | Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com> | ||
| 598 | Configuring Mylex DAC960PJ PCI RAID Controller | ||
| 599 | Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB | ||
| 600 | PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned | ||
| 601 | PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 | ||
| 602 | Controller Queue Depth: 128, Maximum Blocks per Command: 128 | ||
| 603 | Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 | ||
| 604 | Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 | ||
| 605 | Physical Devices: | ||
| 606 | 0:1 - Disk: Online, 2201600 blocks | ||
| 607 | 0:2 - Disk: Online, 2201600 blocks | ||
| 608 | 0:3 - Disk: Online, 2201600 blocks | ||
| 609 | 1:1 - Disk: Online, 2201600 blocks | ||
| 610 | 1:2 - Disk: Online, 2201600 blocks | ||
| 611 | 1:3 - Disk: Standby, 2201600 blocks | ||
| 612 | Logical Drives: | ||
| 613 | /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru | ||
| 614 | /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru | ||
| 615 | No Rebuild or Consistency Check in Progress | ||
| 616 | |||
| 617 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 618 | OK | ||
| 619 | |||
| 620 | The above messages indicate that everything is healthy, and /proc/rd/status | ||
| 621 | returns "OK" indicating that there are no problems with any DAC960 controller | ||
| 622 | in the system. For demonstration purposes, while I/O is active Physical Drive | ||
| 623 | 1:2 is now disconnected, simulating a drive failure. The failure is noted by | ||
| 624 | the driver within 10 seconds of the controller's having detected it, and the | ||
| 625 | driver logs the following console status messages: | ||
| 626 | |||
| 627 | DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 | ||
| 628 | DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 | ||
| 629 | DAC960#0: Physical Drive 1:2 killed because of timeout on SCSI command | ||
| 630 | DAC960#0: Physical Drive 1:2 is now DEAD | ||
| 631 | DAC960#0: Physical Drive 1:2 killed because it was removed | ||
| 632 | DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL | ||
| 633 | DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL | ||
| 634 | |||
| 635 | Since a standby drive is configured, the controller automatically begins | ||
| 636 | rebuilding onto the standby drive: | ||
| 637 | |||
| 638 | DAC960#0: Physical Drive 1:3 is now WRITE-ONLY | ||
| 639 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 4% completed | ||
| 640 | |||
| 641 | Concurrently with the above, the driver status available from /proc/rd also | ||
| 642 | reflects the drive failure and automatic rebuild. The status message in | ||
| 643 | /proc/rd/status has changed from "OK" to "ALERT": | ||
| 644 | |||
| 645 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 646 | ALERT | ||
| 647 | |||
| 648 | and /proc/rd/c0/current_status has been updated: | ||
| 649 | |||
| 650 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 651 | ... | ||
| 652 | Physical Devices: | ||
| 653 | 0:1 - Disk: Online, 2201600 blocks | ||
| 654 | 0:2 - Disk: Online, 2201600 blocks | ||
| 655 | 0:3 - Disk: Online, 2201600 blocks | ||
| 656 | 1:1 - Disk: Online, 2201600 blocks | ||
| 657 | 1:2 - Disk: Dead, 2201600 blocks | ||
| 658 | 1:3 - Disk: Write-Only, 2201600 blocks | ||
| 659 | Logical Drives: | ||
| 660 | /dev/rd/c0d0: RAID-5, Critical, 4399104 blocks, Write Thru | ||
| 661 | /dev/rd/c0d1: RAID-6, Critical, 2754560 blocks, Write Thru | ||
| 662 | Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 4% completed | ||
| 663 | |||
| 664 | As the rebuild progresses, the current status in /proc/rd/c0/current_status is | ||
| 665 | updated every 10 seconds: | ||
| 666 | |||
| 667 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 668 | ... | ||
| 669 | Physical Devices: | ||
| 670 | 0:1 - Disk: Online, 2201600 blocks | ||
| 671 | 0:2 - Disk: Online, 2201600 blocks | ||
| 672 | 0:3 - Disk: Online, 2201600 blocks | ||
| 673 | 1:1 - Disk: Online, 2201600 blocks | ||
| 674 | 1:2 - Disk: Dead, 2201600 blocks | ||
| 675 | 1:3 - Disk: Write-Only, 2201600 blocks | ||
| 676 | Logical Drives: | ||
| 677 | /dev/rd/c0d0: RAID-5, Critical, 4399104 blocks, Write Thru | ||
| 678 | /dev/rd/c0d1: RAID-6, Critical, 2754560 blocks, Write Thru | ||
| 679 | Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 40% completed | ||
| 680 | |||
| 681 | and every minute a progress message is logged on the console by the driver: | ||
| 682 | |||
| 683 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 40% completed | ||
| 684 | DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 76% completed | ||
| 685 | DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 66% completed | ||
| 686 | DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 84% completed | ||
| 687 | |||
| 688 | Finally, the rebuild completes successfully. The driver logs the status of the | ||
| 689 | logical and physical drives and the rebuild completion: | ||
| 690 | |||
| 691 | DAC960#0: Rebuild Completed Successfully | ||
| 692 | DAC960#0: Physical Drive 1:3 is now ONLINE | ||
| 693 | DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE | ||
| 694 | DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now ONLINE | ||
| 695 | |||
| 696 | /proc/rd/c0/current_status is updated: | ||
| 697 | |||
| 698 | ***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** | ||
| 699 | Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com> | ||
| 700 | Configuring Mylex DAC960PJ PCI RAID Controller | ||
| 701 | Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB | ||
| 702 | PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned | ||
| 703 | PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 | ||
| 704 | Controller Queue Depth: 128, Maximum Blocks per Command: 128 | ||
| 705 | Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 | ||
| 706 | Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 | ||
| 707 | Physical Devices: | ||
| 708 | 0:1 - Disk: Online, 2201600 blocks | ||
| 709 | 0:2 - Disk: Online, 2201600 blocks | ||
| 710 | 0:3 - Disk: Online, 2201600 blocks | ||
| 711 | 1:1 - Disk: Online, 2201600 blocks | ||
| 712 | 1:2 - Disk: Dead, 2201600 blocks | ||
| 713 | 1:3 - Disk: Online, 2201600 blocks | ||
| 714 | Logical Drives: | ||
| 715 | /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru | ||
| 716 | /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru | ||
| 717 | Rebuild Completed Successfully | ||
| 718 | |||
| 719 | and /proc/rd/status indicates that everything is healthy once again: | ||
| 720 | |||
| 721 | gwynedd:/u/lnz# cat /proc/rd/status | ||
| 722 | OK | ||
| 723 | |||
| 724 | Note that the absence of a viable standby drive does not create an "ALERT" | ||
| 725 | status. Once dead Physical Drive 1:2 has been replaced, the controller must be | ||
| 726 | told that this has occurred and that the newly replaced drive should become the | ||
| 727 | new standby drive: | ||
| 728 | |||
| 729 | gwynedd:/u/lnz# echo "make-standby 1:2" > /proc/rd/c0/user_command | ||
| 730 | gwynedd:/u/lnz# cat /proc/rd/c0/user_command | ||
| 731 | Make Standby of Physical Drive 1:2 Succeeded | ||
| 732 | |||
| 733 | The echo command instructs the controller to make Physical Drive 1:2 into a | ||
| 734 | standby drive, and the status message that results from the operation is then | ||
| 735 | available for reading from /proc/rd/c0/user_command, as well as being logged to | ||
| 736 | the console by the driver. Within 60 seconds of this command the driver logs: | ||
| 737 | |||
| 738 | DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01 | ||
| 739 | DAC960#0: Physical Drive 1:2 is now STANDBY | ||
| 740 | DAC960#0: Make Standby of Physical Drive 1:2 Succeeded | ||
| 741 | |||
| 742 | and /proc/rd/c0/current_status is updated: | ||
| 743 | |||
| 744 | gwynedd:/u/lnz# cat /proc/rd/c0/current_status | ||
| 745 | ... | ||
| 746 | Physical Devices: | ||
| 747 | 0:1 - Disk: Online, 2201600 blocks | ||
| 748 | 0:2 - Disk: Online, 2201600 blocks | ||
| 749 | 0:3 - Disk: Online, 2201600 blocks | ||
| 750 | 1:1 - Disk: Online, 2201600 blocks | ||
| 751 | 1:2 - Disk: Standby, 2201600 blocks | ||
| 752 | 1:3 - Disk: Online, 2201600 blocks | ||
| 753 | Logical Drives: | ||
| 754 | /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru | ||
| 755 | /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru | ||
| 756 | Rebuild Completed Successfully | ||
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 | |||
diff --git a/Documentation/blockdev/cpqarray.txt b/Documentation/blockdev/cpqarray.txt new file mode 100644 index 000000000000..c7154e20ef5e --- /dev/null +++ b/Documentation/blockdev/cpqarray.txt | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | This driver is for Compaq's SMART2 Intelligent Disk Array Controllers. | ||
| 2 | |||
| 3 | Supported Cards: | ||
| 4 | ---------------- | ||
| 5 | |||
| 6 | This driver is known to work with the following cards: | ||
| 7 | |||
| 8 | * SMART (EISA) | ||
| 9 | * SMART-2/E (EISA) | ||
| 10 | * SMART-2/P | ||
| 11 | * SMART-2DH | ||
| 12 | * SMART-2SL | ||
| 13 | * SMART-221 | ||
| 14 | * SMART-3100ES | ||
| 15 | * SMART-3200 | ||
| 16 | * Integrated Smart Array Controller | ||
| 17 | * SA 4200 | ||
| 18 | * SA 4250ES | ||
| 19 | * SA 431 | ||
| 20 | * RAID LC2 Controller | ||
| 21 | |||
| 22 | It should also work with some really old Disk array adapters, but I am | ||
| 23 | unable to test against these cards: | ||
| 24 | |||
| 25 | * IDA | ||
| 26 | * IDA-2 | ||
| 27 | * IAES | ||
| 28 | |||
| 29 | |||
| 30 | EISA Controllers: | ||
| 31 | ----------------- | ||
| 32 | |||
| 33 | If you want to use an EISA controller you'll have to supply some | ||
| 34 | modprobe/lilo parameters. If the driver is compiled into the kernel, must | ||
| 35 | give it the controller's IO port address at boot time (it is not | ||
| 36 | necessary to specify the IRQ). For example, if you had two SMART-2/E | ||
| 37 | controllers, in EISA slots 1 and 2 you'd give it a boot argument like | ||
| 38 | this: | ||
| 39 | |||
| 40 | smart2=0x1000,0x2000 | ||
| 41 | |||
| 42 | If you were loading the driver as a module, you'd give load it like this: | ||
| 43 | |||
| 44 | modprobe cpqarray eisa=0x1000,0x2000 | ||
| 45 | |||
| 46 | You can use EISA and PCI adapters at the same time. | ||
| 47 | |||
| 48 | |||
| 49 | Device Naming: | ||
| 50 | -------------- | ||
| 51 | |||
| 52 | You need some entries in /dev for the ida device. MAKEDEV in the /dev | ||
| 53 | directory can make device nodes for you automatically. The device setup is | ||
| 54 | as follows: | ||
| 55 | |||
| 56 | Major numbers: | ||
| 57 | 72 ida0 | ||
| 58 | 73 ida1 | ||
| 59 | 74 ida2 | ||
| 60 | 75 ida3 | ||
| 61 | 76 ida4 | ||
| 62 | 77 ida5 | ||
| 63 | 78 ida6 | ||
| 64 | 79 ida7 | ||
| 65 | |||
| 66 | Minor numbers: | ||
| 67 | b7 b6 b5 b4 b3 b2 b1 b0 | ||
| 68 | |----+----| |----+----| | ||
| 69 | | | | ||
| 70 | | +-------- Partition ID (0=wholedev, 1-15 partition) | ||
| 71 | | | ||
| 72 | +-------------------- Logical Volume number | ||
| 73 | |||
| 74 | The device naming scheme is: | ||
| 75 | /dev/ida/c0d0 Controller 0, disk 0, whole device | ||
| 76 | /dev/ida/c0d0p1 Controller 0, disk 0, partition 1 | ||
| 77 | /dev/ida/c0d0p2 Controller 0, disk 0, partition 2 | ||
| 78 | /dev/ida/c0d0p3 Controller 0, disk 0, partition 3 | ||
| 79 | |||
| 80 | /dev/ida/c1d1 Controller 1, disk 1, whole device | ||
| 81 | /dev/ida/c1d1p1 Controller 1, disk 1, partition 1 | ||
| 82 | /dev/ida/c1d1p2 Controller 1, disk 1, partition 2 | ||
| 83 | /dev/ida/c1d1p3 Controller 1, disk 1, partition 3 | ||
| 84 | |||
| 85 | |||
| 86 | Changelog: | ||
| 87 | ========== | ||
| 88 | |||
| 89 | 10-28-2004 : General cleanup, syntax fixes for in-kernel driver version. | ||
| 90 | James Nelson <james4765@gmail.com> | ||
| 91 | |||
| 92 | |||
| 93 | 1999 : Original Document | ||
diff --git a/Documentation/blockdev/floppy.txt b/Documentation/blockdev/floppy.txt new file mode 100644 index 000000000000..6ccab88705cb --- /dev/null +++ b/Documentation/blockdev/floppy.txt | |||
| @@ -0,0 +1,245 @@ | |||
| 1 | This file describes the floppy driver. | ||
| 2 | |||
| 3 | FAQ list: | ||
| 4 | ========= | ||
| 5 | |||
| 6 | A FAQ list may be found in the fdutils package (see below), and also | ||
| 7 | at <http://fdutils.linux.lu/faq.html>. | ||
| 8 | |||
| 9 | |||
| 10 | LILO configuration options (Thinkpad users, read this) | ||
| 11 | ====================================================== | ||
| 12 | |||
| 13 | The floppy driver is configured using the 'floppy=' option in | ||
| 14 | lilo. This option can be typed at the boot prompt, or entered in the | ||
| 15 | lilo configuration file. | ||
| 16 | |||
| 17 | Example: If your kernel is called linux-2.6.9, type the following line | ||
| 18 | at the lilo boot prompt (if you have a thinkpad): | ||
| 19 | |||
| 20 | linux-2.6.9 floppy=thinkpad | ||
| 21 | |||
| 22 | You may also enter the following line in /etc/lilo.conf, in the description | ||
| 23 | of linux-2.6.9: | ||
| 24 | |||
| 25 | append = "floppy=thinkpad" | ||
| 26 | |||
| 27 | Several floppy related options may be given, example: | ||
| 28 | |||
| 29 | linux-2.6.9 floppy=daring floppy=two_fdc | ||
| 30 | append = "floppy=daring floppy=two_fdc" | ||
| 31 | |||
| 32 | If you give options both in the lilo config file and on the boot | ||
| 33 | prompt, the option strings of both places are concatenated, the boot | ||
| 34 | prompt options coming last. That's why there are also options to | ||
| 35 | restore the default behavior. | ||
| 36 | |||
| 37 | |||
| 38 | Module configuration options | ||
| 39 | ============================ | ||
| 40 | |||
| 41 | If you use the floppy driver as a module, use the following syntax: | ||
| 42 | modprobe floppy <options> | ||
| 43 | |||
| 44 | Example: | ||
| 45 | modprobe floppy omnibook messages | ||
| 46 | |||
| 47 | If you need certain options enabled every time you load the floppy driver, | ||
| 48 | you can put: | ||
| 49 | |||
| 50 | options floppy omnibook messages | ||
| 51 | |||
| 52 | in /etc/modprobe.conf. | ||
| 53 | |||
| 54 | |||
| 55 | The floppy driver related options are: | ||
| 56 | |||
| 57 | floppy=asus_pci | ||
| 58 | Sets the bit mask to allow only units 0 and 1. (default) | ||
| 59 | |||
| 60 | floppy=daring | ||
| 61 | Tells the floppy driver that you have a well behaved floppy controller. | ||
| 62 | This allows more efficient and smoother operation, but may fail on | ||
| 63 | certain controllers. This may speed up certain operations. | ||
| 64 | |||
| 65 | floppy=0,daring | ||
| 66 | Tells the floppy driver that your floppy controller should be used | ||
| 67 | with caution. | ||
| 68 | |||
| 69 | floppy=one_fdc | ||
| 70 | Tells the floppy driver that you have only one floppy controller. | ||
| 71 | (default) | ||
| 72 | |||
| 73 | floppy=two_fdc | ||
| 74 | floppy=<address>,two_fdc | ||
| 75 | Tells the floppy driver that you have two floppy controllers. | ||
| 76 | The second floppy controller is assumed to be at <address>. | ||
| 77 | This option is not needed if the second controller is at address | ||
| 78 | 0x370, and if you use the 'cmos' option. | ||
| 79 | |||
| 80 | floppy=thinkpad | ||
| 81 | Tells the floppy driver that you have a Thinkpad. Thinkpads use an | ||
| 82 | inverted convention for the disk change line. | ||
| 83 | |||
| 84 | floppy=0,thinkpad | ||
| 85 | Tells the floppy driver that you don't have a Thinkpad. | ||
| 86 | |||
| 87 | floppy=omnibook | ||
| 88 | floppy=nodma | ||
| 89 | Tells the floppy driver not to use Dma for data transfers. | ||
| 90 | This is needed on HP Omnibooks, which don't have a workable | ||
| 91 | DMA channel for the floppy driver. This option is also useful | ||
| 92 | if you frequently get "Unable to allocate DMA memory" messages. | ||
| 93 | Indeed, dma memory needs to be continuous in physical memory, | ||
| 94 | and is thus harder to find, whereas non-dma buffers may be | ||
| 95 | allocated in virtual memory. However, I advise against this if | ||
| 96 | you have an FDC without a FIFO (8272A or 82072). 82072A and | ||
| 97 | later are OK. You also need at least a 486 to use nodma. | ||
| 98 | If you use nodma mode, I suggest you also set the FIFO | ||
| 99 | threshold to 10 or lower, in order to limit the number of data | ||
| 100 | transfer interrupts. | ||
| 101 | |||
| 102 | If you have a FIFO-able FDC, the floppy driver automatically | ||
| 103 | falls back on non DMA mode if no DMA-able memory can be found. | ||
| 104 | If you want to avoid this, explicitly ask for 'yesdma'. | ||
| 105 | |||
| 106 | floppy=yesdma | ||
| 107 | Tells the floppy driver that a workable DMA channel is available. | ||
| 108 | (default) | ||
| 109 | |||
| 110 | floppy=nofifo | ||
| 111 | Disables the FIFO entirely. This is needed if you get "Bus | ||
| 112 | master arbitration error" messages from your Ethernet card (or | ||
| 113 | from other devices) while accessing the floppy. | ||
| 114 | |||
| 115 | floppy=usefifo | ||
| 116 | Enables the FIFO. (default) | ||
| 117 | |||
| 118 | floppy=<threshold>,fifo_depth | ||
| 119 | Sets the FIFO threshold. This is mostly relevant in DMA | ||
| 120 | mode. If this is higher, the floppy driver tolerates more | ||
| 121 | interrupt latency, but it triggers more interrupts (i.e. it | ||
| 122 | imposes more load on the rest of the system). If this is | ||
| 123 | lower, the interrupt latency should be lower too (faster | ||
| 124 | processor). The benefit of a lower threshold is less | ||
| 125 | interrupts. | ||
| 126 | |||
| 127 | To tune the fifo threshold, switch on over/underrun messages | ||
| 128 | using 'floppycontrol --messages'. Then access a floppy | ||
| 129 | disk. If you get a huge amount of "Over/Underrun - retrying" | ||
| 130 | messages, then the fifo threshold is too low. Try with a | ||
| 131 | higher value, until you only get an occasional Over/Underrun. | ||
| 132 | It is a good idea to compile the floppy driver as a module | ||
| 133 | when doing this tuning. Indeed, it allows to try different | ||
| 134 | fifo values without rebooting the machine for each test. Note | ||
| 135 | that you need to do 'floppycontrol --messages' every time you | ||
| 136 | re-insert the module. | ||
| 137 | |||
| 138 | Usually, tuning the fifo threshold should not be needed, as | ||
| 139 | the default (0xa) is reasonable. | ||
| 140 | |||
| 141 | floppy=<drive>,<type>,cmos | ||
| 142 | Sets the CMOS type of <drive> to <type>. This is mandatory if | ||
| 143 | you have more than two floppy drives (only two can be | ||
| 144 | described in the physical CMOS), or if your BIOS uses | ||
| 145 | non-standard CMOS types. The CMOS types are: | ||
| 146 | |||
| 147 | 0 - Use the value of the physical CMOS | ||
| 148 | 1 - 5 1/4 DD | ||
| 149 | 2 - 5 1/4 HD | ||
| 150 | 3 - 3 1/2 DD | ||
| 151 | 4 - 3 1/2 HD | ||
| 152 | 5 - 3 1/2 ED | ||
| 153 | 6 - 3 1/2 ED | ||
| 154 | 16 - unknown or not installed | ||
| 155 | |||
| 156 | (Note: there are two valid types for ED drives. This is because 5 was | ||
| 157 | initially chosen to represent floppy *tapes*, and 6 for ED drives. | ||
| 158 | AMI ignored this, and used 5 for ED drives. That's why the floppy | ||
| 159 | driver handles both.) | ||
| 160 | |||
| 161 | floppy=unexpected_interrupts | ||
| 162 | Print a warning message when an unexpected interrupt is received. | ||
| 163 | (default) | ||
| 164 | |||
| 165 | floppy=no_unexpected_interrupts | ||
| 166 | floppy=L40SX | ||
| 167 | Don't print a message when an unexpected interrupt is received. This | ||
| 168 | is needed on IBM L40SX laptops in certain video modes. (There seems | ||
| 169 | to be an interaction between video and floppy. The unexpected | ||
| 170 | interrupts affect only performance, and can be safely ignored.) | ||
| 171 | |||
| 172 | floppy=broken_dcl | ||
| 173 | Don't use the disk change line, but assume that the disk was | ||
| 174 | changed whenever the device node is reopened. Needed on some | ||
| 175 | boxes where the disk change line is broken or unsupported. | ||
| 176 | This should be regarded as a stopgap measure, indeed it makes | ||
| 177 | floppy operation less efficient due to unneeded cache | ||
| 178 | flushings, and slightly more unreliable. Please verify your | ||
| 179 | cable, connection and jumper settings if you have any DCL | ||
| 180 | problems. However, some older drives, and also some laptops | ||
| 181 | are known not to have a DCL. | ||
| 182 | |||
| 183 | floppy=debug | ||
| 184 | Print debugging messages. | ||
| 185 | |||
| 186 | floppy=messages | ||
| 187 | Print informational messages for some operations (disk change | ||
| 188 | notifications, warnings about over and underruns, and about | ||
| 189 | autodetection). | ||
| 190 | |||
| 191 | floppy=silent_dcl_clear | ||
| 192 | Uses a less noisy way to clear the disk change line (which | ||
| 193 | doesn't involve seeks). Implied by 'daring' option. | ||
| 194 | |||
| 195 | floppy=<nr>,irq | ||
| 196 | Sets the floppy IRQ to <nr> instead of 6. | ||
| 197 | |||
| 198 | floppy=<nr>,dma | ||
| 199 | Sets the floppy DMA channel to <nr> instead of 2. | ||
| 200 | |||
| 201 | floppy=slow | ||
| 202 | Use PS/2 stepping rate: | ||
| 203 | " PS/2 floppies have much slower step rates than regular floppies. | ||
| 204 | It's been recommended that take about 1/4 of the default speed | ||
| 205 | in some more extreme cases." | ||
| 206 | |||
| 207 | |||
| 208 | Supporting utilities and additional documentation: | ||
| 209 | ================================================== | ||
| 210 | |||
| 211 | Additional parameters of the floppy driver can be configured at | ||
| 212 | runtime. Utilities which do this can be found in the fdutils package. | ||
| 213 | This package also contains a new version of mtools which allows to | ||
| 214 | access high capacity disks (up to 1992K on a high density 3 1/2 disk!). | ||
| 215 | It also contains additional documentation about the floppy driver. | ||
| 216 | |||
| 217 | The latest version can be found at fdutils homepage: | ||
| 218 | http://fdutils.linux.lu | ||
| 219 | |||
| 220 | The fdutils releases can be found at: | ||
| 221 | http://fdutils.linux.lu/download.html | ||
| 222 | http://www.tux.org/pub/knaff/fdutils/ | ||
| 223 | ftp://metalab.unc.edu/pub/Linux/utils/disk-management/ | ||
| 224 | |||
| 225 | Reporting problems about the floppy driver | ||
| 226 | ========================================== | ||
| 227 | |||
| 228 | If you have a question or a bug report about the floppy driver, mail | ||
| 229 | me at Alain.Knaff@poboxes.com . If you post to Usenet, preferably use | ||
| 230 | comp.os.linux.hardware. As the volume in these groups is rather high, | ||
| 231 | be sure to include the word "floppy" (or "FLOPPY") in the subject | ||
| 232 | line. If the reported problem happens when mounting floppy disks, be | ||
| 233 | sure to mention also the type of the filesystem in the subject line. | ||
| 234 | |||
| 235 | Be sure to read the FAQ before mailing/posting any bug reports! | ||
| 236 | |||
| 237 | Alain | ||
| 238 | |||
| 239 | Changelog | ||
| 240 | ========= | ||
| 241 | |||
| 242 | 10-30-2004 : Cleanup, updating, add reference to module configuration. | ||
| 243 | James Nelson <james4765@gmail.com> | ||
| 244 | |||
| 245 | 6-3-2000 : Original Document | ||
diff --git a/Documentation/blockdev/nbd.txt b/Documentation/blockdev/nbd.txt new file mode 100644 index 000000000000..aeb93ffe6416 --- /dev/null +++ b/Documentation/blockdev/nbd.txt | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | Network Block Device (TCP version) | ||
| 2 | |||
| 3 | What is it: With this compiled in the kernel (or as a module), Linux | ||
| 4 | can use a remote server as one of its block devices. So every time | ||
| 5 | the client computer wants to read, e.g., /dev/nb0, it sends a | ||
| 6 | request over TCP to the server, which will reply with the data read. | ||
| 7 | This can be used for stations with low disk space (or even diskless - | ||
| 8 | if you boot from floppy) to borrow disk space from another computer. | ||
| 9 | Unlike NFS, it is possible to put any filesystem on it, etc. It should | ||
| 10 | even be possible to use NBD as a root filesystem (I've never tried), | ||
| 11 | but it requires a user-level program to be in the initrd to start. | ||
| 12 | It also allows you to run block-device in user land (making server | ||
| 13 | and client physically the same computer, communicating using loopback). | ||
| 14 | |||
| 15 | Current state: It currently works. Network block device is stable. | ||
| 16 | I originally thought that it was impossible to swap over TCP. It | ||
| 17 | turned out not to be true - swapping over TCP now works and seems | ||
| 18 | to be deadlock-free, but it requires heavy patches into Linux's | ||
| 19 | network layer. | ||
| 20 | |||
| 21 | For more information, or to download the nbd-client and nbd-server | ||
| 22 | tools, go to http://nbd.sf.net/. | ||
| 23 | |||
| 24 | Howto: To setup nbd, you can simply do the following: | ||
| 25 | |||
| 26 | First, serve a device or file from a remote server: | ||
| 27 | |||
| 28 | nbd-server <port-number> <device-or-file-to-serve-to-client> | ||
| 29 | |||
| 30 | e.g., | ||
| 31 | root@server1 # nbd-server 1234 /dev/sdb1 | ||
| 32 | |||
| 33 | (serves sdb1 partition on TCP port 1234) | ||
| 34 | |||
| 35 | Then, on the local (client) system: | ||
| 36 | |||
| 37 | nbd-client <server-name-or-IP> <server-port-number> /dev/nb[0-n] | ||
| 38 | |||
| 39 | e.g., | ||
| 40 | root@client1 # nbd-client server1 1234 /dev/nb0 | ||
| 41 | |||
| 42 | (creates the nb0 device on client1) | ||
| 43 | |||
| 44 | The nbd kernel module need only be installed on the client | ||
| 45 | system, as the nbd-server is completely in userspace. In fact, | ||
| 46 | the nbd-server has been successfully ported to other operating | ||
| 47 | systems, including Windows. | ||
diff --git a/Documentation/blockdev/paride.txt b/Documentation/blockdev/paride.txt new file mode 100644 index 000000000000..e4312676bdda --- /dev/null +++ b/Documentation/blockdev/paride.txt | |||
| @@ -0,0 +1,417 @@ | |||
| 1 | |||
| 2 | Linux and parallel port IDE devices | ||
| 3 | |||
| 4 | PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net> | ||
| 5 | |||
| 6 | 1. Introduction | ||
| 7 | |||
| 8 | Owing to the simplicity and near universality of the parallel port interface | ||
| 9 | to personal computers, many external devices such as portable hard-disk, | ||
| 10 | CD-ROM, LS-120 and tape drives use the parallel port to connect to their | ||
| 11 | host computer. While some devices (notably scanners) use ad-hoc methods | ||
| 12 | to pass commands and data through the parallel port interface, most | ||
| 13 | external devices are actually identical to an internal model, but with | ||
| 14 | a parallel-port adapter chip added in. Some of the original parallel port | ||
| 15 | adapters were little more than mechanisms for multiplexing a SCSI bus. | ||
| 16 | (The Iomega PPA-3 adapter used in the ZIP drives is an example of this | ||
| 17 | approach). Most current designs, however, take a different approach. | ||
| 18 | The adapter chip reproduces a small ISA or IDE bus in the external device | ||
| 19 | and the communication protocol provides operations for reading and writing | ||
| 20 | device registers, as well as data block transfer functions. Sometimes, | ||
| 21 | the device being addressed via the parallel cable is a standard SCSI | ||
| 22 | controller like an NCR 5380. The "ditto" family of external tape | ||
| 23 | drives use the ISA replicator to interface a floppy disk controller, | ||
| 24 | which is then connected to a floppy-tape mechanism. The vast majority | ||
| 25 | of external parallel port devices, however, are now based on standard | ||
| 26 | IDE type devices, which require no intermediate controller. If one | ||
| 27 | were to open up a parallel port CD-ROM drive, for instance, one would | ||
| 28 | find a standard ATAPI CD-ROM drive, a power supply, and a single adapter | ||
| 29 | that interconnected a standard PC parallel port cable and a standard | ||
| 30 | IDE cable. It is usually possible to exchange the CD-ROM device with | ||
| 31 | any other device using the IDE interface. | ||
| 32 | |||
| 33 | The document describes the support in Linux for parallel port IDE | ||
| 34 | devices. It does not cover parallel port SCSI devices, "ditto" tape | ||
| 35 | drives or scanners. Many different devices are supported by the | ||
| 36 | parallel port IDE subsystem, including: | ||
| 37 | |||
| 38 | MicroSolutions backpack CD-ROM | ||
| 39 | MicroSolutions backpack PD/CD | ||
| 40 | MicroSolutions backpack hard-drives | ||
| 41 | MicroSolutions backpack 8000t tape drive | ||
| 42 | SyQuest EZ-135, EZ-230 & SparQ drives | ||
| 43 | Avatar Shark | ||
| 44 | Imation Superdisk LS-120 | ||
| 45 | Maxell Superdisk LS-120 | ||
| 46 | FreeCom Power CD | ||
| 47 | Hewlett-Packard 5GB and 8GB tape drives | ||
| 48 | Hewlett-Packard 7100 and 7200 CD-RW drives | ||
| 49 | |||
| 50 | as well as most of the clone and no-name products on the market. | ||
| 51 | |||
| 52 | To support such a wide range of devices, PARIDE, the parallel port IDE | ||
| 53 | subsystem, is actually structured in three parts. There is a base | ||
| 54 | paride module which provides a registry and some common methods for | ||
| 55 | accessing the parallel ports. The second component is a set of | ||
| 56 | high-level drivers for each of the different types of supported devices: | ||
| 57 | |||
| 58 | pd IDE disk | ||
| 59 | pcd ATAPI CD-ROM | ||
| 60 | pf ATAPI disk | ||
| 61 | pt ATAPI tape | ||
| 62 | pg ATAPI generic | ||
| 63 | |||
| 64 | (Currently, the pg driver is only used with CD-R drives). | ||
| 65 | |||
| 66 | The high-level drivers function according to the relevant standards. | ||
| 67 | The third component of PARIDE is a set of low-level protocol drivers | ||
| 68 | for each of the parallel port IDE adapter chips. Thanks to the interest | ||
| 69 | and encouragement of Linux users from many parts of the world, | ||
| 70 | support is available for almost all known adapter protocols: | ||
| 71 | |||
| 72 | aten ATEN EH-100 (HK) | ||
| 73 | bpck Microsolutions backpack (US) | ||
| 74 | comm DataStor (old-type) "commuter" adapter (TW) | ||
| 75 | dstr DataStor EP-2000 (TW) | ||
| 76 | epat Shuttle EPAT (UK) | ||
| 77 | epia Shuttle EPIA (UK) | ||
| 78 | fit2 FIT TD-2000 (US) | ||
| 79 | fit3 FIT TD-3000 (US) | ||
| 80 | friq Freecom IQ cable (DE) | ||
| 81 | frpw Freecom Power (DE) | ||
| 82 | kbic KingByte KBIC-951A and KBIC-971A (TW) | ||
| 83 | ktti KT Technology PHd adapter (SG) | ||
| 84 | on20 OnSpec 90c20 (US) | ||
| 85 | on26 OnSpec 90c26 (US) | ||
| 86 | |||
| 87 | |||
| 88 | 2. Using the PARIDE subsystem | ||
| 89 | |||
| 90 | While configuring the Linux kernel, you may choose either to build | ||
| 91 | the PARIDE drivers into your kernel, or to build them as modules. | ||
| 92 | |||
| 93 | In either case, you will need to select "Parallel port IDE device support" | ||
| 94 | as well as at least one of the high-level drivers and at least one | ||
| 95 | of the parallel port communication protocols. If you do not know | ||
| 96 | what kind of parallel port adapter is used in your drive, you could | ||
| 97 | begin by checking the file names and any text files on your DOS | ||
| 98 | installation floppy. Alternatively, you can look at the markings on | ||
| 99 | the adapter chip itself. That's usually sufficient to identify the | ||
| 100 | correct device. | ||
| 101 | |||
| 102 | You can actually select all the protocol modules, and allow the PARIDE | ||
| 103 | subsystem to try them all for you. | ||
| 104 | |||
| 105 | For the "brand-name" products listed above, here are the protocol | ||
| 106 | and high-level drivers that you would use: | ||
| 107 | |||
| 108 | Manufacturer Model Driver Protocol | ||
| 109 | |||
| 110 | MicroSolutions CD-ROM pcd bpck | ||
| 111 | MicroSolutions PD drive pf bpck | ||
| 112 | MicroSolutions hard-drive pd bpck | ||
| 113 | MicroSolutions 8000t tape pt bpck | ||
| 114 | SyQuest EZ, SparQ pd epat | ||
| 115 | Imation Superdisk pf epat | ||
| 116 | Maxell Superdisk pf friq | ||
| 117 | Avatar Shark pd epat | ||
| 118 | FreeCom CD-ROM pcd frpw | ||
| 119 | Hewlett-Packard 5GB Tape pt epat | ||
| 120 | Hewlett-Packard 7200e (CD) pcd epat | ||
| 121 | Hewlett-Packard 7200e (CD-R) pg epat | ||
| 122 | |||
| 123 | 2.1 Configuring built-in drivers | ||
| 124 | |||
| 125 | We recommend that you get to know how the drivers work and how to | ||
| 126 | configure them as loadable modules, before attempting to compile a | ||
| 127 | kernel with the drivers built-in. | ||
| 128 | |||
| 129 | If you built all of your PARIDE support directly into your kernel, | ||
| 130 | and you have just a single parallel port IDE device, your kernel should | ||
| 131 | locate it automatically for you. If you have more than one device, | ||
| 132 | you may need to give some command line options to your bootloader | ||
| 133 | (eg: LILO), how to do that is beyond the scope of this document. | ||
| 134 | |||
| 135 | The high-level drivers accept a number of command line parameters, all | ||
| 136 | of which are documented in the source files in linux/drivers/block/paride. | ||
| 137 | By default, each driver will automatically try all parallel ports it | ||
| 138 | can find, and all protocol types that have been installed, until it finds | ||
| 139 | a parallel port IDE adapter. Once it finds one, the probe stops. So, | ||
| 140 | if you have more than one device, you will need to tell the drivers | ||
| 141 | how to identify them. This requires specifying the port address, the | ||
| 142 | protocol identification number and, for some devices, the drive's | ||
| 143 | chain ID. While your system is booting, a number of messages are | ||
| 144 | displayed on the console. Like all such messages, they can be | ||
| 145 | reviewed with the 'dmesg' command. Among those messages will be | ||
| 146 | some lines like: | ||
| 147 | |||
| 148 | paride: bpck registered as protocol 0 | ||
| 149 | paride: epat registered as protocol 1 | ||
| 150 | |||
| 151 | The numbers will always be the same until you build a new kernel with | ||
| 152 | different protocol selections. You should note these numbers as you | ||
| 153 | will need them to identify the devices. | ||
| 154 | |||
| 155 | If you happen to be using a MicroSolutions backpack device, you will | ||
| 156 | also need to know the unit ID number for each drive. This is usually | ||
| 157 | the last two digits of the drive's serial number (but read MicroSolutions' | ||
| 158 | documentation about this). | ||
| 159 | |||
| 160 | As an example, let's assume that you have a MicroSolutions PD/CD drive | ||
| 161 | with unit ID number 36 connected to the parallel port at 0x378, a SyQuest | ||
| 162 | EZ-135 connected to the chained port on the PD/CD drive and also an | ||
| 163 | Imation Superdisk connected to port 0x278. You could give the following | ||
| 164 | options on your boot command: | ||
| 165 | |||
| 166 | pd.drive0=0x378,1 pf.drive0=0x278,1 pf.drive1=0x378,0,36 | ||
| 167 | |||
| 168 | In the last option, pf.drive1 configures device /dev/pf1, the 0x378 | ||
| 169 | is the parallel port base address, the 0 is the protocol registration | ||
| 170 | number and 36 is the chain ID. | ||
| 171 | |||
| 172 | Please note: while PARIDE will work both with and without the | ||
| 173 | PARPORT parallel port sharing system that is included by the | ||
| 174 | "Parallel port support" option, PARPORT must be included and enabled | ||
| 175 | if you want to use chains of devices on the same parallel port. | ||
| 176 | |||
| 177 | 2.2 Loading and configuring PARIDE as modules | ||
| 178 | |||
| 179 | It is much faster and simpler to get to understand the PARIDE drivers | ||
| 180 | if you use them as loadable kernel modules. | ||
| 181 | |||
| 182 | Note 1: using these drivers with the "kerneld" automatic module loading | ||
| 183 | system is not recommended for beginners, and is not documented here. | ||
| 184 | |||
| 185 | Note 2: if you build PARPORT support as a loadable module, PARIDE must | ||
| 186 | also be built as loadable modules, and PARPORT must be loaded before the | ||
| 187 | PARIDE modules. | ||
| 188 | |||
| 189 | To use PARIDE, you must begin by | ||
| 190 | |||
| 191 | insmod paride | ||
| 192 | |||
| 193 | this loads a base module which provides a registry for the protocols, | ||
| 194 | among other tasks. | ||
| 195 | |||
| 196 | Then, load as many of the protocol modules as you think you might need. | ||
| 197 | As you load each module, it will register the protocols that it supports, | ||
| 198 | and print a log message to your kernel log file and your console. For | ||
| 199 | example: | ||
| 200 | |||
| 201 | # insmod epat | ||
| 202 | paride: epat registered as protocol 0 | ||
| 203 | # insmod kbic | ||
| 204 | paride: k951 registered as protocol 1 | ||
| 205 | paride: k971 registered as protocol 2 | ||
| 206 | |||
| 207 | Finally, you can load high-level drivers for each kind of device that | ||
| 208 | you have connected. By default, each driver will autoprobe for a single | ||
| 209 | device, but you can support up to four similar devices by giving their | ||
| 210 | individual co-ordinates when you load the driver. | ||
| 211 | |||
| 212 | For example, if you had two no-name CD-ROM drives both using the | ||
| 213 | KingByte KBIC-951A adapter, one on port 0x378 and the other on 0x3bc | ||
| 214 | you could give the following command: | ||
| 215 | |||
| 216 | # insmod pcd drive0=0x378,1 drive1=0x3bc,1 | ||
| 217 | |||
| 218 | For most adapters, giving a port address and protocol number is sufficient, | ||
| 219 | but check the source files in linux/drivers/block/paride for more | ||
| 220 | information. (Hopefully someone will write some man pages one day !). | ||
| 221 | |||
| 222 | As another example, here's what happens when PARPORT is installed, and | ||
| 223 | a SyQuest EZ-135 is attached to port 0x378: | ||
| 224 | |||
| 225 | # insmod paride | ||
| 226 | paride: version 1.0 installed | ||
| 227 | # insmod epat | ||
| 228 | paride: epat registered as protocol 0 | ||
| 229 | # insmod pd | ||
| 230 | pd: pd version 1.0, major 45, cluster 64, nice 0 | ||
| 231 | pda: Sharing parport1 at 0x378 | ||
| 232 | pda: epat 1.0, Shuttle EPAT chip c3 at 0x378, mode 5 (EPP-32), delay 1 | ||
| 233 | pda: SyQuest EZ135A, 262144 blocks [128M], (512/16/32), removable media | ||
| 234 | pda: pda1 | ||
| 235 | |||
| 236 | Note that the last line is the output from the generic partition table | ||
| 237 | scanner - in this case it reports that it has found a disk with one partition. | ||
| 238 | |||
| 239 | 2.3 Using a PARIDE device | ||
| 240 | |||
| 241 | Once the drivers have been loaded, you can access PARIDE devices in the | ||
| 242 | same way as their traditional counterparts. You will probably need to | ||
| 243 | create the device "special files". Here is a simple script that you can | ||
| 244 | cut to a file and execute: | ||
| 245 | |||
| 246 | #!/bin/bash | ||
| 247 | # | ||
| 248 | # mkd -- a script to create the device special files for the PARIDE subsystem | ||
| 249 | # | ||
| 250 | function mkdev { | ||
| 251 | mknod $1 $2 $3 $4 ; chmod 0660 $1 ; chown root:disk $1 | ||
| 252 | } | ||
| 253 | # | ||
| 254 | function pd { | ||
| 255 | D=$( printf \\$( printf "x%03x" $[ $1 + 97 ] ) ) | ||
| 256 | mkdev pd$D b 45 $[ $1 * 16 ] | ||
| 257 | for P in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ||
| 258 | do mkdev pd$D$P b 45 $[ $1 * 16 + $P ] | ||
| 259 | done | ||
| 260 | } | ||
| 261 | # | ||
| 262 | cd /dev | ||
| 263 | # | ||
| 264 | for u in 0 1 2 3 ; do pd $u ; done | ||
| 265 | for u in 0 1 2 3 ; do mkdev pcd$u b 46 $u ; done | ||
| 266 | for u in 0 1 2 3 ; do mkdev pf$u b 47 $u ; done | ||
| 267 | for u in 0 1 2 3 ; do mkdev pt$u c 96 $u ; done | ||
| 268 | for u in 0 1 2 3 ; do mkdev npt$u c 96 $[ $u + 128 ] ; done | ||
| 269 | for u in 0 1 2 3 ; do mkdev pg$u c 97 $u ; done | ||
| 270 | # | ||
| 271 | # end of mkd | ||
| 272 | |||
| 273 | With the device files and drivers in place, you can access PARIDE devices | ||
| 274 | like any other Linux device. For example, to mount a CD-ROM in pcd0, use: | ||
| 275 | |||
| 276 | mount /dev/pcd0 /cdrom | ||
| 277 | |||
| 278 | If you have a fresh Avatar Shark cartridge, and the drive is pda, you | ||
| 279 | might do something like: | ||
| 280 | |||
| 281 | fdisk /dev/pda -- make a new partition table with | ||
| 282 | partition 1 of type 83 | ||
| 283 | |||
| 284 | mke2fs /dev/pda1 -- to build the file system | ||
| 285 | |||
| 286 | mkdir /shark -- make a place to mount the disk | ||
| 287 | |||
| 288 | mount /dev/pda1 /shark | ||
| 289 | |||
| 290 | Devices like the Imation superdisk work in the same way, except that | ||
| 291 | they do not have a partition table. For example to make a 120MB | ||
| 292 | floppy that you could share with a DOS system: | ||
| 293 | |||
| 294 | mkdosfs /dev/pf0 | ||
| 295 | mount /dev/pf0 /mnt | ||
| 296 | |||
| 297 | |||
| 298 | 2.4 The pf driver | ||
| 299 | |||
| 300 | The pf driver is intended for use with parallel port ATAPI disk | ||
| 301 | devices. The most common devices in this category are PD drives | ||
| 302 | and LS-120 drives. Traditionally, media for these devices are not | ||
| 303 | partitioned. Consequently, the pf driver does not support partitioned | ||
| 304 | media. This may be changed in a future version of the driver. | ||
| 305 | |||
| 306 | 2.5 Using the pt driver | ||
| 307 | |||
| 308 | The pt driver for parallel port ATAPI tape drives is a minimal driver. | ||
| 309 | It does not yet support many of the standard tape ioctl operations. | ||
| 310 | For best performance, a block size of 32KB should be used. You will | ||
| 311 | probably want to set the parallel port delay to 0, if you can. | ||
| 312 | |||
| 313 | 2.6 Using the pg driver | ||
| 314 | |||
| 315 | The pg driver can be used in conjunction with the cdrecord program | ||
| 316 | to create CD-ROMs. Please get cdrecord version 1.6.1 or later | ||
| 317 | from ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ . To record CD-R media | ||
| 318 | your parallel port should ideally be set to EPP mode, and the "port delay" | ||
| 319 | should be set to 0. With those settings it is possible to record at 2x | ||
| 320 | speed without any buffer underruns. If you cannot get the driver to work | ||
| 321 | in EPP mode, try to use "bidirectional" or "PS/2" mode and 1x speeds only. | ||
| 322 | |||
| 323 | |||
| 324 | 3. Troubleshooting | ||
| 325 | |||
| 326 | 3.1 Use EPP mode if you can | ||
| 327 | |||
| 328 | The most common problems that people report with the PARIDE drivers | ||
| 329 | concern the parallel port CMOS settings. At this time, none of the | ||
| 330 | PARIDE protocol modules support ECP mode, or any ECP combination modes. | ||
| 331 | If you are able to do so, please set your parallel port into EPP mode | ||
| 332 | using your CMOS setup procedure. | ||
| 333 | |||
| 334 | 3.2 Check the port delay | ||
| 335 | |||
| 336 | Some parallel ports cannot reliably transfer data at full speed. To | ||
| 337 | offset the errors, the PARIDE protocol modules introduce a "port | ||
| 338 | delay" between each access to the i/o ports. Each protocol sets | ||
| 339 | a default value for this delay. In most cases, the user can override | ||
| 340 | the default and set it to 0 - resulting in somewhat higher transfer | ||
| 341 | rates. In some rare cases (especially with older 486 systems) the | ||
| 342 | default delays are not long enough. if you experience corrupt data | ||
| 343 | transfers, or unexpected failures, you may wish to increase the | ||
| 344 | port delay. The delay can be programmed using the "driveN" parameters | ||
| 345 | to each of the high-level drivers. Please see the notes above, or | ||
| 346 | read the comments at the beginning of the driver source files in | ||
| 347 | linux/drivers/block/paride. | ||
| 348 | |||
| 349 | 3.3 Some drives need a printer reset | ||
| 350 | |||
| 351 | There appear to be a number of "noname" external drives on the market | ||
| 352 | that do not always power up correctly. We have noticed this with some | ||
| 353 | drives based on OnSpec and older Freecom adapters. In these rare cases, | ||
| 354 | the adapter can often be reinitialised by issuing a "printer reset" on | ||
| 355 | the parallel port. As the reset operation is potentially disruptive in | ||
| 356 | multiple device environments, the PARIDE drivers will not do it | ||
| 357 | automatically. You can however, force a printer reset by doing: | ||
| 358 | |||
| 359 | insmod lp reset=1 | ||
| 360 | rmmod lp | ||
| 361 | |||
| 362 | If you have one of these marginal cases, you should probably build | ||
| 363 | your paride drivers as modules, and arrange to do the printer reset | ||
| 364 | before loading the PARIDE drivers. | ||
| 365 | |||
| 366 | 3.4 Use the verbose option and dmesg if you need help | ||
| 367 | |||
| 368 | While a lot of testing has gone into these drivers to make them work | ||
| 369 | as smoothly as possible, problems will arise. If you do have problems, | ||
| 370 | please check all the obvious things first: does the drive work in | ||
| 371 | DOS with the manufacturer's drivers ? If that doesn't yield any useful | ||
| 372 | clues, then please make sure that only one drive is hooked to your system, | ||
| 373 | and that either (a) PARPORT is enabled or (b) no other device driver | ||
| 374 | is using your parallel port (check in /proc/ioports). Then, load the | ||
| 375 | appropriate drivers (you can load several protocol modules if you want) | ||
| 376 | as in: | ||
| 377 | |||
| 378 | # insmod paride | ||
| 379 | # insmod epat | ||
| 380 | # insmod bpck | ||
| 381 | # insmod kbic | ||
| 382 | ... | ||
| 383 | # insmod pd verbose=1 | ||
| 384 | |||
| 385 | (using the correct driver for the type of device you have, of course). | ||
| 386 | The verbose=1 parameter will cause the drivers to log a trace of their | ||
| 387 | activity as they attempt to locate your drive. | ||
| 388 | |||
| 389 | Use 'dmesg' to capture a log of all the PARIDE messages (any messages | ||
| 390 | beginning with paride:, a protocol module's name or a driver's name) and | ||
| 391 | include that with your bug report. You can submit a bug report in one | ||
| 392 | of two ways. Either send it directly to the author of the PARIDE suite, | ||
| 393 | by e-mail to grant@torque.net, or join the linux-parport mailing list | ||
| 394 | and post your report there. | ||
| 395 | |||
| 396 | 3.5 For more information or help | ||
| 397 | |||
| 398 | You can join the linux-parport mailing list by sending a mail message | ||
| 399 | to | ||
| 400 | linux-parport-request@torque.net | ||
| 401 | |||
| 402 | with the single word | ||
| 403 | |||
| 404 | subscribe | ||
| 405 | |||
| 406 | in the body of the mail message (not in the subject line). Please be | ||
| 407 | sure that your mail program is correctly set up when you do this, as | ||
| 408 | the list manager is a robot that will subscribe you using the reply | ||
| 409 | address in your mail headers. REMOVE any anti-spam gimmicks you may | ||
| 410 | have in your mail headers, when sending mail to the list server. | ||
| 411 | |||
| 412 | You might also find some useful information on the linux-parport | ||
| 413 | web pages (although they are not always up to date) at | ||
| 414 | |||
| 415 | http://www.torque.net/parport/ | ||
| 416 | |||
| 417 | |||
diff --git a/Documentation/blockdev/ramdisk.txt b/Documentation/blockdev/ramdisk.txt new file mode 100644 index 000000000000..6c820baa19a6 --- /dev/null +++ b/Documentation/blockdev/ramdisk.txt | |||
| @@ -0,0 +1,165 @@ | |||
| 1 | Using the RAM disk block device with Linux | ||
| 2 | ------------------------------------------ | ||
| 3 | |||
| 4 | Contents: | ||
| 5 | |||
| 6 | 1) Overview | ||
| 7 | 2) Kernel Command Line Parameters | ||
| 8 | 3) Using "rdev -r" | ||
| 9 | 4) An Example of Creating a Compressed RAM Disk | ||
| 10 | |||
| 11 | |||
| 12 | 1) Overview | ||
| 13 | ----------- | ||
| 14 | |||
| 15 | The RAM disk driver is a way to use main system memory as a block device. It | ||
| 16 | is required for initrd, an initial filesystem used if you need to load modules | ||
| 17 | in order to access the root filesystem (see Documentation/initrd.txt). It can | ||
| 18 | also be used for a temporary filesystem for crypto work, since the contents | ||
| 19 | are erased on reboot. | ||
| 20 | |||
| 21 | The RAM disk dynamically grows as more space is required. It does this by using | ||
| 22 | RAM from the buffer cache. The driver marks the buffers it is using as dirty | ||
| 23 | so that the VM subsystem does not try to reclaim them later. | ||
| 24 | |||
| 25 | The RAM disk supports up to 16 RAM disks by default, and can be reconfigured | ||
| 26 | to support an unlimited number of RAM disks (at your own risk). Just change | ||
| 27 | the configuration symbol BLK_DEV_RAM_COUNT in the Block drivers config menu | ||
| 28 | and (re)build the kernel. | ||
| 29 | |||
| 30 | To use RAM disk support with your system, run './MAKEDEV ram' from the /dev | ||
| 31 | directory. RAM disks are all major number 1, and start with minor number 0 | ||
| 32 | for /dev/ram0, etc. If used, modern kernels use /dev/ram0 for an initrd. | ||
| 33 | |||
| 34 | The new RAM disk also has the ability to load compressed RAM disk images, | ||
| 35 | allowing one to squeeze more programs onto an average installation or | ||
| 36 | rescue floppy disk. | ||
| 37 | |||
| 38 | |||
| 39 | 2) Kernel Command Line Parameters | ||
| 40 | --------------------------------- | ||
| 41 | |||
| 42 | ramdisk_size=N | ||
| 43 | ============== | ||
| 44 | |||
| 45 | This parameter tells the RAM disk driver to set up RAM disks of N k size. The | ||
| 46 | default is 4096 (4 MB) (8192 (8 MB) on S390). | ||
| 47 | |||
| 48 | ramdisk_blocksize=N | ||
| 49 | =================== | ||
| 50 | |||
| 51 | This parameter tells the RAM disk driver how many bytes to use per block. The | ||
| 52 | default is 1024 (BLOCK_SIZE). | ||
| 53 | |||
| 54 | |||
| 55 | 3) Using "rdev -r" | ||
| 56 | ------------------ | ||
| 57 | |||
| 58 | The usage of the word (two bytes) that "rdev -r" sets in the kernel image is | ||
| 59 | as follows. The low 11 bits (0 -> 10) specify an offset (in 1 k blocks) of up | ||
| 60 | to 2 MB (2^11) of where to find the RAM disk (this used to be the size). Bit | ||
| 61 | 14 indicates that a RAM disk is to be loaded, and bit 15 indicates whether a | ||
| 62 | prompt/wait sequence is to be given before trying to read the RAM disk. Since | ||
| 63 | the RAM disk dynamically grows as data is being written into it, a size field | ||
| 64 | is not required. Bits 11 to 13 are not currently used and may as well be zero. | ||
| 65 | These numbers are no magical secrets, as seen below: | ||
| 66 | |||
| 67 | ./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK 0x07FF | ||
| 68 | ./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000 | ||
| 69 | ./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000 | ||
| 70 | |||
| 71 | Consider a typical two floppy disk setup, where you will have the | ||
| 72 | kernel on disk one, and have already put a RAM disk image onto disk #2. | ||
| 73 | |||
| 74 | Hence you want to set bits 0 to 13 as 0, meaning that your RAM disk | ||
| 75 | starts at an offset of 0 kB from the beginning of the floppy. | ||
| 76 | The command line equivalent is: "ramdisk_start=0" | ||
| 77 | |||
| 78 | You want bit 14 as one, indicating that a RAM disk is to be loaded. | ||
| 79 | The command line equivalent is: "load_ramdisk=1" | ||
| 80 | |||
| 81 | You want bit 15 as one, indicating that you want a prompt/keypress | ||
| 82 | sequence so that you have a chance to switch floppy disks. | ||
| 83 | The command line equivalent is: "prompt_ramdisk=1" | ||
| 84 | |||
| 85 | Putting that together gives 2^15 + 2^14 + 0 = 49152 for an rdev word. | ||
| 86 | So to create disk one of the set, you would do: | ||
| 87 | |||
| 88 | /usr/src/linux# cat arch/i386/boot/zImage > /dev/fd0 | ||
| 89 | /usr/src/linux# rdev /dev/fd0 /dev/fd0 | ||
| 90 | /usr/src/linux# rdev -r /dev/fd0 49152 | ||
| 91 | |||
| 92 | If you make a boot disk that has LILO, then for the above, you would use: | ||
| 93 | append = "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1" | ||
| 94 | Since the default start = 0 and the default prompt = 1, you could use: | ||
| 95 | append = "load_ramdisk=1" | ||
| 96 | |||
| 97 | |||
| 98 | 4) An Example of Creating a Compressed RAM Disk | ||
| 99 | ---------------------------------------------- | ||
| 100 | |||
| 101 | To create a RAM disk image, you will need a spare block device to | ||
| 102 | construct it on. This can be the RAM disk device itself, or an | ||
| 103 | unused disk partition (such as an unmounted swap partition). For this | ||
| 104 | example, we will use the RAM disk device, "/dev/ram0". | ||
| 105 | |||
| 106 | Note: This technique should not be done on a machine with less than 8 MB | ||
| 107 | of RAM. If using a spare disk partition instead of /dev/ram0, then this | ||
| 108 | restriction does not apply. | ||
| 109 | |||
| 110 | a) Decide on the RAM disk size that you want. Say 2 MB for this example. | ||
| 111 | Create it by writing to the RAM disk device. (This step is not currently | ||
| 112 | required, but may be in the future.) It is wise to zero out the | ||
| 113 | area (esp. for disks) so that maximal compression is achieved for | ||
| 114 | the unused blocks of the image that you are about to create. | ||
| 115 | |||
| 116 | dd if=/dev/zero of=/dev/ram0 bs=1k count=2048 | ||
| 117 | |||
| 118 | b) Make a filesystem on it. Say ext2fs for this example. | ||
| 119 | |||
| 120 | mke2fs -vm0 /dev/ram0 2048 | ||
| 121 | |||
| 122 | c) Mount it, copy the files you want to it (eg: /etc/* /dev/* ...) | ||
| 123 | and unmount it again. | ||
| 124 | |||
| 125 | d) Compress the contents of the RAM disk. The level of compression | ||
| 126 | will be approximately 50% of the space used by the files. Unused | ||
| 127 | space on the RAM disk will compress to almost nothing. | ||
| 128 | |||
| 129 | dd if=/dev/ram0 bs=1k count=2048 | gzip -v9 > /tmp/ram_image.gz | ||
| 130 | |||
| 131 | e) Put the kernel onto the floppy | ||
| 132 | |||
| 133 | dd if=zImage of=/dev/fd0 bs=1k | ||
| 134 | |||
| 135 | f) Put the RAM disk image onto the floppy, after the kernel. Use an offset | ||
| 136 | that is slightly larger than the kernel, so that you can put another | ||
| 137 | (possibly larger) kernel onto the same floppy later without overlapping | ||
| 138 | the RAM disk image. An offset of 400 kB for kernels about 350 kB in | ||
| 139 | size would be reasonable. Make sure offset+size of ram_image.gz is | ||
| 140 | not larger than the total space on your floppy (usually 1440 kB). | ||
| 141 | |||
| 142 | dd if=/tmp/ram_image.gz of=/dev/fd0 bs=1k seek=400 | ||
| 143 | |||
| 144 | g) Use "rdev" to set the boot device, RAM disk offset, prompt flag, etc. | ||
| 145 | For prompt_ramdisk=1, load_ramdisk=1, ramdisk_start=400, one would | ||
| 146 | have 2^15 + 2^14 + 400 = 49552. | ||
| 147 | |||
| 148 | rdev /dev/fd0 /dev/fd0 | ||
| 149 | rdev -r /dev/fd0 49552 | ||
| 150 | |||
| 151 | That is it. You now have your boot/root compressed RAM disk floppy. Some | ||
| 152 | users may wish to combine steps (d) and (f) by using a pipe. | ||
| 153 | |||
| 154 | -------------------------------------------------------------------------- | ||
| 155 | Paul Gortmaker 12/95 | ||
| 156 | |||
| 157 | Changelog: | ||
| 158 | ---------- | ||
| 159 | |||
| 160 | 10-22-04 : Updated to reflect changes in command line options, remove | ||
| 161 | obsolete references, general cleanup. | ||
| 162 | James Nelson (james4765@gmail.com) | ||
| 163 | |||
| 164 | |||
| 165 | 12-95 : Original Document | ||
