Setting the timeout for I/O requests

Red Hat Enterprise Linux 8.6 LPAR mode z/VM guest

DASD I/O requests can time out at two levels in the software stack.

About this task

When the DASD device driver receives an I/O request from an application, it issues one or more low-level I/O requests to the affected storage system. Both the initial I/O request from the application and the resulting low-level requests to the storage system can time out. You set the timeout values through two sysfs attributes of the DASD.
expires
specifies the maximum time, in seconds, that the DASD device driver waits for a response to a low-level I/O request from a storage server.
The default for the maximum response time depends on the type of DASD:
ECKD
uses the default that is provided by the storage server.
FBA
300 s
DIAG
50 s

If the maximum response time is exceeded, the DASD device driver cancels the request. Depending on your setup, the DASD device driver might then try the request again, possibly in combination with other recovery actions.

timeout
specifies the time interval, in seconds, within which the DASD device driver must respond to an I/O request from a software layer above it. If the specified time expires before the request is completed, the DASD device driver cancels all related low-level I/O requests to storage systems and reports the request as failed.

This setting is useful in setups where the software layer above the DASD device driver requires an absolute upper limit for I/O requests.

A value of 0 means that there is no time limit. This value is the default.

Procedure

You can use the expires and timeout attributes of a DASD to change the timeout values for that DASD.

  1. To find out the current timeout values, issue commands of this form:
    # cat /sys/bus/ccw/devices/<device_bus_id>/expires
    # cat /sys/bus/ccw/devices/<device_bus_id>/timeout
    Example:
    # cat /sys/bus/ccw/devices/0.0.7008/expires
    30
    # cat /sys/bus/ccw/devices/0.0.7008/timeout
    0
    In the example, a maximum response time of 30 seconds applies to the storage server for a DASD with bus ID 0.0.7008. No total time limit is set for I/O requests to this DASD.
  2. To set different timeout values, issue commands of this form:
    # echo <max_wait> > /sys/bus/ccw/devices/<device_bus_id>/expires
    # echo <total_max> > /sys/bus/ccw/devices/<device_bus_id>/timeout
    where:
    <max_wait>
    is the new maximum response time, in seconds, for the storage server. The value must be a positive integer.
    <total_max>
    is the new maximum total time in seconds. The value must be a positive integer or 0. 0 disables this timeout setting.
    <device_bus_id>
    is the device bus-ID of the DASD.
    Example:
    # echo 60 > /sys/bus/ccw/devices/0.0.7008/expires
    # echo 120 > /sys/bus/ccw/devices/0.0.7008/timeout
    
    This example sets timeout values for a DASD with bus ID 0.0.7008. The maximum response time for the storage server is set to 60 seconds and the overall time limit for I/O requests is set to 120 seconds.