49#define CTL_MAX_CDBLEN 32
57#define CTL_TIME_IO_DEFAULT_SECS 90
107 CTL_FLAG_ALREADY_DONE = 0x00200000
128#define CTL_LLF_FUA 0x04000000
129#define CTL_LLF_DPO 0x08000000
130#define CTL_LLF_READ 0x10000000
131#define CTL_LLF_WRITE 0x20000000
132#define CTL_LLF_VERIFY 0x40000000
133#define CTL_LLF_COMPARE 0x80000000
143 uint8_t
bytes[
sizeof(uint64_t) * 2];
153#define CTL_NUM_PRIV 6
158#define CTL_PRIV_LUN 0
159#define CTL_PRIV_LBA_LEN 1
160#define CTL_PRIV_MODEPAGE 1
161#define CTL_PRIV_BACKEND 2
162#define CTL_PRIV_BACKEND_LUN 3
163#define CTL_PRIV_FRONTEND 4
164#define CTL_PRIV_FRONTEND2 5
166#define CTL_LUN(io) ((io)->io_hdr.ctl_private[CTL_PRIV_LUN].ptrs[0])
167#define CTL_SOFTC(io) ((io)->io_hdr.ctl_private[CTL_PRIV_LUN].ptrs[1])
168#define CTL_BACKEND_LUN(io) ((io)->io_hdr.ctl_private[CTL_PRIV_BACKEND_LUN].ptrs[0])
169#define CTL_PORT(io) (((struct ctl_softc *)CTL_SOFTC(io))-> \
170 ctl_ports[(io)->io_hdr.nexus.targ_port])
176#define CTL_RSGL(io) ((io)->io_hdr.ctl_private[CTL_PRIV_BACKEND].ptrs[0])
177#define CTL_LSGL(io) ((io)->io_hdr.ctl_private[CTL_PRIV_BACKEND].ptrs[1])
178#define CTL_RSGLT(io) ((struct ctl_sg_entry *)CTL_RSGL(io))
179#define CTL_LSGLT(io) ((struct ctl_sg_entry *)CTL_LSGL(io))
181#define CTL_INVALID_PORTNAME 0xFF
182#define CTL_UNMAPPED_IID 0xFF
234 struct callout delay_callout;
385#define CTL_HA_VERSION 3
431#define CTL_HA_MAX_SG_ENTRIES 16
432#define CTL_HA_DATAMOVE_SEGMENT 131072
void ctl_free_io(union ctl_io *io)
union ctl_io * ctl_alloc_io_nowait(void *pool_ref)
@ CTL_TASK_QUERY_ASYNC_EVENT
@ CTL_TASK_QUERY_TASK_SET
@ CTL_TASK_CLEAR_TASK_SET
@ CTL_TASK_ABORT_TASK_SET
@ CTL_TASK_I_T_NEXUS_RESET
void(* ctl_ref)(void *arg, int diff)
#define CTL_HA_MAX_SG_ENTRIES
@ CTL_FLAG_SENT_2OTHER_SC
@ CTL_TASK_LUN_DOES_NOT_EXIST
@ CTL_TASK_FUNCTION_REJECTED
@ CTL_TASK_FUNCTION_SUCCEEDED
@ CTL_TASK_FUNCTION_NOT_SUPPORTED
@ CTL_TASK_FUNCTION_COMPLETE
void ctl_zero_io(union ctl_io *io)
union ctl_io * ctl_alloc_io(void *pool_ref)
struct ctl_ha_msg_hdr hdr
struct ctl_sg_entry sg_list[CTL_HA_MAX_SG_ENTRIES]
union ctl_io * original_sc
union ctl_io * serializing_sc
struct ctl_ha_msg_hdr hdr
struct ctl_ha_msg_hdr hdr
unsigned int pr_generation
struct ctl_ha_msg_hdr hdr
struct ctl_ha_msg_hdr hdr
struct ctl_pr_info pr_info
struct ctl_ha_msg_hdr hdr
struct scsi_sense_data sense_data
struct ctl_ha_msg_hdr hdr
uint8_t cdb[CTL_MAX_CDBLEN]
struct ctl_ha_msg_hdr hdr
ctl_task_type task_action
struct ctl_ha_msg_hdr hdr
LIST_ENTRY(ctl_io_hdr) ooa_links
struct bintime dma_start_bt
TAILQ_HEAD(, ctl_io_hdr) blocked_queue
TAILQ_ENTRY(ctl_io_hdr) blocked_links
STAILQ_ENTRY(ctl_io_hdr) links
union ctl_priv ctl_private[CTL_NUM_PRIV]
struct ctl_ha_msg_pr pr_msg
int(* be_move_done)(union ctl_io *io, bool samethr)
struct scsi_sense_data sense_data
int(* io_cont)(union ctl_io *io)
uint8_t cdb[CTL_MAX_CDBLEN]
ctl_task_type task_action
struct ctl_ha_msg_mode mode
struct ctl_ha_msg_scsi scsi
struct ctl_ha_msg_hdr hdr
struct ctl_ha_msg_login login
struct ctl_ha_msg_lun lun
struct ctl_ha_msg_iid iid
struct ctl_ha_msg_task task
struct ctl_ha_msg_port port
uint8_t bytes[sizeof(uint64_t) *2]