Setting up the DASD device driver

Ubuntu 22.04 LTS LPAR mode z/VM guest KVM guest

Unless the DASD device driver modules are loaded for you during the boot process, load and configure them with the modprobe command.

DASD module parameter syntax

Read syntax diagramSkip visual syntax diagram modprobe  dasd_mod dasd=,device-specautodetectprobeonlynopavnofcx eer_pages=5  eer_pages= <pages> dasd_eckd_mod dasd_fba_mod dasd_diag_mod
device-spec
Read syntax diagramSkip visual syntax diagram <device_bus_id><from_device_bus_id>- <to_device_bus_id> (:rodiagerplogfailfast)
dasd_mod
loads the device driver base module.

When you are loading the base module, you can specify the dasd= parameter.

You can use the eer_pages parameter to determine the number of pages that are used for internal buffering of error records.
autodetect
causes the DASD device driver to allocate device names and the corresponding minor numbers to all DASD devices and set them online during the boot process.

The device names are assigned in order of ascending subchannel numbers. Auto-detection can yield confusing results if you change your I/O configuration and reboot, or if your Linux® instance runs as a z/VM® guest because the devices might appear with different names and minor numbers after rebooting.

probeonly
causes the DASD device driver to reject any open syscall with EPERM.
autodetect,probeonly
causes the DASD device driver to assign device names and minor numbers as for auto-detect. All devices regardless of whether they are accessible as DASD return EPERM to any open requests.
nopav
suppresses parallel access volume (PAV and HyperPAV) enablement for Linux instances that run in LPAR mode. The nopav keyword has no effect for Linux on z/VM.
nofcx
suppresses accessing the storage server with the I/O subsystem in transport mode (also known as High Performance FICON®).
<device_bus_id>
specifies a single DASD.
<from_device_bus_id>-<to_device_bus_id>
specifies the first and last DASD in a range. All DASD devices with bus IDs in the range are selected. The device bus-IDs <from_device_bus_id> and <to_device_bus_id> need not correspond to actual DASD.
ipldev
for IPL from a DASD, specifies the IPL device. If the IPL device is not a DASD, this parameter is ignored.
(ro)
accesses the specified device or device range in read-only mode.
(diag)
forces the device driver to access the device (range) with the DIAG access method.
(erplog)
enables enhanced error recovery processing (ERP) related logging through syslogd. If erplog is specified for a range of devices, the logging is switched on during device initialization.
(failfast)
immediately returns failed for an I/O operation when the last path to a DASD is lost.
Attention: Enable immediate failure of I/O requests only in setups where a failed I/O request can be recovered outside the scope of a single DASD.
dasd_eckd_mod
loads the ECKD module.
dasd_fba_mod
loads the FBA module.
dasd_diag_mod
loads the DIAG module.

If you supply a DASD kernel parameter with device specifications dasd=<device-list1>,<device-list2> ..., the device names and minor numbers are assigned in the order in which the devices are specified. The names and corresponding minor numbers are always assigned, even if the device is not present, or not accessible.

If you use autodetect in addition to explicit device specifications, device names are assigned to the specified devices first and device-specific parameters, like ro, are observed. The remaining devices are handled as described for autodetect.

The DASD base component is required by the other modules. modprobe takes care of this dependency for you and ensures that the base module is loaded automatically, if necessary.

Hint: modprobe might return before udev has created all device nodes for the specified DASDs. If you need to assure that all nodes are present, for example in scripts, follow the modprobe command with:
# udevadm settle

For command details see the modprobe man page.

Examples

The following example specifies a range of DASD devices and two individual DASD devices:
modprobe dasd_mod dasd=0.0.7000-0.0.7002,0.0.7005(ro),0.0.7006

Table 1 shows the resulting allocation of device names and minor numbers:


Table 1. Example mapping of device names and minor numbers to devices
Minor Name To access
0 dasda device 0.0.7000 as a whole
1 dasda1 the first partition on 0.0.7000
2 dasda2 the second partition on 0.0.7000
3 dasda3 the third partition on 0.0.7000
4 dasdb device 0.0.7001 as a whole
5 dasdb1 the first partition on 0.0.7001
6 dasdb2 the second partition on 0.0.7001
7 dasdb3 the third partition on 0.0.7001
8 dasdc device 0.0.7002 as a whole
9 dasdc1 the first partition on 0.0.7002
10 dasdc2 the second partition on 0.0.7002
11 dasdc3 the third partition on 0.0.7002
12 dasdd device 0.0.7005 as a whole
13 dasdd1 the first partition on 0.0.7005 (read-only)
14 dasdd2 the second partition on 0.0.7005 (read-only)
15 dasdd3 the third partition on 0.0.7005 (read-only)
16 dasde device 0.0.7006 as a whole
17 dasde1 the first partition on 0.0.7006
18 dasde2 the second partition on 0.0.7006
19 dasde3 the third partition on 0.0.7006

The following example specifies that High Performance FICON are to be suppressed for all DASDs:
modprobe dasd_mod dasd=nofcx,0.0.7000-0.0.7002,0.0.7005(ro),0.0.7006