/* struct iscsi_tpg_attrib sanity values */ #define TA_AUTHENTICATION 1 #define TA_LOGIN_TIMEOUT 15 #define TA_LOGIN_TIMEOUT_MAX 30 #define TA_LOGIN_TIMEOUT_MIN 5 #define TA_GENERATE_NODE_ACLS 0 #define TA_DEFAULT_CMDSN_DEPTH 64 #define TA_DEFAULT_CMDSN_DEPTH_MAX 512 #define TA_DEFAULT_CMDSN_DEPTH_MIN 1 #define TA_CACHE_DYNAMIC_ACLS 0 /* Enabled by default in demo mode (generic_node_acls=1) */ #define TA_DEMO_MODE_WRITE_PROTECT 1 /* Disabled by default in production mode w/ explict ACLs */ #define TA_PROD_MODE_WRITE_PROTECT 0 #define TA_DEMO_MODE_DISCOVERY 1 #define TA_DEFAULT_ERL 0 #define TA_CACHE_CORE_NPS 0 /* T10 protection information disabled by default */ #define TA_DEFAULT_T10_PI 0 #define TA_DEFAULT_FABRIC_PROT_TYPE 0 /* TPG status needs to be enabled to return sendtargets discovery endpoint info */ #define TA_DEFAULT_TPG_ENABLED_SENDTARGETS 1 /* * Used to control the sending of keys with optional to respond state bit, * as a workaround for non RFC compliant initiators,that do not propose, * nor respond to specific keys required for login to complete. * * See iscsi_check_proposer_for_optional_reply() for more details.
*/ #define TA_DEFAULT_LOGIN_KEYS_WORKAROUND 1
/* Used by various struct timer_list to manage iSCSI specific state */ enum iscsi_timer_flags_table {
ISCSI_TF_RUNNING = 0x01,
ISCSI_TF_STOP = 0x02,
ISCSI_TF_EXPIRED = 0x04,
};
/* Used for struct iscsi_np->np_flags */ enum np_flags_table {
NPF_IP_NETWORK = 0x00,
};
struct iscsi_r2t { int seq_complete; int recovery_r2t; int sent_r2t;
u32 r2t_sn;
u32 offset;
u32 targ_xfer_tag;
u32 xfer_len; struct list_head r2t_list;
} ____cacheline_aligned;
struct iscsit_cmd { enum iscsi_timer_flags_table dataout_timer_flags; /* DataOUT timeout retries */
u8 dataout_timeout_retries; /* Within command recovery count */
u8 error_recovery_count; /* iSCSI dependent state for out or order CmdSNs */ enum cmd_i_state_table deferred_i_state; /* iSCSI dependent state */ enum cmd_i_state_table i_state; /* Command is an immediate command (ISCSI_OP_IMMEDIATE set) */
u8 immediate_cmd; /* Immediate data present */
u8 immediate_data; /* iSCSI Opcode */
u8 iscsi_opcode; /* iSCSI Response Code */
u8 iscsi_response; /* Logout reason when iscsi_opcode == ISCSI_INIT_LOGOUT_CMND */
u8 logout_reason; /* Logout response code when iscsi_opcode == ISCSI_INIT_LOGOUT_CMND */
u8 logout_response; /* MaxCmdSN has been incremented */
u8 maxcmdsn_inc; /* Immediate Unsolicited Dataout */
u8 unsolicited_data; /* Reject reason code */
u8 reject_reason; /* CID contained in logout PDU when opcode == ISCSI_INIT_LOGOUT_CMND */
u16 logout_cid; /* Command flags */ enum cmd_flags_table cmd_flags; /* Initiator Task Tag assigned from Initiator */
itt_t init_task_tag; /* Target Transfer Tag assigned from Target */
u32 targ_xfer_tag; /* CmdSN assigned from Initiator */
u32 cmd_sn; /* ExpStatSN assigned from Initiator */
u32 exp_stat_sn; /* StatSN assigned to this ITT */
u32 stat_sn; /* DataSN Counter */
u32 data_sn; /* R2TSN Counter */
u32 r2t_sn; /* Last DataSN acknowledged via DataAck SNACK */
u32 acked_data_sn; /* Used for echoing NOPOUT ping data */
u32 buf_ptr_size; /* Used to store DataDigest */
u32 data_crc; /* Counter for MaxOutstandingR2T */
u32 outstanding_r2ts; /* Next R2T Offset when DataSequenceInOrder=Yes */
u32 r2t_offset; /* Iovec current and orig count for iscsit_cmd->iov_data */
u32 iov_data_count;
u32 orig_iov_data_count; /* Number of miscellaneous iovecs used for IP stack calls */
u32 iov_misc_count; /* Number of struct iscsi_pdu in struct iscsit_cmd->pdu_list */
u32 pdu_count; /* Next struct iscsi_pdu to send in struct iscsit_cmd->pdu_list */
u32 pdu_send_order; /* Current struct iscsi_pdu in struct iscsit_cmd->pdu_list */
u32 pdu_start; /* Next struct iscsi_seq to send in struct iscsit_cmd->seq_list */
u32 seq_send_order; /* Number of struct iscsi_seq in struct iscsit_cmd->seq_list */
u32 seq_count; /* Current struct iscsi_seq in struct iscsit_cmd->seq_list */
u32 seq_no; /* Lowest offset in current DataOUT sequence */
u32 seq_start_offset; /* Highest offset in current DataOUT sequence */
u32 seq_end_offset; /* Total size in bytes received so far of READ data */
u32 read_data_done; /* Total size in bytes received so far of WRITE data */
u32 write_data_done; /* Counter for FirstBurstLength key */
u32 first_burst_len; /* Counter for MaxBurstLength key */
u32 next_burst_len; /* Transfer size used for IP stack calls */
u32 tx_size; /* Buffer used for various purposes */ void *buf_ptr; /* Used by SendTargets=[iqn.,eui.] discovery */ void *text_in_ptr; /* See include/linux/dma-mapping.h */ enum dma_data_direction data_direction; /* iSCSI PDU Header + CRC */ unsignedchar pdu[ISCSI_HDR_LEN + ISCSI_CRC_LEN]; /* Number of times struct iscsit_cmd is present in immediate queue */
atomic_t immed_queue_count;
atomic_t response_queue_count;
spinlock_t datain_lock;
spinlock_t dataout_timeout_lock; /* spinlock for protecting struct iscsit_cmd->i_state */
spinlock_t istate_lock; /* spinlock for adding within command recovery entries */
spinlock_t error_lock; /* spinlock for adding R2Ts */
spinlock_t r2t_lock; /* DataIN List */ struct list_head datain_list; /* R2T List */ struct list_head cmd_r2t_list; /* Timer for DataOUT */ struct timer_list dataout_timer; /* Iovecs for SCSI data payload RX/TX w/ kernel level sockets */ struct kvec *iov_data; void *overflow_buf; /* Iovecs for miscellaneous purposes */ #define ISCSI_MISC_IOVECS 5 struct kvec iov_misc[ISCSI_MISC_IOVECS]; /* Array of struct iscsi_pdu used for DataPDUInOrder=No */ struct iscsi_pdu *pdu_list; /* Current struct iscsi_pdu used for DataPDUInOrder=No */ struct iscsi_pdu *pdu_ptr; /* Array of struct iscsi_seq used for DataSequenceInOrder=No */ struct iscsi_seq *seq_list; /* Current struct iscsi_seq used for DataSequenceInOrder=No */ struct iscsi_seq *seq_ptr; /* TMR Request when iscsi_opcode == ISCSI_OP_SCSI_TMFUNC */ struct iscsi_tmr_req *tmr_req; /* Connection this command is alligient to */ struct iscsit_conn *conn; /* Pointer to connection recovery entry */ struct iscsi_conn_recovery *cr; /* Session the command is part of, used for connection recovery */ struct iscsit_session *sess; /* list_head for connection list */ struct list_head i_conn_node; /* The TCM I/O descriptor that is accessed via container_of() */ struct se_cmd se_cmd; /* Sense buffer that will be mapped into outgoing status */ #define ISCSI_SENSE_BUFFER_LEN (TRANSPORT_SENSE_BUFFER + 2) unsignedchar sense_buffer[ISCSI_SENSE_BUFFER_LEN];
struct iscsi_node_auth { enum naf_flags_table naf_flags; int authenticate_target; /* Used for iscsit_global->discovery_auth,
* set to zero (auth disabled) by default */ int enforce_discovery_auth; #define MAX_USER_LEN 256 #define MAX_PASS_LEN 256 char userid[MAX_USER_LEN]; char password[MAX_PASS_LEN]; char userid_mutual[MAX_USER_LEN]; char password_mutual[MAX_PASS_LEN];
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.