74 lines
3.3 KiB
Text
74 lines
3.3 KiB
Text
|
DASD device driver
|
||
|
|
||
|
S/390's disk devices (DASDs) are managed by Linux via the DASD device
|
||
|
driver. It is valid for all types of DASDs and represents them to
|
||
|
Linux as block devices, namely "dd". Currently the DASD driver uses a
|
||
|
single major number (254) and 4 minor numbers per volume (1 for the
|
||
|
physical volume and 3 for partitions). With respect to partitions see
|
||
|
below. Thus you may have up to 64 DASD devices in your system.
|
||
|
|
||
|
The kernel parameter 'dasd=from-to,...' may be issued arbitrary times
|
||
|
in the kernel's parameter line or not at all. The 'from' and 'to'
|
||
|
parameters are to be given in hexadecimal notation without a leading
|
||
|
0x.
|
||
|
If you supply kernel parameters the different instances are processed
|
||
|
in order of appearance and a minor number is reserved for any device
|
||
|
covered by the supplied range up to 64 volumes. Additional DASDs are
|
||
|
ignored. If you do not supply the 'dasd=' kernel parameter at all, the
|
||
|
DASD driver registers all supported DASDs of your system to a minor
|
||
|
number in ascending order of the subchannel number.
|
||
|
|
||
|
The driver currently supports ECKD-devices and there are stubs for
|
||
|
support of the FBA and CKD architectures. For the FBA architecture
|
||
|
only some smart data structures are missing to make the support
|
||
|
complete.
|
||
|
We performed our testing on 3380 and 3390 type disks of different
|
||
|
sizes, under VM and on the bare hardware (LPAR), using internal disks
|
||
|
of the multiprise as well as a RAMAC virtual array. Disks exported by
|
||
|
an Enterprise Storage Server (Seascape) should work fine as well.
|
||
|
|
||
|
We currently implement one partition per volume, which is the whole
|
||
|
volume, skipping the first blocks up to the volume label. These are
|
||
|
reserved for IPL records and IBM's volume label to assure
|
||
|
accessibility of the DASD from other OSs. In a later stage we will
|
||
|
provide support of partitions, maybe VTOC oriented or using a kind of
|
||
|
partition table in the label record.
|
||
|
|
||
|
USAGE
|
||
|
|
||
|
-Low-level format (?CKD only)
|
||
|
For using an ECKD-DASD as a Linux harddisk you have to low-level
|
||
|
format the tracks by issuing the BLKDASDFORMAT-ioctl on that
|
||
|
device. This will erase any data on that volume including IBM volume
|
||
|
labels, VTOCs etc. The ioctl may take a 'struct format_data *' or
|
||
|
'NULL' as an argument.
|
||
|
typedef struct {
|
||
|
int start_unit;
|
||
|
int stop_unit;
|
||
|
int blksize;
|
||
|
} format_data_t;
|
||
|
When a NULL argument is passed to the BLKDASDFORMAT ioctl the whole
|
||
|
disk is formatted to a blocksize of 1024 bytes. Otherwise start_unit
|
||
|
and stop_unit are the first and last track to be formatted. If
|
||
|
stop_unit is -1 it implies that the DASD is formatted from start_unit
|
||
|
up to the last track. blksize can be any power of two between 512 and
|
||
|
4096. We recommend no blksize lower than 1024 because the ext2fs uses
|
||
|
1kB blocks anyway and you gain approx. 50% of capacity increasing your
|
||
|
blksize from 512 byte to 1kB.
|
||
|
|
||
|
-Make a filesystem
|
||
|
Then you can mk??fs the filesystem of your choice on that volume or
|
||
|
partition. For reasons of sanity you should build your filesystem on
|
||
|
the partition /dev/dd?1 instead of the whole volume. You only lose 3kB
|
||
|
but may be sure that you can reuse your data after introduction of a
|
||
|
real partition table.
|
||
|
|
||
|
BUGS:
|
||
|
- Performance sometimes is rather low because we don't fully exploit clustering
|
||
|
|
||
|
TODO-List:
|
||
|
- Add IBM'S Disk layout to genhd
|
||
|
- Enhance driver to use more than one major number
|
||
|
- Enable usage as a module
|
||
|
- Support Cache fast write and DASD fast write (ECKD)
|