aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/blockdev
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/blockdev')
-rw-r--r--Documentation/blockdev/00-INDEX16
-rw-r--r--Documentation/blockdev/README.DAC960756
-rw-r--r--Documentation/blockdev/cciss.txt171
-rw-r--r--Documentation/blockdev/cpqarray.txt93
-rw-r--r--Documentation/blockdev/floppy.txt245
-rw-r--r--Documentation/blockdev/nbd.txt47
-rw-r--r--Documentation/blockdev/paride.txt417
-rw-r--r--Documentation/blockdev/ramdisk.txt165
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 @@
100-INDEX
2 - this file
3README.DAC960
4 - info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
5cciss.txt
6 - info, major/minor #'s for Compaq's SMART Array Controllers.
7cpqarray.txt
8 - info on using Compaq's SMART2 Intelligent Disk Array Controllers.
9floppy.txt
10 - notes and driver options for the floppy disk driver.
11nbd.txt
12 - info on a TCP implementation of a network block device.
13paride.txt
14 - information about the parallel port IDE subsystem.
15ramdisk.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
19Mylex, Inc. designs and manufactures a variety of high performance PCI RAID
20controllers. Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont,
21California 94555, USA and can be reached at 510.796.6100 or on the World Wide
22Web at http://www.mylex.com. Mylex Technical Support can be reached by
23electronic mail at mylexsup@us.ibm.com, by voice at 510.608.2400, or by FAX at
24510.745.7715. Contact information for offices in Europe and Japan is available
25on their Web site.
26
27The latest information on Linux support for DAC960 PCI RAID Controllers, as
28well as the most recent release of this driver, will always be available from
29my Linux Home Page at URL "http://www.dandelion.com/Linux/". The Linux DAC960
30driver supports all current Mylex PCI RAID controllers including the new
31eXtremeRAID 2000/3000 and AcceleRAID 352/170/160 models which have an entirely
32new firmware interface from the older eXtremeRAID 1100, AcceleRAID 150/200/250,
33and DAC960PJ/PG/PU/PD/PL. See below for a complete controller list as well as
34minimum firmware version requirements. For simplicity, in most places this
35documentation refers to DAC960 generically rather than explicitly listing all
36the supported models.
37
38Driver bug reports should be sent via electronic mail to "lnz@dandelion.com".
39Please include with the bug report the complete configuration messages reported
40by the driver at startup, along with any subsequent system messages relevant to
41the controller's operation, and a detailed description of your system's
42hardware configuration. Driver bugs are actually quite rare; if you encounter
43problems with disks being marked offline, for example, please contact Mylex
44Technical Support as the problem is related to the hardware configuration
45rather than the Linux driver.
46
47Please consult the RAID controller documentation for detailed information
48regarding installation and configuration of the controllers. This document
49primarily provides information specific to the Linux support.
50
51
52 DRIVER FEATURES
53
54The DAC960 RAID controllers are supported solely as high performance RAID
55controllers, not as interfaces to arbitrary SCSI devices. The Linux DAC960
56driver operates at the block device level, the same level as the SCSI and IDE
57drivers. Unlike other RAID controllers currently supported on Linux, the
58DAC960 driver is not dependent on the SCSI subsystem, and hence avoids all the
59complexity and unnecessary code that would be associated with an implementation
60as a SCSI driver. The DAC960 driver is designed for as high a performance as
61possible with no compromises or extra code for compatibility with lower
62performance devices. The DAC960 driver includes extensive error logging and
63online configuration management capabilities. Except for initial configuration
64of the controller and adding new disk drives, most everything can be handled
65from Linux while the system is operational.
66
67The DAC960 driver is architected to support up to 8 controllers per system.
68Each DAC960 parallel SCSI controller can support up to 15 disk drives per
69channel, for a maximum of 60 drives on a four channel controller; the fibre
70channel eXtremeRAID 3000 controller supports up to 125 disk drives per loop for
71a total of 250 drives. The drives installed on a controller are divided into
72one or more "Drive Groups", and then each Drive Group is subdivided further
73into 1 to 32 "Logical Drives". Each Logical Drive has a specific RAID Level
74and caching policy associated with it, and it appears to Linux as a single
75block device. Logical Drives are further subdivided into up to 7 partitions
76through the normal Linux and PC disk partitioning schemes. Logical Drives are
77also known as "System Drives", and Drive Groups are also called "Packs". Both
78terms are in use in the Mylex documentation; I have chosen to standardize on
79the more generic "Logical Drive" and "Drive Group".
80
81DAC960 RAID disk devices are named in the style of the obsolete Device File
82System (DEVFS). The device corresponding to Logical Drive D on Controller C
83is referred to as /dev/rd/cCdD, and the partitions are called /dev/rd/cCdDp1
84through /dev/rd/cCdDp7. For example, partition 3 of Logical Drive 5 on
85Controller 2 is referred to as /dev/rd/c2d5p3. Note that unlike with SCSI
86disks the device names will not change in the event of a disk drive failure.
87The DAC960 driver is assigned major numbers 48 - 55 with one major number per
88controller. The 8 bits of minor number are divided into 5 bits for the Logical
89Drive and 3 bits for the partition.
90
91
92 SUPPORTED DAC960/AcceleRAID/eXtremeRAID PCI RAID CONTROLLERS
93
94The following list comprises the supported DAC960, AcceleRAID, and eXtremeRAID
95PCI RAID Controllers as of the date of this document. It is recommended that
96anyone purchasing a Mylex PCI RAID Controller not in the following table
97contact the author beforehand to verify that it is or will be supported.
98
99eXtremeRAID 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
106eXtremeRAID 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
112AcceleRAID 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
118AcceleRAID 170
119 1 Wide Ultra-160 LVD SCSI channel
120 100MHz Intel i960RM RISC Processor
121 16MB/32MB/64MB ECC SDRAM Memory
122
123AcceleRAID 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
129eXtremeRAID 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
135AcceleRAID 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
141AcceleRAID 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
147AcceleRAID 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
153DAC960PJ 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
157DAC960PG 1/2/3 Wide Ultra SCSI-3 Channels
158 33MHz Intel i960RP RISC Processor
159 4MB/8MB ECC EDO Memory
160
161DAC960PU 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
165DAC960PD 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
169DAC960PL 1/2/3 Wide Fast SCSI-2 Channels
170 Intel i960 RISC Processor
171 2MB/4MB/8MB/16MB/32MB DRAM Memory
172
173DAC960P 1/2/3 Wide Fast SCSI-2 Channels
174 Intel i960 RISC Processor
175 2MB/4MB/8MB/16MB/32MB DRAM Memory
176
177For the eXtremeRAID 2000/3000 and AcceleRAID 352/170/160, firmware version
1786.00-01 or above is required.
179
180For the eXtremeRAID 1100, firmware version 5.06-0-52 or above is required.
181
182For the AcceleRAID 250, 200, and 150, firmware version 4.06-0-57 or above is
183required.
184
185For the DAC960PJ and DAC960PG, firmware version 4.06-0-00 or above is required.
186
187For the DAC960PU, DAC960PD, DAC960PL, and DAC960P, either firmware version
1883.51-0-04 or above is required (for dual Flash ROM controllers), or firmware
189version 2.73-0-00 or above is required (for single Flash ROM controllers)
190
191Please note that not all SCSI disk drives are suitable for use with DAC960
192controllers, and only particular firmware versions of any given model may
193actually function correctly. Similarly, not all motherboards have a BIOS that
194properly initializes the AcceleRAID 250, AcceleRAID 200, AcceleRAID 150,
195DAC960PJ, and DAC960PG because the Intel i960RD/RP is a multi-function device.
196If in doubt, contact Mylex RAID Technical Support (mylexsup@us.ibm.com) to
197verify compatibility. Mylex makes available a hard disk compatibility list at
198http://www.mylex.com/support/hdcomp/hd-lists.html.
199
200
201 DRIVER INSTALLATION
202
203This distribution was prepared for Linux kernel version 2.2.19 or 2.4.12.
204
205To install the DAC960 RAID driver, you may use the following commands,
206replacing "/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
217Then install "arch/i386/boot/bzImage" or "arch/i386/boot/zImage" as your
218standard kernel, run lilo if appropriate, and reboot.
219
220To 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.
222LILO 21 and FDISK v2.9 include DAC960 support; also included in this archive
223are patches to LILO 20 and FDISK v2.8 that add DAC960 support, along with
224statically linked executables of LILO and FDISK. This modified version of LILO
225will allow booting from a DAC960 controller and/or mounting the root file
226system from a DAC960.
227
228Red Hat Linux 6.0 and SuSE Linux 6.1 include support for Mylex PCI RAID
229controllers. Installing directly onto a DAC960 may be problematic from other
230Linux distributions until their installation utilities are updated.
231
232
233 INSTALLATION NOTES
234
235Before installing Linux or adding DAC960 logical drives to an existing Linux
236system, the controller must first be configured to provide one or more logical
237drives using the BIOS Configuration Utility or DACCF. Please note that since
238there are only at most 6 usable partitions on each logical drive, systems
239requiring more partitions should subdivide a drive group into multiple logical
240drives, each of which can have up to 6 usable partitions. Also, note that with
241large disk arrays it is advisable to enable the 8GB BIOS Geometry (255/63)
242rather than accepting the default 2GB BIOS Geometry (128/32); failing to so do
243will cause the logical drive geometry to have more than 65535 cylinders which
244will make it impossible for FDISK to be used properly. The 8GB BIOS Geometry
245can be enabled by configuring the DAC960 BIOS, which is accessible via Alt-M
246during the BIOS initialization sequence.
247
248For maximum performance and the most efficient E2FSCK performance, it is
249recommended that EXT2 file systems be built with a 4KB block size and 16 block
250stride 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
252large number of small files on the file systems, it is also beneficial to add
253the "-i 16384" option to increase the bytes per inode parameter thereby
254reducing the file system metadata. Finally, on systems that will only be run
255with Linux 2.2 or later kernels it is beneficial to enable sparse superblocks
256with the "-s 1" option.
257
258
259 DAC960 ANNOUNCEMENTS MAILING LIST
260
261The DAC960 Announcements Mailing List provides a forum for informing Linux
262users of new driver releases and other announcements regarding Linux support
263for 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
265message body.
266
267
268 CONTROLLER CONFIGURATION AND STATUS MONITORING
269
270The DAC960 RAID controllers running firmware 4.06 or above include a Background
271Initialization facility so that system downtime is minimized both for initial
272installation and subsequent configuration of additional storage. The BIOS
273Configuration Utility (accessible via Alt-R during the BIOS initialization
274sequence) is used to quickly configure the controller, and then the logical
275drives that have been created are available for immediate use even while they
276are still being initialized by the controller. The primary need for online
277configuration and status monitoring is then to avoid system downtime when disk
278drives fail and must be replaced. Mylex's online monitoring and configuration
279utilities are being ported to Linux and will become available at some point in
280the future. Note that with a SAF-TE (SCSI Accessed Fault-Tolerant Enclosure)
281enclosure, the controller is able to rebuild failed drives automatically as
282soon as a drive replacement is made available.
283
284The primary interfaces for controller configuration and status monitoring are
285special files created in the /proc/rd/... hierarchy along with the normal
286system console logging mechanism. Whenever the system is operating, the DAC960
287driver queries each controller for status information every 10 seconds, and
288checks for additional conditions every 60 seconds. The initial status of each
289controller is always available for controller N in /proc/rd/cN/initial_status,
290and 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
292driver to the system console and will appear in the log files maintained by
293syslog. The progress of asynchronous rebuild or consistency check operations
294is also available in /proc/rd/cN/current_status, and progress messages are
295logged to the system console at most every 60 seconds.
296
297Starting with the 2.2.3/2.0.3 versions of the driver, the status information
298available in /proc/rd/cN/initial_status and /proc/rd/cN/current_status has been
299augmented to include the vendor, model, revision, and serial number (if
300available) for each physical device found connected to the controller:
301
302***** DAC960 RAID Driver Version 2.2.3 of 19 August 1999 *****
303Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com>
304Configuring 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
336To simplify the monitoring process for custom software, the special file
337/proc/rd/status returns "OK" when all DAC960 controllers in the system are
338operating normally and no failures have occurred, or "ALERT" if any logical
339drives are offline or critical or any non-standby physical drives are dead.
340
341Configuration 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
343special file to initiate a configuration operation, and the results of the
344operation can then be read back from the special file in addition to being
345logged 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
350is typically used to execute configuration commands. The configuration
351commands 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
413The following annotated logs demonstrate the controller configuration and and
414online status monitoring capabilities of the Linux DAC960 Driver. The test
415configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a
416DAC960PJ controller. The physical drives are configured into a single drive
417group without a standby drive, and the drive group has been configured into two
418logical drives, one RAID-5 and one RAID-6. Note that these logs are from an
419earlier version of the driver and the messages have changed somewhat with newer
420releases, but the functionality remains similar. First, here is the current
421status of the RAID configuration:
422
423gwynedd:/u/lnz# cat /proc/rd/c0/current_status
424***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 *****
425Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com>
426Configuring 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
445gwynedd:/u/lnz# cat /proc/rd/status
446OK
447
448The above messages indicate that everything is healthy, and /proc/rd/status
449returns "OK" indicating that there are no problems with any DAC960 controller
450in the system. For demonstration purposes, while I/O is active Physical Drive
4511:1 is now disconnected, simulating a drive failure. The failure is noted by
452the driver within 10 seconds of the controller's having detected it, and the
453driver logs the following console status messages indicating that Logical
454Drives 0 and 1 are now CRITICAL as a result of Physical Drive 1:1 being DEAD:
455
456DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02
457DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02
458DAC960#0: Physical Drive 1:1 killed because of timeout on SCSI command
459DAC960#0: Physical Drive 1:1 is now DEAD
460DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL
461DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL
462
463The Sense Keys logged here are just Check Condition / Unit Attention conditions
464arising from a SCSI bus reset that is forced by the controller during its error
465recovery procedures. Concurrently with the above, the driver status available
466from /proc/rd also reflects the drive failure. The status message in
467/proc/rd/status has changed from "OK" to "ALERT":
468
469gwynedd:/u/lnz# cat /proc/rd/status
470ALERT
471
472and /proc/rd/c0/current_status has been updated:
473
474gwynedd:/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
488Since there are no standby drives configured, the system can continue to access
489the logical drives in a performance degraded mode until the failed drive is
490replaced and a rebuild operation completed to restore the redundancy of the
491logical drives. Once Physical Drive 1:1 is replaced with a properly
492functioning 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
494controller to initiate a rebuild operation onto the newly replaced drive:
495
496gwynedd:/u/lnz# echo "rebuild 1:1" > /proc/rd/c0/user_command
497gwynedd:/u/lnz# cat /proc/rd/c0/user_command
498Rebuild of Physical Drive 1:1 Initiated
499
500The echo command instructs the controller to initiate an asynchronous rebuild
501operation onto Physical Drive 1:1, and the status message that results from the
502operation is then available for reading from /proc/rd/c0/user_command, as well
503as being logged to the console by the driver.
504
505Within 10 seconds of this command the driver logs the initiation of the
506asynchronous rebuild operation:
507
508DAC960#0: Rebuild of Physical Drive 1:1 Initiated
509DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01
510DAC960#0: Physical Drive 1:1 is now WRITE-ONLY
511DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 1% completed
512
513and /proc/rd/c0/current_status is updated:
514
515gwynedd:/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
529As the rebuild progresses, the current status in /proc/rd/c0/current_status is
530updated every 10 seconds:
531
532gwynedd:/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
546and every minute a progress message is logged to the console by the driver:
547
548DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 32% completed
549DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 63% completed
550DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 94% completed
551DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 94% completed
552
553Finally, the rebuild completes successfully. The driver logs the status of the
554logical and physical drives and the rebuild completion:
555
556DAC960#0: Rebuild Completed Successfully
557DAC960#0: Physical Drive 1:1 is now ONLINE
558DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE
559DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now ONLINE
560
561/proc/rd/c0/current_status is updated:
562
563gwynedd:/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
577and /proc/rd/status indicates that everything is healthy once again:
578
579gwynedd:/u/lnz# cat /proc/rd/status
580OK
581
582
583 EXAMPLE II - DRIVE FAILURE WITH A STANDBY DRIVE
584
585The following annotated logs demonstrate the controller configuration and and
586online status monitoring capabilities of the Linux DAC960 Driver. The test
587configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a
588DAC960PJ controller. The physical drives are configured into a single drive
589group with a standby drive, and the drive group has been configured into two
590logical drives, one RAID-5 and one RAID-6. Note that these logs are from an
591earlier version of the driver and the messages have changed somewhat with newer
592releases, but the functionality remains similar. First, here is the current
593status of the RAID configuration:
594
595gwynedd:/u/lnz# cat /proc/rd/c0/current_status
596***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 *****
597Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com>
598Configuring 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
617gwynedd:/u/lnz# cat /proc/rd/status
618OK
619
620The above messages indicate that everything is healthy, and /proc/rd/status
621returns "OK" indicating that there are no problems with any DAC960 controller
622in the system. For demonstration purposes, while I/O is active Physical Drive
6231:2 is now disconnected, simulating a drive failure. The failure is noted by
624the driver within 10 seconds of the controller's having detected it, and the
625driver logs the following console status messages:
626
627DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02
628DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02
629DAC960#0: Physical Drive 1:2 killed because of timeout on SCSI command
630DAC960#0: Physical Drive 1:2 is now DEAD
631DAC960#0: Physical Drive 1:2 killed because it was removed
632DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL
633DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL
634
635Since a standby drive is configured, the controller automatically begins
636rebuilding onto the standby drive:
637
638DAC960#0: Physical Drive 1:3 is now WRITE-ONLY
639DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 4% completed
640
641Concurrently with the above, the driver status available from /proc/rd also
642reflects the drive failure and automatic rebuild. The status message in
643/proc/rd/status has changed from "OK" to "ALERT":
644
645gwynedd:/u/lnz# cat /proc/rd/status
646ALERT
647
648and /proc/rd/c0/current_status has been updated:
649
650gwynedd:/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
664As the rebuild progresses, the current status in /proc/rd/c0/current_status is
665updated every 10 seconds:
666
667gwynedd:/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
681and every minute a progress message is logged on the console by the driver:
682
683DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 40% completed
684DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 76% completed
685DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 66% completed
686DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 84% completed
687
688Finally, the rebuild completes successfully. The driver logs the status of the
689logical and physical drives and the rebuild completion:
690
691DAC960#0: Rebuild Completed Successfully
692DAC960#0: Physical Drive 1:3 is now ONLINE
693DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE
694DAC960#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 *****
699Copyright 1998-1999 by Leonard N. Zubkoff <lnz@dandelion.com>
700Configuring 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
719and /proc/rd/status indicates that everything is healthy once again:
720
721gwynedd:/u/lnz# cat /proc/rd/status
722OK
723
724Note that the absence of a viable standby drive does not create an "ALERT"
725status. Once dead Physical Drive 1:2 has been replaced, the controller must be
726told that this has occurred and that the newly replaced drive should become the
727new standby drive:
728
729gwynedd:/u/lnz# echo "make-standby 1:2" > /proc/rd/c0/user_command
730gwynedd:/u/lnz# cat /proc/rd/c0/user_command
731Make Standby of Physical Drive 1:2 Succeeded
732
733The echo command instructs the controller to make Physical Drive 1:2 into a
734standby drive, and the status message that results from the operation is then
735available for reading from /proc/rd/c0/user_command, as well as being logged to
736the console by the driver. Within 60 seconds of this command the driver logs:
737
738DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01
739DAC960#0: Physical Drive 1:2 is now STANDBY
740DAC960#0: Make Standby of Physical Drive 1:2 Succeeded
741
742and /proc/rd/c0/current_status is updated:
743
744gwynedd:/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 @@
1This driver is for Compaq's SMART Array Controllers.
2
3Supported Cards:
4----------------
5
6This 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
33Detecting drive failures:
34-------------------------
35
36To get the status of logical volumes and to detect physical drive
37failures, you can use the cciss_vol_status program found here:
38http://cciss.sourceforge.net/#cciss_utils
39
40Device Naming:
41--------------
42
43If nodes are not already created in the /dev/cciss directory, run as root:
44
45# cd /dev
46# ./MAKEDEV cciss
47
48You need some entries in /dev for the cciss device. The MAKEDEV script
49can make device nodes for you automatically. Currently the device setup
50is as follows:
51
52Major 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
62Minor 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
70The 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
81SCSI tape drive and medium changer support
82------------------------------------------
83
84SCSI sequential access devices and medium changer devices are supported and
85appropriate device nodes are automatically created. (e.g.
86/dev/st0, /dev/st1, etc. See the "st" man page for more details.)
87You must enable "SCSI tape drive support for Smart Array 5xxx" and
88"SCSI support" in your kernel configuration to be able to use SCSI
89tape drives with your Smart Array 5xxx controller.
90
91Additionally, note that the driver will not engage the SCSI core at init
92time. The driver must be directed to dynamically engage the SCSI core via
93the /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,
95the SCSI core may not yet be initialized (because the driver is a block
96driver) and attempting to register it with the SCSI core in such a case
97would cause a hang. This is best done via an initialization script
98(typically in /etc/init.d, but could vary depending on distribution).
99For example:
100
101 for x in /proc/driver/cciss/cciss[0-9]*
102 do
103 echo "engage scsi" > $x
104 done
105
106Once 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
109Note also that if no sequential access devices or medium changers are
110detected, the SCSI core will not be engaged by the action of the above
111script.
112
113Hot plug support for SCSI tape drives
114-------------------------------------
115
116Hot plugging of SCSI tape drives is supported, with some caveats.
117The cciss driver must be informed that changes to the SCSI bus
118have been made. This may be done via the /proc filesystem.
119For example:
120
121 echo "rescan" > /proc/scsi/cciss0/1
122
123This causes the driver to query the adapter about changes to the
124physical SCSI buses and/or fibre channel arbitrated loop and the
125driver to make note of any new or removed sequential access devices
126or medium changers. The driver will output messages indicating what
127devices have been added or removed and the controller, bus, target and
128lun used to address the device. It then notifies the SCSI mid layer
129of these changes.
130
131Note that the naming convention of the /proc filesystem entries
132contains a number in addition to the driver name. (E.g. "cciss0"
133instead of just "cciss" which you might expect.)
134
135Note: ONLY sequential access devices and medium changers are presented
136as SCSI devices to the SCSI mid layer by the cciss driver. Specifically,
137physical SCSI disk drives are NOT presented to the SCSI mid layer. The
138physical SCSI disk drives are controlled directly by the array controller
139hardware and it is important to prevent the kernel from attempting to directly
140access these devices too, as if the array controller were merely a SCSI
141controller in the same way that we are allowing it to access SCSI tape drives.
142
143SCSI error handling for tape drives and medium changers
144-------------------------------------------------------
145
146The linux SCSI mid layer provides an error handling protocol which
147kicks into gear whenever a SCSI command fails to complete within a
148certain amount of time (which can vary depending on the command).
149The cciss driver participates in this protocol to some extent. The
150normal protocol is a four step process. First the device is told
151to abort the command. If that doesn't work, the device is reset.
152If that doesn't work, the SCSI bus is reset. If that doesn't work
153the host bus adapter is reset. Because the cciss driver is a block
154driver as well as a SCSI driver and only the tape drives and medium
155changers are presented to the SCSI mid layer, and unlike more
156straightforward SCSI drivers, disk i/o continues through the block
157side during the SCSI error recovery process, the cciss driver only
158implements the first two of these actions, aborting the command, and
159resetting the device. Additionally, most tape drives will not oblige
160in aborting commands, and sometimes it appears they will not even
161obey a reset command, though in most circumstances they will. In
162the case that the command cannot be aborted and the device cannot be
163reset, the device will be set offline.
164
165In the event the error handling code is triggered and a tape drive is
166successfully reset or the tardy command is successfully aborted, the
167tape drive may still not allow i/o to continue until some command
168is issued which positions the tape to a known position. Typically you
169must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
170before 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 @@
1This driver is for Compaq's SMART2 Intelligent Disk Array Controllers.
2
3Supported Cards:
4----------------
5
6This 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
22It should also work with some really old Disk array adapters, but I am
23unable to test against these cards:
24
25 * IDA
26 * IDA-2
27 * IAES
28
29
30EISA Controllers:
31-----------------
32
33If you want to use an EISA controller you'll have to supply some
34modprobe/lilo parameters. If the driver is compiled into the kernel, must
35give it the controller's IO port address at boot time (it is not
36necessary to specify the IRQ). For example, if you had two SMART-2/E
37controllers, in EISA slots 1 and 2 you'd give it a boot argument like
38this:
39
40 smart2=0x1000,0x2000
41
42If you were loading the driver as a module, you'd give load it like this:
43
44 modprobe cpqarray eisa=0x1000,0x2000
45
46You can use EISA and PCI adapters at the same time.
47
48
49Device Naming:
50--------------
51
52You need some entries in /dev for the ida device. MAKEDEV in the /dev
53directory can make device nodes for you automatically. The device setup is
54as follows:
55
56Major 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
66Minor 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
74The 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
86Changelog:
87==========
88
8910-28-2004 : General cleanup, syntax fixes for in-kernel driver version.
90 James Nelson <james4765@gmail.com>
91
92
931999 : 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 @@
1This file describes the floppy driver.
2
3FAQ list:
4=========
5
6 A FAQ list may be found in the fdutils package (see below), and also
7at <http://fdutils.linux.lu/faq.html>.
8
9
10LILO configuration options (Thinkpad users, read this)
11======================================================
12
13 The floppy driver is configured using the 'floppy=' option in
14lilo. This option can be typed at the boot prompt, or entered in the
15lilo configuration file.
16
17 Example: If your kernel is called linux-2.6.9, type the following line
18at the lilo boot prompt (if you have a thinkpad):
19
20 linux-2.6.9 floppy=thinkpad
21
22You may also enter the following line in /etc/lilo.conf, in the description
23of 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
33prompt, the option strings of both places are concatenated, the boot
34prompt options coming last. That's why there are also options to
35restore the default behavior.
36
37
38Module configuration options
39============================
40
41 If you use the floppy driver as a module, use the following syntax:
42modprobe floppy <options>
43
44Example:
45 modprobe floppy omnibook messages
46
47 If you need certain options enabled every time you load the floppy driver,
48you can put:
49
50 options floppy omnibook messages
51
52in /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
208Supporting utilities and additional documentation:
209==================================================
210
211 Additional parameters of the floppy driver can be configured at
212runtime. Utilities which do this can be found in the fdutils package.
213This package also contains a new version of mtools which allows to
214access high capacity disks (up to 1992K on a high density 3 1/2 disk!).
215It also contains additional documentation about the floppy driver.
216
217The latest version can be found at fdutils homepage:
218 http://fdutils.linux.lu
219
220The 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
225Reporting problems about the floppy driver
226==========================================
227
228 If you have a question or a bug report about the floppy driver, mail
229me at Alain.Knaff@poboxes.com . If you post to Usenet, preferably use
230comp.os.linux.hardware. As the volume in these groups is rather high,
231be sure to include the word "floppy" (or "FLOPPY") in the subject
232line. If the reported problem happens when mounting floppy disks, be
233sure 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
239Changelog
240=========
241
24210-30-2004 : Cleanup, updating, add reference to module configuration.
243 James Nelson <james4765@gmail.com>
244
2456-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
4PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net>
5
61. Introduction
7
8Owing to the simplicity and near universality of the parallel port interface
9to personal computers, many external devices such as portable hard-disk,
10CD-ROM, LS-120 and tape drives use the parallel port to connect to their
11host computer. While some devices (notably scanners) use ad-hoc methods
12to pass commands and data through the parallel port interface, most
13external devices are actually identical to an internal model, but with
14a parallel-port adapter chip added in. Some of the original parallel port
15adapters 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
17approach). Most current designs, however, take a different approach.
18The adapter chip reproduces a small ISA or IDE bus in the external device
19and the communication protocol provides operations for reading and writing
20device registers, as well as data block transfer functions. Sometimes,
21the device being addressed via the parallel cable is a standard SCSI
22controller like an NCR 5380. The "ditto" family of external tape
23drives use the ISA replicator to interface a floppy disk controller,
24which is then connected to a floppy-tape mechanism. The vast majority
25of external parallel port devices, however, are now based on standard
26IDE type devices, which require no intermediate controller. If one
27were to open up a parallel port CD-ROM drive, for instance, one would
28find a standard ATAPI CD-ROM drive, a power supply, and a single adapter
29that interconnected a standard PC parallel port cable and a standard
30IDE cable. It is usually possible to exchange the CD-ROM device with
31any other device using the IDE interface.
32
33The document describes the support in Linux for parallel port IDE
34devices. It does not cover parallel port SCSI devices, "ditto" tape
35drives or scanners. Many different devices are supported by the
36parallel 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
50as well as most of the clone and no-name products on the market.
51
52To support such a wide range of devices, PARIDE, the parallel port IDE
53subsystem, is actually structured in three parts. There is a base
54paride module which provides a registry and some common methods for
55accessing the parallel ports. The second component is a set of
56high-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
66The high-level drivers function according to the relevant standards.
67The third component of PARIDE is a set of low-level protocol drivers
68for each of the parallel port IDE adapter chips. Thanks to the interest
69and encouragement of Linux users from many parts of the world,
70support 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
882. Using the PARIDE subsystem
89
90While configuring the Linux kernel, you may choose either to build
91the PARIDE drivers into your kernel, or to build them as modules.
92
93In either case, you will need to select "Parallel port IDE device support"
94as well as at least one of the high-level drivers and at least one
95of the parallel port communication protocols. If you do not know
96what kind of parallel port adapter is used in your drive, you could
97begin by checking the file names and any text files on your DOS
98installation floppy. Alternatively, you can look at the markings on
99the adapter chip itself. That's usually sufficient to identify the
100correct device.
101
102You can actually select all the protocol modules, and allow the PARIDE
103subsystem to try them all for you.
104
105For the "brand-name" products listed above, here are the protocol
106and 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
1232.1 Configuring built-in drivers
124
125We recommend that you get to know how the drivers work and how to
126configure them as loadable modules, before attempting to compile a
127kernel with the drivers built-in.
128
129If you built all of your PARIDE support directly into your kernel,
130and you have just a single parallel port IDE device, your kernel should
131locate it automatically for you. If you have more than one device,
132you 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
135The high-level drivers accept a number of command line parameters, all
136of which are documented in the source files in linux/drivers/block/paride.
137By default, each driver will automatically try all parallel ports it
138can find, and all protocol types that have been installed, until it finds
139a parallel port IDE adapter. Once it finds one, the probe stops. So,
140if you have more than one device, you will need to tell the drivers
141how to identify them. This requires specifying the port address, the
142protocol identification number and, for some devices, the drive's
143chain ID. While your system is booting, a number of messages are
144displayed on the console. Like all such messages, they can be
145reviewed with the 'dmesg' command. Among those messages will be
146some lines like:
147
148 paride: bpck registered as protocol 0
149 paride: epat registered as protocol 1
150
151The numbers will always be the same until you build a new kernel with
152different protocol selections. You should note these numbers as you
153will need them to identify the devices.
154
155If you happen to be using a MicroSolutions backpack device, you will
156also need to know the unit ID number for each drive. This is usually
157the last two digits of the drive's serial number (but read MicroSolutions'
158documentation about this).
159
160As an example, let's assume that you have a MicroSolutions PD/CD drive
161with unit ID number 36 connected to the parallel port at 0x378, a SyQuest
162EZ-135 connected to the chained port on the PD/CD drive and also an
163Imation Superdisk connected to port 0x278. You could give the following
164options on your boot command:
165
166 pd.drive0=0x378,1 pf.drive0=0x278,1 pf.drive1=0x378,0,36
167
168In the last option, pf.drive1 configures device /dev/pf1, the 0x378
169is the parallel port base address, the 0 is the protocol registration
170number and 36 is the chain ID.
171
172Please note: while PARIDE will work both with and without the
173PARPORT parallel port sharing system that is included by the
174"Parallel port support" option, PARPORT must be included and enabled
175if you want to use chains of devices on the same parallel port.
176
1772.2 Loading and configuring PARIDE as modules
178
179It is much faster and simpler to get to understand the PARIDE drivers
180if you use them as loadable kernel modules.
181
182Note 1: using these drivers with the "kerneld" automatic module loading
183system is not recommended for beginners, and is not documented here.
184
185Note 2: if you build PARPORT support as a loadable module, PARIDE must
186also be built as loadable modules, and PARPORT must be loaded before the
187PARIDE modules.
188
189To use PARIDE, you must begin by
190
191 insmod paride
192
193this loads a base module which provides a registry for the protocols,
194among other tasks.
195
196Then, load as many of the protocol modules as you think you might need.
197As you load each module, it will register the protocols that it supports,
198and print a log message to your kernel log file and your console. For
199example:
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
207Finally, you can load high-level drivers for each kind of device that
208you have connected. By default, each driver will autoprobe for a single
209device, but you can support up to four similar devices by giving their
210individual co-ordinates when you load the driver.
211
212For example, if you had two no-name CD-ROM drives both using the
213KingByte KBIC-951A adapter, one on port 0x378 and the other on 0x3bc
214you could give the following command:
215
216 # insmod pcd drive0=0x378,1 drive1=0x3bc,1
217
218For most adapters, giving a port address and protocol number is sufficient,
219but check the source files in linux/drivers/block/paride for more
220information. (Hopefully someone will write some man pages one day !).
221
222As another example, here's what happens when PARPORT is installed, and
223a 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
236Note that the last line is the output from the generic partition table
237scanner - in this case it reports that it has found a disk with one partition.
238
2392.3 Using a PARIDE device
240
241Once the drivers have been loaded, you can access PARIDE devices in the
242same way as their traditional counterparts. You will probably need to
243create the device "special files". Here is a simple script that you can
244cut 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#
250function mkdev {
251 mknod $1 $2 $3 $4 ; chmod 0660 $1 ; chown root:disk $1
252}
253#
254function 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#
262cd /dev
263#
264for u in 0 1 2 3 ; do pd $u ; done
265for u in 0 1 2 3 ; do mkdev pcd$u b 46 $u ; done
266for u in 0 1 2 3 ; do mkdev pf$u b 47 $u ; done
267for u in 0 1 2 3 ; do mkdev pt$u c 96 $u ; done
268for u in 0 1 2 3 ; do mkdev npt$u c 96 $[ $u + 128 ] ; done
269for u in 0 1 2 3 ; do mkdev pg$u c 97 $u ; done
270#
271# end of mkd
272
273With the device files and drivers in place, you can access PARIDE devices
274like any other Linux device. For example, to mount a CD-ROM in pcd0, use:
275
276 mount /dev/pcd0 /cdrom
277
278If you have a fresh Avatar Shark cartridge, and the drive is pda, you
279might 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
290Devices like the Imation superdisk work in the same way, except that
291they do not have a partition table. For example to make a 120MB
292floppy that you could share with a DOS system:
293
294 mkdosfs /dev/pf0
295 mount /dev/pf0 /mnt
296
297
2982.4 The pf driver
299
300The pf driver is intended for use with parallel port ATAPI disk
301devices. The most common devices in this category are PD drives
302and LS-120 drives. Traditionally, media for these devices are not
303partitioned. Consequently, the pf driver does not support partitioned
304media. This may be changed in a future version of the driver.
305
3062.5 Using the pt driver
307
308The pt driver for parallel port ATAPI tape drives is a minimal driver.
309It does not yet support many of the standard tape ioctl operations.
310For best performance, a block size of 32KB should be used. You will
311probably want to set the parallel port delay to 0, if you can.
312
3132.6 Using the pg driver
314
315The pg driver can be used in conjunction with the cdrecord program
316to create CD-ROMs. Please get cdrecord version 1.6.1 or later
317from ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ . To record CD-R media
318your parallel port should ideally be set to EPP mode, and the "port delay"
319should be set to 0. With those settings it is possible to record at 2x
320speed without any buffer underruns. If you cannot get the driver to work
321in EPP mode, try to use "bidirectional" or "PS/2" mode and 1x speeds only.
322
323
3243. Troubleshooting
325
3263.1 Use EPP mode if you can
327
328The most common problems that people report with the PARIDE drivers
329concern the parallel port CMOS settings. At this time, none of the
330PARIDE protocol modules support ECP mode, or any ECP combination modes.
331If you are able to do so, please set your parallel port into EPP mode
332using your CMOS setup procedure.
333
3343.2 Check the port delay
335
336Some parallel ports cannot reliably transfer data at full speed. To
337offset the errors, the PARIDE protocol modules introduce a "port
338delay" between each access to the i/o ports. Each protocol sets
339a default value for this delay. In most cases, the user can override
340the default and set it to 0 - resulting in somewhat higher transfer
341rates. In some rare cases (especially with older 486 systems) the
342default delays are not long enough. if you experience corrupt data
343transfers, or unexpected failures, you may wish to increase the
344port delay. The delay can be programmed using the "driveN" parameters
345to each of the high-level drivers. Please see the notes above, or
346read the comments at the beginning of the driver source files in
347linux/drivers/block/paride.
348
3493.3 Some drives need a printer reset
350
351There appear to be a number of "noname" external drives on the market
352that do not always power up correctly. We have noticed this with some
353drives based on OnSpec and older Freecom adapters. In these rare cases,
354the adapter can often be reinitialised by issuing a "printer reset" on
355the parallel port. As the reset operation is potentially disruptive in
356multiple device environments, the PARIDE drivers will not do it
357automatically. You can however, force a printer reset by doing:
358
359 insmod lp reset=1
360 rmmod lp
361
362If you have one of these marginal cases, you should probably build
363your paride drivers as modules, and arrange to do the printer reset
364before loading the PARIDE drivers.
365
3663.4 Use the verbose option and dmesg if you need help
367
368While a lot of testing has gone into these drivers to make them work
369as smoothly as possible, problems will arise. If you do have problems,
370please check all the obvious things first: does the drive work in
371DOS with the manufacturer's drivers ? If that doesn't yield any useful
372clues, then please make sure that only one drive is hooked to your system,
373and that either (a) PARPORT is enabled or (b) no other device driver
374is using your parallel port (check in /proc/ioports). Then, load the
375appropriate drivers (you can load several protocol modules if you want)
376as 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).
386The verbose=1 parameter will cause the drivers to log a trace of their
387activity as they attempt to locate your drive.
388
389Use 'dmesg' to capture a log of all the PARIDE messages (any messages
390beginning with paride:, a protocol module's name or a driver's name) and
391include that with your bug report. You can submit a bug report in one
392of two ways. Either send it directly to the author of the PARIDE suite,
393by e-mail to grant@torque.net, or join the linux-parport mailing list
394and post your report there.
395
3963.5 For more information or help
397
398You can join the linux-parport mailing list by sending a mail message
399to
400 linux-parport-request@torque.net
401
402with the single word
403
404 subscribe
405
406in the body of the mail message (not in the subject line). Please be
407sure that your mail program is correctly set up when you do this, as
408the list manager is a robot that will subscribe you using the reply
409address in your mail headers. REMOVE any anti-spam gimmicks you may
410have in your mail headers, when sending mail to the list server.
411
412You might also find some useful information on the linux-parport
413web 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 @@
1Using the RAM disk block device with Linux
2------------------------------------------
3
4Contents:
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
121) Overview
13-----------
14
15The RAM disk driver is a way to use main system memory as a block device. It
16is required for initrd, an initial filesystem used if you need to load modules
17in order to access the root filesystem (see Documentation/initrd.txt). It can
18also be used for a temporary filesystem for crypto work, since the contents
19are erased on reboot.
20
21The RAM disk dynamically grows as more space is required. It does this by using
22RAM from the buffer cache. The driver marks the buffers it is using as dirty
23so that the VM subsystem does not try to reclaim them later.
24
25The RAM disk supports up to 16 RAM disks by default, and can be reconfigured
26to support an unlimited number of RAM disks (at your own risk). Just change
27the configuration symbol BLK_DEV_RAM_COUNT in the Block drivers config menu
28and (re)build the kernel.
29
30To use RAM disk support with your system, run './MAKEDEV ram' from the /dev
31directory. RAM disks are all major number 1, and start with minor number 0
32for /dev/ram0, etc. If used, modern kernels use /dev/ram0 for an initrd.
33
34The new RAM disk also has the ability to load compressed RAM disk images,
35allowing one to squeeze more programs onto an average installation or
36rescue floppy disk.
37
38
392) Kernel Command Line Parameters
40---------------------------------
41
42 ramdisk_size=N
43 ==============
44
45This parameter tells the RAM disk driver to set up RAM disks of N k size. The
46default is 4096 (4 MB) (8192 (8 MB) on S390).
47
48 ramdisk_blocksize=N
49 ===================
50
51This parameter tells the RAM disk driver how many bytes to use per block. The
52default is 1024 (BLOCK_SIZE).
53
54
553) Using "rdev -r"
56------------------
57
58The usage of the word (two bytes) that "rdev -r" sets in the kernel image is
59as follows. The low 11 bits (0 -> 10) specify an offset (in 1 k blocks) of up
60to 2 MB (2^11) of where to find the RAM disk (this used to be the size). Bit
6114 indicates that a RAM disk is to be loaded, and bit 15 indicates whether a
62prompt/wait sequence is to be given before trying to read the RAM disk. Since
63the RAM disk dynamically grows as data is being written into it, a size field
64is not required. Bits 11 to 13 are not currently used and may as well be zero.
65These 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
71Consider a typical two floppy disk setup, where you will have the
72kernel on disk one, and have already put a RAM disk image onto disk #2.
73
74Hence you want to set bits 0 to 13 as 0, meaning that your RAM disk
75starts at an offset of 0 kB from the beginning of the floppy.
76The command line equivalent is: "ramdisk_start=0"
77
78You want bit 14 as one, indicating that a RAM disk is to be loaded.
79The command line equivalent is: "load_ramdisk=1"
80
81You want bit 15 as one, indicating that you want a prompt/keypress
82sequence so that you have a chance to switch floppy disks.
83The command line equivalent is: "prompt_ramdisk=1"
84
85Putting that together gives 2^15 + 2^14 + 0 = 49152 for an rdev word.
86So 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
92If 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"
94Since the default start = 0 and the default prompt = 1, you could use:
95 append = "load_ramdisk=1"
96
97
984) An Example of Creating a Compressed RAM Disk
99----------------------------------------------
100
101To create a RAM disk image, you will need a spare block device to
102construct it on. This can be the RAM disk device itself, or an
103unused disk partition (such as an unmounted swap partition). For this
104example, we will use the RAM disk device, "/dev/ram0".
105
106Note: This technique should not be done on a machine with less than 8 MB
107of RAM. If using a spare disk partition instead of /dev/ram0, then this
108restriction does not apply.
109
110a) 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
118b) Make a filesystem on it. Say ext2fs for this example.
119
120 mke2fs -vm0 /dev/ram0 2048
121
122c) Mount it, copy the files you want to it (eg: /etc/* /dev/* ...)
123 and unmount it again.
124
125d) 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
131e) Put the kernel onto the floppy
132
133 dd if=zImage of=/dev/fd0 bs=1k
134
135f) 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
144g) 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
151That is it. You now have your boot/root compressed RAM disk floppy. Some
152users may wish to combine steps (d) and (f) by using a pipe.
153
154--------------------------------------------------------------------------
155 Paul Gortmaker 12/95
156
157Changelog:
158----------
159
16010-22-04 : Updated to reflect changes in command line options, remove
161 obsolete references, general cleanup.
162 James Nelson (james4765@gmail.com)
163
164
16512-95 : Original Document