diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/s390/DASD |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/s390/DASD')
-rw-r--r-- | Documentation/s390/DASD | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Documentation/s390/DASD b/Documentation/s390/DASD new file mode 100644 index 000000000000..9963f1e9c98a --- /dev/null +++ b/Documentation/s390/DASD | |||
@@ -0,0 +1,73 @@ | |||
1 | DASD device driver | ||
2 | |||
3 | S/390's disk devices (DASDs) are managed by Linux via the DASD device | ||
4 | driver. It is valid for all types of DASDs and represents them to | ||
5 | Linux as block devices, namely "dd". Currently the DASD driver uses a | ||
6 | single major number (254) and 4 minor numbers per volume (1 for the | ||
7 | physical volume and 3 for partitions). With respect to partitions see | ||
8 | below. Thus you may have up to 64 DASD devices in your system. | ||
9 | |||
10 | The kernel parameter 'dasd=from-to,...' may be issued arbitrary times | ||
11 | in the kernel's parameter line or not at all. The 'from' and 'to' | ||
12 | parameters are to be given in hexadecimal notation without a leading | ||
13 | 0x. | ||
14 | If you supply kernel parameters the different instances are processed | ||
15 | in order of appearance and a minor number is reserved for any device | ||
16 | covered by the supplied range up to 64 volumes. Additional DASDs are | ||
17 | ignored. If you do not supply the 'dasd=' kernel parameter at all, the | ||
18 | DASD driver registers all supported DASDs of your system to a minor | ||
19 | number in ascending order of the subchannel number. | ||
20 | |||
21 | The driver currently supports ECKD-devices and there are stubs for | ||
22 | support of the FBA and CKD architectures. For the FBA architecture | ||
23 | only some smart data structures are missing to make the support | ||
24 | complete. | ||
25 | We performed our testing on 3380 and 3390 type disks of different | ||
26 | sizes, under VM and on the bare hardware (LPAR), using internal disks | ||
27 | of the multiprise as well as a RAMAC virtual array. Disks exported by | ||
28 | an Enterprise Storage Server (Seascape) should work fine as well. | ||
29 | |||
30 | We currently implement one partition per volume, which is the whole | ||
31 | volume, skipping the first blocks up to the volume label. These are | ||
32 | reserved for IPL records and IBM's volume label to assure | ||
33 | accessibility of the DASD from other OSs. In a later stage we will | ||
34 | provide support of partitions, maybe VTOC oriented or using a kind of | ||
35 | partition table in the label record. | ||
36 | |||
37 | USAGE | ||
38 | |||
39 | -Low-level format (?CKD only) | ||
40 | For using an ECKD-DASD as a Linux harddisk you have to low-level | ||
41 | format the tracks by issuing the BLKDASDFORMAT-ioctl on that | ||
42 | device. This will erase any data on that volume including IBM volume | ||
43 | labels, VTOCs etc. The ioctl may take a 'struct format_data *' or | ||
44 | 'NULL' as an argument. | ||
45 | typedef struct { | ||
46 | int start_unit; | ||
47 | int stop_unit; | ||
48 | int blksize; | ||
49 | } format_data_t; | ||
50 | When a NULL argument is passed to the BLKDASDFORMAT ioctl the whole | ||
51 | disk is formatted to a blocksize of 1024 bytes. Otherwise start_unit | ||
52 | and stop_unit are the first and last track to be formatted. If | ||
53 | stop_unit is -1 it implies that the DASD is formatted from start_unit | ||
54 | up to the last track. blksize can be any power of two between 512 and | ||
55 | 4096. We recommend no blksize lower than 1024 because the ext2fs uses | ||
56 | 1kB blocks anyway and you gain approx. 50% of capacity increasing your | ||
57 | blksize from 512 byte to 1kB. | ||
58 | |||
59 | -Make a filesystem | ||
60 | Then you can mk??fs the filesystem of your choice on that volume or | ||
61 | partition. For reasons of sanity you should build your filesystem on | ||
62 | the partition /dev/dd?1 instead of the whole volume. You only lose 3kB | ||
63 | but may be sure that you can reuse your data after introduction of a | ||
64 | real partition table. | ||
65 | |||
66 | BUGS: | ||
67 | - Performance sometimes is rather low because we don't fully exploit clustering | ||
68 | |||
69 | TODO-List: | ||
70 | - Add IBM'S Disk layout to genhd | ||
71 | - Enhance driver to use more than one major number | ||
72 | - Enable usage as a module | ||
73 | - Support Cache fast write and DASD fast write (ECKD) | ||