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__); \
128 static inline int32_t
143 extern ocs_io_t *
ocs_io_find(ocs_t *
ocs, ocs_node_t *node, uint32_t ox_id);
146 #endif // __OCS_IO_H__
target private IO structure
uint32_t scsi_wire_offset
static int32_t ocs_io_busy(ocs_io_t *io)
Test if IO object is busy.
static int32_t ocs_list_on_list(ocs_list_link_t *link)
Test if object is on a list.
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
ocs_hal_io_param_t iparam
T10 DIF information passed to the transport.
uint32_t scsi_wire_xfer_size
const char * display_name
ocs_hal_dif_info_t hal_dif
ocs_dma_t unassisted_payload
generic scatter-gather list structure
defines the parameters for an IO based on the IO type.
ocs_list_link_t io_pending_link
ocs_hal_io_type_e
enum identifying IO types.
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_list_link_t io_alloc_link
ocs_io_t * ocs_io_get_instance(ocs_t *ocs, uint32_t index)
return pointer to IO object given instance index
ocs_hal_io_type_e io_type
void ocs_ddump_io(ocs_textbuf_t *textbuf, ocs_io_t *io)
generate IO context ddump data
uint32_t nop_abort_counter
int32_t ocs_io_pool_free(ocs_io_pool_t *io_pool)
Free IO objects pool.
uint32_t scsi_mem_xfer_size
ocs_io_t * ocs_io_find(ocs_t *ocs, ocs_node_t *node, uint32_t ox_id)
ocs_mgmt_functions_t * mgmt_functions