|
|
udi_scsi_io_req(3udi)
Request a SCSI I/O operation (PD-to-HD)
#include <udi.h>void udi_scsi_io_req ( udi_scsi_io_cb_t *cb );ARGUMENTS cb is a pointer to a SCSI IO control block.
TARGET CHANNEL The target channel for this operation is the bind channel connecting a SCSI PD to its parent HD.
DESCRIPTION A PD uses this operation to send a SCSI I/O request to its parent HD.
The PD must prepare for the udi_scsi_io_req operation by allocating a SCSI I/O control block (calling udi_cb_alloc with a cb_idx that was previously associated with UDI_SCSI_IO_CB_NUM) and filling in all of its members.
The PD indicates the desired transfer size by setting data_buf->buf_size to the desired number of bytes. If no bytes are to be transferred, the PD may set data_buf to NULL.
If flags in the control block do not include UDI_SCSI_DATA_OUT, any data in data_buf is not guaranteed to be preserved by this channel operation. That is, when the HD receives this operation, the contents (but not the size) of the buffer are unspecified unless UDI_SCSI_DATA_OUT is set.
This operation is abortable with udi_channel_op_abort.
This operation is recoverable by the PD upon abrupt termination of an instance of the HD. Each SCSI I/O request outstanding in the HD when it is abruptly terminated will be completed by the environment with a corresponding udi_scsi_io_nak operation with a status code of UDI_STAT_TERMINATED. (See the definition of UDI_STAT_TERMINATED in Table 9 of the UDI Core Specification.)
REFERENCES udi_scsi_io_cb_t, udi_scsi_io_ack, udi_scsi_io_nak