38 #if !defined(__OCS_IO_H__)
41 #define io_error_log(io, fmt, ...) \
43 if (OCS_LOG_ENABLE_IO_ERRORS(io->ocs)) \
44 ocs_log_warn(io->ocs, fmt, ##__VA_ARGS__); \
53 #define SCSI_CMD_BUF_LENGTH 48
54 #define SCSI_RSP_BUF_LENGTH sizeof(fcp_rsp_iu_t)
70 typedef struct els_loopback_io_evt_s {
190 static inline int32_t
193 return !(io->io_free);
208 #endif // __OCS_IO_H__
target private IO structure
static int32_t ocs_io_busy(ocs_io_t *io)
Test if IO object is busy.
ocs_list_t ocs_list_link_t
ocs_io_pool_t * ocs_io_pool_create(ocs_t *ocs, uint32_t num_io, uint32_t num_sgl)
Create a pool of IO objects.
ocs_io_t * ocs_io_pool_io_alloc(ocs_io_pool_t *io_pool)
Allocate an object used to track an IO.
ocs_list_link_t tmf_abort_link
common IO callback argument
ocs_scsi_io_cb_t abort_cb
T10 DIF information passed to the transport.
ocs_hal_io_param_t iparam
T10 DIF information passed to the transport.
ocs_io_type_e
OCS IO types.
uint32_t els_retries_remaining
ocs_scsi_io_cb_t scsi_tgt_cb
const char * display_name
els_loopback_io_evt_t loopback_evt_data
ocs_hal_dif_info_t hal_dif
uint32_t loopback_rx_data_len
generic scatter-gather list structure
ocs_io_t * ocs_io_find_init_els_io(ocs_t *ocs, ocs_node_t *node, uint16_t ox_id)
Find an els I/O given it's node and ox_id.
int32_t(* ocs_scsi_rsp_io_cb_t)(ocs_io_t *io, ocs_scsi_io_status_e status, ocs_scsi_cmd_resp_t *rsp, uint32_t flags, void *arg)
ocs_list_link_t io_pending_link
void ocs_io_pool_io_free(ocs_io_pool_t *io_pool, ocs_io_t *io)
Free an object used to track an IO.
uint32_t ocs_io_pool_allocated(ocs_io_pool_t *io_pool)
ocs_scsi_rsp_io_cb_t scsi_ini_cb
ocs_list_link_t io_alloc_link
ocs_hal_io_type_e hio_type
ocs_scsi_tmf_cmd_e tmf_cmd
int32_t(* ocs_scsi_io_cb_t)(ocs_io_t *io, ocs_scsi_io_status_e status, uint32_t flags, void *arg)
void ocs_ddump_io(ocs_textbuf_t *textbuf, ocs_io_t *io)
Generate IO context ddump data.
ocs_scsi_dif_info_t scsi_dif_info
int32_t ocs_io_pool_free(ocs_io_pool_t *io_pool)
Free IO objects pool.
ocs_io_t * ocs_io_find_tgt_io(ocs_t *ocs, ocs_node_t *node, uint16_t ox_id, uint16_t rx_id)
Find an I/O given it's node and ox_id.
void(* els_callback)(ocs_node_t *node, ocs_node_cb_t *cbdata, void *cbarg)
ocs_mgmt_functions_t * mgmt_functions