iscsit: use the itt_t abstract type
Use the special itt_t type defined by the iscsi headers and the initiator to make sure it's an opaque value. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
Родитель
cea0b4ceec
Коммит
66c7db6876
|
@ -785,7 +785,6 @@ static int iscsit_handle_scsi_cmd(
|
||||||
|
|
||||||
hdr = (struct iscsi_scsi_req *) buf;
|
hdr = (struct iscsi_scsi_req *) buf;
|
||||||
payload_length = ntoh24(hdr->dlength);
|
payload_length = ntoh24(hdr->dlength);
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->data_length = be32_to_cpu(hdr->data_length);
|
hdr->data_length = be32_to_cpu(hdr->data_length);
|
||||||
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
|
@ -1194,7 +1193,6 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
|
||||||
|
|
||||||
hdr = (struct iscsi_data *) buf;
|
hdr = (struct iscsi_data *) buf;
|
||||||
payload_length = ntoh24(hdr->dlength);
|
payload_length = ntoh24(hdr->dlength);
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->ttt = be32_to_cpu(hdr->ttt);
|
hdr->ttt = be32_to_cpu(hdr->ttt);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
hdr->datasn = be32_to_cpu(hdr->datasn);
|
hdr->datasn = be32_to_cpu(hdr->datasn);
|
||||||
|
@ -1425,12 +1423,11 @@ static int iscsit_handle_nop_out(
|
||||||
|
|
||||||
hdr = (struct iscsi_nopout *) buf;
|
hdr = (struct iscsi_nopout *) buf;
|
||||||
payload_length = ntoh24(hdr->dlength);
|
payload_length = ntoh24(hdr->dlength);
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->ttt = be32_to_cpu(hdr->ttt);
|
hdr->ttt = be32_to_cpu(hdr->ttt);
|
||||||
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
|
|
||||||
if ((hdr->itt == 0xFFFFFFFF) && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) {
|
if (hdr->itt == RESERVED_ITT && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) {
|
||||||
pr_err("NOPOUT ITT is reserved, but Immediate Bit is"
|
pr_err("NOPOUT ITT is reserved, but Immediate Bit is"
|
||||||
" not set, protocol error.\n");
|
" not set, protocol error.\n");
|
||||||
return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1,
|
return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1,
|
||||||
|
@ -1448,7 +1445,7 @@ static int iscsit_handle_nop_out(
|
||||||
|
|
||||||
pr_debug("Got NOPOUT Ping %s ITT: 0x%08x, TTT: 0x%09x,"
|
pr_debug("Got NOPOUT Ping %s ITT: 0x%08x, TTT: 0x%09x,"
|
||||||
" CmdSN: 0x%08x, ExpStatSN: 0x%08x, Length: %u\n",
|
" CmdSN: 0x%08x, ExpStatSN: 0x%08x, Length: %u\n",
|
||||||
(hdr->itt == 0xFFFFFFFF) ? "Response" : "Request",
|
hdr->itt == RESERVED_ITT ? "Response" : "Request",
|
||||||
hdr->itt, hdr->ttt, hdr->cmdsn, hdr->exp_statsn,
|
hdr->itt, hdr->ttt, hdr->cmdsn, hdr->exp_statsn,
|
||||||
payload_length);
|
payload_length);
|
||||||
/*
|
/*
|
||||||
|
@ -1556,7 +1553,7 @@ static int iscsit_handle_nop_out(
|
||||||
pr_debug("Ping Data: \"%s\"\n", ping_data);
|
pr_debug("Ping Data: \"%s\"\n", ping_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hdr->itt != 0xFFFFFFFF) {
|
if (hdr->itt != RESERVED_ITT) {
|
||||||
if (!cmd) {
|
if (!cmd) {
|
||||||
pr_err("Checking CmdSN for NOPOUT,"
|
pr_err("Checking CmdSN for NOPOUT,"
|
||||||
" but cmd is NULL!\n");
|
" but cmd is NULL!\n");
|
||||||
|
@ -1639,8 +1636,6 @@ static int iscsit_handle_task_mgt_cmd(
|
||||||
u8 function;
|
u8 function;
|
||||||
|
|
||||||
hdr = (struct iscsi_tm *) buf;
|
hdr = (struct iscsi_tm *) buf;
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->rtt = be32_to_cpu(hdr->rtt);
|
|
||||||
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
hdr->refcmdsn = be32_to_cpu(hdr->refcmdsn);
|
hdr->refcmdsn = be32_to_cpu(hdr->refcmdsn);
|
||||||
|
@ -1655,9 +1650,9 @@ static int iscsit_handle_task_mgt_cmd(
|
||||||
|
|
||||||
if ((function != ISCSI_TM_FUNC_ABORT_TASK) &&
|
if ((function != ISCSI_TM_FUNC_ABORT_TASK) &&
|
||||||
((function != ISCSI_TM_FUNC_TASK_REASSIGN) &&
|
((function != ISCSI_TM_FUNC_TASK_REASSIGN) &&
|
||||||
(hdr->rtt != ISCSI_RESERVED_TAG))) {
|
hdr->rtt != RESERVED_ITT)) {
|
||||||
pr_err("RefTaskTag should be set to 0xFFFFFFFF.\n");
|
pr_err("RefTaskTag should be set to 0xFFFFFFFF.\n");
|
||||||
hdr->rtt = ISCSI_RESERVED_TAG;
|
hdr->rtt = RESERVED_ITT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((function == ISCSI_TM_FUNC_TASK_REASSIGN) &&
|
if ((function == ISCSI_TM_FUNC_TASK_REASSIGN) &&
|
||||||
|
@ -1869,7 +1864,6 @@ static int iscsit_handle_text_cmd(
|
||||||
|
|
||||||
hdr = (struct iscsi_text *) buf;
|
hdr = (struct iscsi_text *) buf;
|
||||||
payload_length = ntoh24(hdr->dlength);
|
payload_length = ntoh24(hdr->dlength);
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->ttt = be32_to_cpu(hdr->ttt);
|
hdr->ttt = be32_to_cpu(hdr->ttt);
|
||||||
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
|
@ -2131,7 +2125,6 @@ static int iscsit_handle_logout_cmd(
|
||||||
|
|
||||||
hdr = (struct iscsi_logout *) buf;
|
hdr = (struct iscsi_logout *) buf;
|
||||||
reason_code = (hdr->flags & 0x7f);
|
reason_code = (hdr->flags & 0x7f);
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->cid = be16_to_cpu(hdr->cid);
|
hdr->cid = be16_to_cpu(hdr->cid);
|
||||||
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
hdr->cmdsn = be32_to_cpu(hdr->cmdsn);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
|
@ -2219,7 +2212,6 @@ static int iscsit_handle_snack(
|
||||||
|
|
||||||
hdr = (struct iscsi_snack *) buf;
|
hdr = (struct iscsi_snack *) buf;
|
||||||
hdr->flags &= ~ISCSI_FLAG_CMD_FINAL;
|
hdr->flags &= ~ISCSI_FLAG_CMD_FINAL;
|
||||||
hdr->itt = be32_to_cpu(hdr->itt);
|
|
||||||
hdr->ttt = be32_to_cpu(hdr->ttt);
|
hdr->ttt = be32_to_cpu(hdr->ttt);
|
||||||
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn);
|
||||||
hdr->begrun = be32_to_cpu(hdr->begrun);
|
hdr->begrun = be32_to_cpu(hdr->begrun);
|
||||||
|
@ -2414,7 +2406,7 @@ static int iscsit_send_conn_drop_async_message(
|
||||||
hdr = (struct iscsi_async *) cmd->pdu;
|
hdr = (struct iscsi_async *) cmd->pdu;
|
||||||
hdr->opcode = ISCSI_OP_ASYNC_EVENT;
|
hdr->opcode = ISCSI_OP_ASYNC_EVENT;
|
||||||
hdr->flags = ISCSI_FLAG_CMD_FINAL;
|
hdr->flags = ISCSI_FLAG_CMD_FINAL;
|
||||||
cmd->init_task_tag = 0xFFFFFFFF;
|
cmd->init_task_tag = RESERVED_ITT;
|
||||||
cmd->targ_xfer_tag = 0xFFFFFFFF;
|
cmd->targ_xfer_tag = 0xFFFFFFFF;
|
||||||
put_unaligned_be64(0xFFFFFFFFFFFFFFFFULL, &hdr->rsvd4[0]);
|
put_unaligned_be64(0xFFFFFFFFFFFFFFFFULL, &hdr->rsvd4[0]);
|
||||||
cmd->stat_sn = conn->stat_sn++;
|
cmd->stat_sn = conn->stat_sn++;
|
||||||
|
@ -2536,7 +2528,7 @@ static int iscsit_send_data_in(
|
||||||
else
|
else
|
||||||
put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun);
|
put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun);
|
||||||
|
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
hdr->ttt = (hdr->flags & ISCSI_FLAG_DATA_ACK) ?
|
hdr->ttt = (hdr->flags & ISCSI_FLAG_DATA_ACK) ?
|
||||||
cpu_to_be32(cmd->targ_xfer_tag) :
|
cpu_to_be32(cmd->targ_xfer_tag) :
|
||||||
0xFFFFFFFF;
|
0xFFFFFFFF;
|
||||||
|
@ -2708,7 +2700,7 @@ static int iscsit_send_logout_response(
|
||||||
hdr->opcode = ISCSI_OP_LOGOUT_RSP;
|
hdr->opcode = ISCSI_OP_LOGOUT_RSP;
|
||||||
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
||||||
hdr->response = cmd->logout_response;
|
hdr->response = cmd->logout_response;
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
cmd->stat_sn = conn->stat_sn++;
|
cmd->stat_sn = conn->stat_sn++;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
|
||||||
|
@ -2759,7 +2751,7 @@ static int iscsit_send_unsolicited_nopin(
|
||||||
memset(hdr, 0, ISCSI_HDR_LEN);
|
memset(hdr, 0, ISCSI_HDR_LEN);
|
||||||
hdr->opcode = ISCSI_OP_NOOP_IN;
|
hdr->opcode = ISCSI_OP_NOOP_IN;
|
||||||
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
||||||
cmd->stat_sn = conn->stat_sn;
|
cmd->stat_sn = conn->stat_sn;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
@ -2816,7 +2808,7 @@ static int iscsit_send_nopin_response(
|
||||||
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
||||||
hton24(hdr->dlength, cmd->buf_ptr_size);
|
hton24(hdr->dlength, cmd->buf_ptr_size);
|
||||||
put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun);
|
put_unaligned_le64(0xFFFFFFFFFFFFFFFFULL, &hdr->lun);
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
||||||
cmd->stat_sn = conn->stat_sn++;
|
cmd->stat_sn = conn->stat_sn++;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
@ -2906,7 +2898,7 @@ static int iscsit_send_r2t(
|
||||||
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
||||||
int_to_scsilun(cmd->se_cmd.orig_fe_lun,
|
int_to_scsilun(cmd->se_cmd.orig_fe_lun,
|
||||||
(struct scsi_lun *)&hdr->lun);
|
(struct scsi_lun *)&hdr->lun);
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
spin_lock_bh(&conn->sess->ttt_lock);
|
spin_lock_bh(&conn->sess->ttt_lock);
|
||||||
r2t->targ_xfer_tag = conn->sess->targ_xfer_tag++;
|
r2t->targ_xfer_tag = conn->sess->targ_xfer_tag++;
|
||||||
if (r2t->targ_xfer_tag == 0xFFFFFFFF)
|
if (r2t->targ_xfer_tag == 0xFFFFFFFF)
|
||||||
|
@ -3074,7 +3066,7 @@ static int iscsit_send_status(
|
||||||
}
|
}
|
||||||
hdr->response = cmd->iscsi_response;
|
hdr->response = cmd->iscsi_response;
|
||||||
hdr->cmd_status = cmd->se_cmd.scsi_status;
|
hdr->cmd_status = cmd->se_cmd.scsi_status;
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
|
||||||
iscsit_increment_maxcmdsn(cmd, conn->sess);
|
iscsit_increment_maxcmdsn(cmd, conn->sess);
|
||||||
|
@ -3187,7 +3179,7 @@ static int iscsit_send_task_mgt_rsp(
|
||||||
hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
|
hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
|
||||||
hdr->flags = ISCSI_FLAG_CMD_FINAL;
|
hdr->flags = ISCSI_FLAG_CMD_FINAL;
|
||||||
hdr->response = iscsit_convert_tcm_tmr_rsp(se_tmr);
|
hdr->response = iscsit_convert_tcm_tmr_rsp(se_tmr);
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
cmd->stat_sn = conn->stat_sn++;
|
cmd->stat_sn = conn->stat_sn++;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
|
||||||
|
@ -3360,7 +3352,7 @@ static int iscsit_send_text_rsp(
|
||||||
hdr->opcode = ISCSI_OP_TEXT_RSP;
|
hdr->opcode = ISCSI_OP_TEXT_RSP;
|
||||||
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
hdr->flags |= ISCSI_FLAG_CMD_FINAL;
|
||||||
hton24(hdr->dlength, text_length);
|
hton24(hdr->dlength, text_length);
|
||||||
hdr->itt = cpu_to_be32(cmd->init_task_tag);
|
hdr->itt = cmd->init_task_tag;
|
||||||
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag);
|
||||||
cmd->stat_sn = conn->stat_sn++;
|
cmd->stat_sn = conn->stat_sn++;
|
||||||
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
hdr->statsn = cpu_to_be32(cmd->stat_sn);
|
||||||
|
|
|
@ -1475,7 +1475,8 @@ static u32 iscsi_get_task_tag(struct se_cmd *se_cmd)
|
||||||
{
|
{
|
||||||
struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd);
|
struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd);
|
||||||
|
|
||||||
return cmd->init_task_tag;
|
/* only used for printks or comparism with ->ref_task_tag */
|
||||||
|
return (__force u32)cmd->init_task_tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int iscsi_get_cmd_state(struct se_cmd *se_cmd)
|
static int iscsi_get_cmd_state(struct se_cmd *se_cmd)
|
||||||
|
|
|
@ -361,7 +361,7 @@ struct iscsi_cmd {
|
||||||
/* Command flags */
|
/* Command flags */
|
||||||
enum cmd_flags_table cmd_flags;
|
enum cmd_flags_table cmd_flags;
|
||||||
/* Initiator Task Tag assigned from Initiator */
|
/* Initiator Task Tag assigned from Initiator */
|
||||||
u32 init_task_tag;
|
itt_t init_task_tag;
|
||||||
/* Target Transfer Tag assigned from Target */
|
/* Target Transfer Tag assigned from Target */
|
||||||
u32 targ_xfer_tag;
|
u32 targ_xfer_tag;
|
||||||
/* CmdSN assigned from Initiator */
|
/* CmdSN assigned from Initiator */
|
||||||
|
@ -506,7 +506,7 @@ struct iscsi_conn {
|
||||||
u32 auth_id;
|
u32 auth_id;
|
||||||
u32 conn_flags;
|
u32 conn_flags;
|
||||||
/* Used for iscsi_tx_login_rsp() */
|
/* Used for iscsi_tx_login_rsp() */
|
||||||
u32 login_itt;
|
itt_t login_itt;
|
||||||
u32 exp_statsn;
|
u32 exp_statsn;
|
||||||
/* Per connection status sequence number */
|
/* Per connection status sequence number */
|
||||||
u32 stat_sn;
|
u32 stat_sn;
|
||||||
|
@ -599,7 +599,7 @@ struct iscsi_session {
|
||||||
/* state session is currently in */
|
/* state session is currently in */
|
||||||
u32 session_state;
|
u32 session_state;
|
||||||
/* session wide counter: initiator assigned task tag */
|
/* session wide counter: initiator assigned task tag */
|
||||||
u32 init_task_tag;
|
itt_t init_task_tag;
|
||||||
/* session wide counter: target assigned task tag */
|
/* session wide counter: target assigned task tag */
|
||||||
u32 targ_xfer_tag;
|
u32 targ_xfer_tag;
|
||||||
u32 cmdsn_window;
|
u32 cmdsn_window;
|
||||||
|
@ -665,7 +665,7 @@ struct iscsi_login {
|
||||||
u8 version_max;
|
u8 version_max;
|
||||||
char isid[6];
|
char isid[6];
|
||||||
u32 cmd_sn;
|
u32 cmd_sn;
|
||||||
u32 init_task_tag;
|
itt_t init_task_tag;
|
||||||
u32 initial_exp_statsn;
|
u32 initial_exp_statsn;
|
||||||
u32 rsp_length;
|
u32 rsp_length;
|
||||||
u16 cid;
|
u16 cid;
|
||||||
|
|
|
@ -466,7 +466,7 @@ static int iscsit_handle_recovery_datain(
|
||||||
int iscsit_handle_recovery_datain_or_r2t(
|
int iscsit_handle_recovery_datain_or_r2t(
|
||||||
struct iscsi_conn *conn,
|
struct iscsi_conn *conn,
|
||||||
unsigned char *buf,
|
unsigned char *buf,
|
||||||
u32 init_task_tag,
|
itt_t init_task_tag,
|
||||||
u32 targ_xfer_tag,
|
u32 targ_xfer_tag,
|
||||||
u32 begrun,
|
u32 begrun,
|
||||||
u32 runlength)
|
u32 runlength)
|
||||||
|
@ -498,7 +498,7 @@ int iscsit_handle_recovery_datain_or_r2t(
|
||||||
/* #warning FIXME: Status SNACK needs to be dependent on OPCODE!!! */
|
/* #warning FIXME: Status SNACK needs to be dependent on OPCODE!!! */
|
||||||
int iscsit_handle_status_snack(
|
int iscsit_handle_status_snack(
|
||||||
struct iscsi_conn *conn,
|
struct iscsi_conn *conn,
|
||||||
u32 init_task_tag,
|
itt_t init_task_tag,
|
||||||
u32 targ_xfer_tag,
|
u32 targ_xfer_tag,
|
||||||
u32 begrun,
|
u32 begrun,
|
||||||
u32 runlength)
|
u32 runlength)
|
||||||
|
|
|
@ -7,8 +7,8 @@ extern int iscsit_create_recovery_datain_values_datasequenceinorder_yes(
|
||||||
extern int iscsit_create_recovery_datain_values_datasequenceinorder_no(
|
extern int iscsit_create_recovery_datain_values_datasequenceinorder_no(
|
||||||
struct iscsi_cmd *, struct iscsi_datain_req *);
|
struct iscsi_cmd *, struct iscsi_datain_req *);
|
||||||
extern int iscsit_handle_recovery_datain_or_r2t(struct iscsi_conn *, unsigned char *,
|
extern int iscsit_handle_recovery_datain_or_r2t(struct iscsi_conn *, unsigned char *,
|
||||||
u32, u32, u32, u32);
|
itt_t, u32, u32, u32);
|
||||||
extern int iscsit_handle_status_snack(struct iscsi_conn *, u32, u32,
|
extern int iscsit_handle_status_snack(struct iscsi_conn *, itt_t, u32,
|
||||||
u32, u32);
|
u32, u32);
|
||||||
extern int iscsit_handle_data_ack(struct iscsi_conn *, u32, u32, u32);
|
extern int iscsit_handle_data_ack(struct iscsi_conn *, u32, u32, u32);
|
||||||
extern int iscsit_dataout_datapduinorder_no_fbit(struct iscsi_cmd *, struct iscsi_pdu *);
|
extern int iscsit_dataout_datapduinorder_no_fbit(struct iscsi_cmd *, struct iscsi_pdu *);
|
||||||
|
|
|
@ -953,9 +953,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
|
||||||
pdu = (struct iscsi_login_req *) buffer;
|
pdu = (struct iscsi_login_req *) buffer;
|
||||||
pdu->cid = be16_to_cpu(pdu->cid);
|
pdu->cid = be16_to_cpu(pdu->cid);
|
||||||
pdu->tsih = be16_to_cpu(pdu->tsih);
|
pdu->tsih = be16_to_cpu(pdu->tsih);
|
||||||
pdu->itt = be32_to_cpu(pdu->itt);
|
|
||||||
pdu->cmdsn = be32_to_cpu(pdu->cmdsn);
|
pdu->cmdsn = be32_to_cpu(pdu->cmdsn);
|
||||||
pdu->exp_statsn = be32_to_cpu(pdu->exp_statsn);
|
pdu->exp_statsn = be32_to_cpu(pdu->exp_statsn);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Used by iscsit_tx_login_rsp() for Login Resonses PDUs
|
* Used by iscsit_tx_login_rsp() for Login Resonses PDUs
|
||||||
* when Status-Class != 0.
|
* when Status-Class != 0.
|
||||||
|
|
|
@ -339,14 +339,14 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||||
hton24(login_rsp->dlength, login->rsp_length);
|
hton24(login_rsp->dlength, login->rsp_length);
|
||||||
memcpy(login_rsp->isid, login->isid, 6);
|
memcpy(login_rsp->isid, login->isid, 6);
|
||||||
login_rsp->tsih = cpu_to_be16(login->tsih);
|
login_rsp->tsih = cpu_to_be16(login->tsih);
|
||||||
login_rsp->itt = cpu_to_be32(login->init_task_tag);
|
login_rsp->itt = login->init_task_tag;
|
||||||
login_rsp->statsn = cpu_to_be32(conn->stat_sn++);
|
login_rsp->statsn = cpu_to_be32(conn->stat_sn++);
|
||||||
login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn);
|
login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn);
|
||||||
login_rsp->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn);
|
login_rsp->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn);
|
||||||
|
|
||||||
pr_debug("Sending Login Response, Flags: 0x%02x, ITT: 0x%08x,"
|
pr_debug("Sending Login Response, Flags: 0x%02x, ITT: 0x%08x,"
|
||||||
" ExpCmdSN; 0x%08x, MaxCmdSN: 0x%08x, StatSN: 0x%08x, Length:"
|
" ExpCmdSN; 0x%08x, MaxCmdSN: 0x%08x, StatSN: 0x%08x, Length:"
|
||||||
" %u\n", login_rsp->flags, ntohl(login_rsp->itt),
|
" %u\n", login_rsp->flags, (__force u32)login_rsp->itt,
|
||||||
ntohl(login_rsp->exp_cmdsn), ntohl(login_rsp->max_cmdsn),
|
ntohl(login_rsp->exp_cmdsn), ntohl(login_rsp->max_cmdsn),
|
||||||
ntohl(login_rsp->statsn), login->rsp_length);
|
ntohl(login_rsp->statsn), login->rsp_length);
|
||||||
|
|
||||||
|
@ -361,7 +361,6 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||||
|
|
||||||
login->rsp_length = 0;
|
login->rsp_length = 0;
|
||||||
login_rsp->tsih = be16_to_cpu(login_rsp->tsih);
|
login_rsp->tsih = be16_to_cpu(login_rsp->tsih);
|
||||||
login_rsp->itt = be32_to_cpu(login_rsp->itt);
|
|
||||||
login_rsp->statsn = be32_to_cpu(login_rsp->statsn);
|
login_rsp->statsn = be32_to_cpu(login_rsp->statsn);
|
||||||
mutex_lock(&sess->cmdsn_mutex);
|
mutex_lock(&sess->cmdsn_mutex);
|
||||||
login_rsp->exp_cmdsn = be32_to_cpu(sess->exp_cmd_sn);
|
login_rsp->exp_cmdsn = be32_to_cpu(sess->exp_cmd_sn);
|
||||||
|
@ -382,7 +381,6 @@ static int iscsi_target_do_rx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||||
login_req = (struct iscsi_login_req *) login->req;
|
login_req = (struct iscsi_login_req *) login->req;
|
||||||
payload_length = ntoh24(login_req->dlength);
|
payload_length = ntoh24(login_req->dlength);
|
||||||
login_req->tsih = be16_to_cpu(login_req->tsih);
|
login_req->tsih = be16_to_cpu(login_req->tsih);
|
||||||
login_req->itt = be32_to_cpu(login_req->itt);
|
|
||||||
login_req->cid = be16_to_cpu(login_req->cid);
|
login_req->cid = be16_to_cpu(login_req->cid);
|
||||||
login_req->cmdsn = be32_to_cpu(login_req->cmdsn);
|
login_req->cmdsn = be32_to_cpu(login_req->cmdsn);
|
||||||
login_req->exp_statsn = be32_to_cpu(login_req->exp_statsn);
|
login_req->exp_statsn = be32_to_cpu(login_req->exp_statsn);
|
||||||
|
|
|
@ -61,7 +61,7 @@ u8 iscsit_tmr_abort_task(
|
||||||
return ISCSI_TMF_RSP_REJECTED;
|
return ISCSI_TMF_RSP_REJECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
se_tmr->ref_task_tag = hdr->rtt;
|
se_tmr->ref_task_tag = (__force u32)hdr->rtt;
|
||||||
tmr_req->ref_cmd = ref_cmd;
|
tmr_req->ref_cmd = ref_cmd;
|
||||||
tmr_req->ref_cmd_sn = hdr->refcmdsn;
|
tmr_req->ref_cmd_sn = hdr->refcmdsn;
|
||||||
tmr_req->exp_data_sn = hdr->exp_datasn;
|
tmr_req->exp_data_sn = hdr->exp_datasn;
|
||||||
|
@ -171,7 +171,7 @@ u8 iscsit_tmr_task_reassign(
|
||||||
return ISCSI_TMF_RSP_REJECTED;
|
return ISCSI_TMF_RSP_REJECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
se_tmr->ref_task_tag = hdr->rtt;
|
se_tmr->ref_task_tag = (__force u32)hdr->rtt;
|
||||||
tmr_req->ref_cmd = ref_cmd;
|
tmr_req->ref_cmd = ref_cmd;
|
||||||
tmr_req->ref_cmd_sn = hdr->refcmdsn;
|
tmr_req->ref_cmd_sn = hdr->refcmdsn;
|
||||||
tmr_req->exp_data_sn = hdr->exp_datasn;
|
tmr_req->exp_data_sn = hdr->exp_datasn;
|
||||||
|
|
|
@ -351,7 +351,7 @@ int iscsit_check_unsolicited_dataout(struct iscsi_cmd *cmd, unsigned char *buf)
|
||||||
|
|
||||||
struct iscsi_cmd *iscsit_find_cmd_from_itt(
|
struct iscsi_cmd *iscsit_find_cmd_from_itt(
|
||||||
struct iscsi_conn *conn,
|
struct iscsi_conn *conn,
|
||||||
u32 init_task_tag)
|
itt_t init_task_tag)
|
||||||
{
|
{
|
||||||
struct iscsi_cmd *cmd;
|
struct iscsi_cmd *cmd;
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ struct iscsi_cmd *iscsit_find_cmd_from_itt(
|
||||||
|
|
||||||
struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(
|
struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(
|
||||||
struct iscsi_conn *conn,
|
struct iscsi_conn *conn,
|
||||||
u32 init_task_tag,
|
itt_t init_task_tag,
|
||||||
u32 length)
|
u32 length)
|
||||||
{
|
{
|
||||||
struct iscsi_cmd *cmd;
|
struct iscsi_cmd *cmd;
|
||||||
|
@ -417,7 +417,7 @@ int iscsit_find_cmd_for_recovery(
|
||||||
struct iscsi_session *sess,
|
struct iscsi_session *sess,
|
||||||
struct iscsi_cmd **cmd_ptr,
|
struct iscsi_cmd **cmd_ptr,
|
||||||
struct iscsi_conn_recovery **cr_ptr,
|
struct iscsi_conn_recovery **cr_ptr,
|
||||||
u32 init_task_tag)
|
itt_t init_task_tag)
|
||||||
{
|
{
|
||||||
struct iscsi_cmd *cmd = NULL;
|
struct iscsi_cmd *cmd = NULL;
|
||||||
struct iscsi_conn_recovery *cr;
|
struct iscsi_conn_recovery *cr;
|
||||||
|
@ -855,7 +855,7 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
|
||||||
cmd->iscsi_opcode = ISCSI_OP_NOOP_IN;
|
cmd->iscsi_opcode = ISCSI_OP_NOOP_IN;
|
||||||
state = (want_response) ? ISTATE_SEND_NOPIN_WANT_RESPONSE :
|
state = (want_response) ? ISTATE_SEND_NOPIN_WANT_RESPONSE :
|
||||||
ISTATE_SEND_NOPIN_NO_RESPONSE;
|
ISTATE_SEND_NOPIN_NO_RESPONSE;
|
||||||
cmd->init_task_tag = 0xFFFFFFFF;
|
cmd->init_task_tag = RESERVED_ITT;
|
||||||
spin_lock_bh(&conn->sess->ttt_lock);
|
spin_lock_bh(&conn->sess->ttt_lock);
|
||||||
cmd->targ_xfer_tag = (want_response) ? conn->sess->targ_xfer_tag++ :
|
cmd->targ_xfer_tag = (want_response) ? conn->sess->targ_xfer_tag++ :
|
||||||
0xFFFFFFFF;
|
0xFFFFFFFF;
|
||||||
|
@ -1222,7 +1222,7 @@ int iscsit_tx_login_rsp(struct iscsi_conn *conn, u8 status_class, u8 status_deta
|
||||||
hdr->opcode = ISCSI_OP_LOGIN_RSP;
|
hdr->opcode = ISCSI_OP_LOGIN_RSP;
|
||||||
hdr->status_class = status_class;
|
hdr->status_class = status_class;
|
||||||
hdr->status_detail = status_detail;
|
hdr->status_detail = status_detail;
|
||||||
hdr->itt = cpu_to_be32(conn->login_itt);
|
hdr->itt = conn->login_itt;
|
||||||
|
|
||||||
iov.iov_base = &iscsi_hdr;
|
iov.iov_base = &iscsi_hdr;
|
||||||
iov.iov_len = ISCSI_HDR_LEN;
|
iov.iov_len = ISCSI_HDR_LEN;
|
||||||
|
|
|
@ -14,12 +14,12 @@ extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *);
|
||||||
extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32);
|
extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32);
|
||||||
int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, u32 cmdsn);
|
int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, u32 cmdsn);
|
||||||
extern int iscsit_check_unsolicited_dataout(struct iscsi_cmd *, unsigned char *);
|
extern int iscsit_check_unsolicited_dataout(struct iscsi_cmd *, unsigned char *);
|
||||||
extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, u32);
|
extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t);
|
||||||
extern struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(struct iscsi_conn *,
|
extern struct iscsi_cmd *iscsit_find_cmd_from_itt_or_dump(struct iscsi_conn *,
|
||||||
u32, u32);
|
itt_t, u32);
|
||||||
extern struct iscsi_cmd *iscsit_find_cmd_from_ttt(struct iscsi_conn *, u32);
|
extern struct iscsi_cmd *iscsit_find_cmd_from_ttt(struct iscsi_conn *, u32);
|
||||||
extern int iscsit_find_cmd_for_recovery(struct iscsi_session *, struct iscsi_cmd **,
|
extern int iscsit_find_cmd_for_recovery(struct iscsi_session *, struct iscsi_cmd **,
|
||||||
struct iscsi_conn_recovery **, u32);
|
struct iscsi_conn_recovery **, itt_t);
|
||||||
extern void iscsit_add_cmd_to_immediate_queue(struct iscsi_cmd *, struct iscsi_conn *, u8);
|
extern void iscsit_add_cmd_to_immediate_queue(struct iscsi_cmd *, struct iscsi_conn *, u8);
|
||||||
extern struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsi_conn *);
|
extern struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsi_conn *);
|
||||||
extern void iscsit_add_cmd_to_response_queue(struct iscsi_cmd *, struct iscsi_conn *, u8);
|
extern void iscsit_add_cmd_to_response_queue(struct iscsi_cmd *, struct iscsi_conn *, u8);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче