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
When an outstanding I/O request for a device has completed, DftKIOS attempts to restart the device by dequeuing and starting the next IOBLOK queued on the device. For non-DASD, this is the first IOBLOK queued.
However, for movable-head DASD, the queued requests are dequeued in
either or descending order, depending upon the current
position (recorded in RDEVCYL) and the direction of motion of the arm.
If the arm is seeking up (that is, toward the higher cylinder numbers), the queue of IOBLOKs is scanned from the first block toward the last
until an IOBLOK is found with an IOBCYL value equal to or greater than
the value in RDEVCYL, or until the end of the queue is reached. At this
point, the device is flagged as seeking down and the queue is scanned
fro. last to first until an IOBLOK with an IOBCYL value equal to or less
than RDEVCYL is found. When the IOBLOK is found, it is dequeued and
started. The direction of motion is indicated by an RDEVFLAG bit and
the next request is de queued downward until the head of the queue is
reached.
Because the queue itself is a two-way chained
handling for null or unity set lists is required, and
algorithm returns to first-in-first-out queuing.
list, no special
the ordered seek
Dedicated Channel One of the facilities of the Vft/370 control program-allows-a- virtual machine to control one or more channels on a
dedicated basis. The channels are attached to the virtual machine by using the privileged ATTACH CHANNEL command. A virtual machine can have
one or more dedicated channels. In addition, channels can be split
between virtual machines but a dedicated channel cannot be shared
between two virtual machines. For instance, channel 1 could be
dedicated to virtual machine A, and channel 2 could be dedicated to
virtual machine B, or both could be dedicated to virtual machine A or B. With a dedicated channel, all virtual machine device addresses must be identical to the real machine device addresses. For instance,
virtual device 130 must be real device 130, and virtual device 132 must be real device 132. With dedicated channels, CP does not perform any
virtual device address mapping.
CP error recording and channel recovery procedures are still in
effect for dedicated channels. The dedicated channel support can be
used in conjunction with the virtual=real feature for any virtual machine that is occupying the virtual=real storage space. VIRTUAL CONSOLE SIftULATION DMKVCN receives control from the virtual machine I/O executive, DftKVIO. When control is received, the device is available with no interruptions
pending. A console control block, VCONCTL, that is obtained from storage
and chained from the virtual device control block, VDEVBLOCK, by DftKLOG is accessed for use during the interpretation of the virtual console I/O sequence. The user's CAW is examined for validity. If it is valid, the TRANS macro is issued to fetch the first user CCW. This ccw is moved to
the VCONCTL block for analysis.
The CCW is analyzed to determine if it is a read, a write, a control.
a sense, a TIC, or an invalid operation. Based upon the analysis, the
appropriate processing routine in DMKVCN is invoked. Ih! Obtains a buffer for input data from free
storage. The location of the buffer is set in the VCONCTL block. The DMKQCNRD routine is called to schedule and perform an actual read to the
corresponding real device representing the user's virtual console. If
1-96 IBM V"/370 System Logic and Problem Determination--Volume 1
Previous Page Next Page