Prior to starting an I/O operation associated with the request, a
check is made to see if the IOBLOK is a mini IOBLOK and whether aini IOBLOKs are queued off this IOBLOK. All mini IOBLOKs associated with this request are dequeued froa their respective queues by running the IOBLINK chain. The storage for the blocks is released. If the active IOBLOK is a mini IOBLOK, the IOBRADD fro. the aini IOBLOK is aoved to
the priaary IOBLOK and the I/O started using the priaary IOBLOK. Once the storage for the aini IOBLOKs has been released and the SIO initiated, any busy condition encountered causes the IOBLOK to be queued
on this same path. That is, there will be no alternate path scheduling
after the SIO if a busy condition is encountered. The I/O request will
be restarted on the same path as the original request.
Reserve/release is supported for shared DASD as though each virtual
aachine has a separate channel path to a shared device. Reservejrelease support prevents the occurrence of a channel lockout situation. This is
accomplished by changing reserve CCWs to sense CCWs when a reserve is
issued to a device that has alternate paths defined to it. This aeans
that whenever alternate paths are defined to a device, the real reserve
does not execute on the hardware. Reserve/release support is implemented in Vft/310 on a virtual basis allowing the reservejrelease operation codes to be simulated on a virtual basis for ainidisks,
including full-extent ainidisks. When a reserve is issued against a
ainidisk, the reserve is accomplished by a locking aechanisa. The status
of the minidisk is aaintained in the VRRBLOK that is chained fro. the VDEVBLOK. The following matrix identifies how the reserve operation code is
handled in the various situations. I I Virtual
will Reserve/I Reserve/ RESERVE1 Defined Release Release
Alternate Execute Requested --or --
Paths to on the for
Device Hardware !inidisks SENSE2 Dedicated NO N/A N/A RESERVE DASD or
Tape YES N/l N/A SENSE Minidisk NO NO NO RESERVE NO NO YES SENSE NO YES NO RESERVE NO YES YES RESERVE J YES N/A N/A SENSE IThe 'RESERVE' keyword in the chart indicates that the
real reserve is allowed to execute on the hardware.
2The SENSE keyword indicates that the reserve CCW is
changed to a sense CCW. Virtual Reserve/Release is
requested by means of a new option on the ftDISK directory
control state.ent.
1-94 IBM VM/310 System Logic and Problem Determination--Voluae 1
DMKVIO performs the following
processing is requested:
steps when virtual reserve;release
1. DMKVSI calls DMKCCW to perform CCW translation. For DASD devices, DMKCCW checks if the virtual reserve/release feature bit is on in
the VDEVBLOK. If virtual reserve/release processing has been
requested and if the device is not reserved by anyone or it is
reserved by this user, processing continues normally. If the device
is reserved by another user, DMKCCW calls DMKUNTFR to restore the CCWs to their original state and returns to the caller, unless sense
bytes have been transferred to the user's storage in which case CP enqueues on the ainidisk and waits until it is no longer reserved at
which time the I/O can If the I/O request cart continue and
the CCW chain contains a reserve command, the VDEVBLOK and the VRRBLOK are flagged as reserved. If the CCW chain also contains a
release, the IOBLOK is flagged to indicate to DMKUNTFR to release
the virtual disk. Control returns to DMKVSI. 2. DMKVSI reflects a device-busy condition to the virtual aachine if
the minidisk is currently reserved by another user. DKKUNT reflects a device end interrupt to all virtual machine users
who previously received a busy condition, when the device is
released. Qrdereg Requests to start I/O on system devices are
normally handled first in first out. However, requests to aovable-head DASD devices are queued on the device in ascending order by seek
address. This ordered seek queuing is performed to minimize
intercylinder seek times and to improve the overall throughput of the I/O systea. CP assumes that very few virtual machines perform chained SEEKs. Therefore, the first logical address represents the position of the arm upon completion of the I/O operation. Ordered SEEK queuing is based on
the relocated real cylinder. DMKIOS uses the cylinder location supplied
in IOBCYL for ordered SEEK queuing. This field is initialized by the
calling CP routine for paging and spooling or by the CCW translator for
virtual I/O. The CCW translator, DMKCCW, supplies the IOBCYL value in
the following manner: • Reads the IPL record, relocates to virtual cylinder 0 • Recalibrates, issues a real calibrate, and then a SEEK to virtual
cylinder 0 • Issues a channel SEEK, relocates to the virtual cylinder
The IOBLOK queuing subroutine of DMKIOS recognizes that a request is
being queued on a movable-head DASD by means of the device class and
type fields of RDEVBLOK. Instead of adding the IOBLOK to the end of the
queue on the RDEVBLOK, the queuing routine sorts the block into the
queue based on the cylinder nuaber for the request. The cylinder number for any request to DASD is recorded in the IOBCYL field. The queue of IOBLOKs on a real device block is sorted in ascending order by SEEK address, unless the entire device is dedicated to a given user. In this
case, DMKIOS does not automatically schedule the device, and no more than one request can be outstanding at anyone tiae. CP Introduction 1-95
Previous Page Next Page