diff --git a/qla2x00t-32gbit/qla2x00-target/scst_qla2xxx.c b/qla2x00t-32gbit/qla2x00-target/scst_qla2xxx.c index 1b30da278..aec2692f6 100644 --- a/qla2x00t-32gbit/qla2x00-target/scst_qla2xxx.c +++ b/qla2x00t-32gbit/qla2x00-target/scst_qla2xxx.c @@ -309,8 +309,8 @@ static const int qla_tgt_supported_dif_block_size[]= { static inline void qla_tgt_set_cmd_prot_op(struct qla_tgt_cmd *cmd, uint8_t xmit_rsp) { - struct scst_cmd *scst_cmd = (struct scst_cmd *) cmd->se_cmd.priv; - int dir = scst_cmd_get_data_direction(cmd->se_cmd.priv); + struct scst_cmd *scst_cmd = cmd->scst_cmd; + int dir = scst_cmd_get_data_direction(scst_cmd); int action = scst_get_dif_action( scst_get_tgt_dif_actions(scst_cmd->cmd_dif_actions)); @@ -547,10 +547,10 @@ static int sqa_qla2xxx_handle_cmd(scsi_qla_host_t *vha, vha->host_no, vha->vp_idx, data_length, task_codes, data_dir, bidi, cmd->unpacked_lun, atio->u.isp24.fcp_cmnd.cdb[0], - atio->u.isp24.exchange_addr, cmd, cmd->se_cmd.priv); + atio->u.isp24.exchange_addr, cmd, cmd->scst_cmd); - cmd->se_cmd.priv = scst_rx_cmd(scst_sess, + cmd->scst_cmd = scst_rx_cmd(scst_sess, (uint8_t *)&atio->u.isp24.fcp_cmnd.lun, sizeof(atio->u.isp24.fcp_cmnd.lun), atio->u.isp24.fcp_cmnd.cdb, @@ -558,15 +558,15 @@ static int sqa_qla2xxx_handle_cmd(scsi_qla_host_t *vha, (atio->u.isp24.fcp_cmnd.add_cdb_len *4), SCST_ATOMIC); - if (cmd->se_cmd.priv == NULL) { + if (cmd->scst_cmd == NULL) { PRINT_ERROR("sqatgt(%ld/%d): scst_rx_cmd function failed.", vha->host_no, vha->vp_idx); res = -EFAULT; goto out; } - scst_cmd_set_tag(cmd->se_cmd.priv, atio->u.isp24.exchange_addr); - scst_cmd_set_tgt_priv(cmd->se_cmd.priv, cmd); + scst_cmd_set_tag(cmd->scst_cmd, atio->u.isp24.exchange_addr); + scst_cmd_set_tgt_priv(cmd->scst_cmd, cmd); if (atio->u.isp24.fcp_cmnd.rddata && atio->u.isp24.fcp_cmnd.wrdata) dir = SCST_DATA_BIDI; @@ -576,35 +576,34 @@ static int sqa_qla2xxx_handle_cmd(scsi_qla_host_t *vha, dir = SCST_DATA_WRITE; else dir = SCST_DATA_NONE; - scst_cmd_set_expected(cmd->se_cmd.priv, dir, data_length); + scst_cmd_set_expected(cmd->scst_cmd, dir, data_length); /* task_code fr arg list is based on TCM #define. */ switch (atio->u.isp24.fcp_cmnd.task_attr) { case ATIO_SIMPLE_QUEUE: - scst_cmd_set_queue_type(cmd->se_cmd.priv, - SCST_CMD_QUEUE_SIMPLE); + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_SIMPLE); break; case ATIO_HEAD_OF_QUEUE: - scst_cmd_set_queue_type(cmd->se_cmd.priv, + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_HEAD_OF_QUEUE); break; case ATIO_ORDERED_QUEUE: - scst_cmd_set_queue_type(cmd->se_cmd.priv, + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_ORDERED); break; case ATIO_ACA_QUEUE: - scst_cmd_set_queue_type(cmd->se_cmd.priv, + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_ACA); break; case ATIO_UNTAGGED: - scst_cmd_set_queue_type(cmd->se_cmd.priv, + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_UNTAGGED); break; default: PRINT_ERROR("sqatgt(%ld/%d): unknown task code %x, use " "ORDERED instead.", vha->host_no, vha->vp_idx, atio->u.isp24.fcp_cmnd.task_attr); - scst_cmd_set_queue_type(cmd->se_cmd.priv, + scst_cmd_set_queue_type(cmd->scst_cmd, SCST_CMD_QUEUE_ORDERED); break; } @@ -612,10 +611,10 @@ static int sqa_qla2xxx_handle_cmd(scsi_qla_host_t *vha, TRACE(TRACE_SCSI, "sqatgt(%ld/%d): START Command=%p tag=%d, " "queue type=%x", vha->host_no, vha->vp_idx, cmd, cmd->atio.u.isp24.exchange_addr, - scst_cmd_get_queue_type(cmd->se_cmd.priv)); + scst_cmd_get_queue_type(cmd->scst_cmd)); /* we're being call by wq, so do direct */ - scst_cmd_init_done(cmd->se_cmd.priv, SCST_CONTEXT_DIRECT); + scst_cmd_init_done(cmd->scst_cmd, SCST_CONTEXT_DIRECT); out: TRACE_EXIT_RES(res); @@ -624,7 +623,7 @@ static int sqa_qla2xxx_handle_cmd(scsi_qla_host_t *vha, static void sqa_qla2xxx_handle_data(struct qla_tgt_cmd *cmd) { - struct scst_cmd *scst_cmd = (struct scst_cmd *)cmd->se_cmd.priv; + struct scst_cmd *scst_cmd = cmd->scst_cmd; int rx_status; unsigned long flags; @@ -802,7 +801,7 @@ static int sqa_qla2xxx_handle_tmr(struct qla_tgt_mgmt_cmd *mcmd, u64 lun, static void sqa_qla2xxx_free_cmd(struct qla_tgt_cmd *cmd) { - struct scst_cmd *scst_cmd = cmd->se_cmd.priv; + struct scst_cmd *scst_cmd = cmd->scst_cmd; TRACE_ENTRY(); @@ -1730,7 +1729,7 @@ static int sqa_xmit_response(struct scst_cmd *scst_cmd) TRACE_DBG("cmd[%p] ulpcmd[%p] dif_actions=0x%x, cdb=0x%x, prot_sg[%p] " "prot_sg_cnt[%x], prot_type[%x] prot_op[%x]", - cmd, cmd->se_cmd.priv, scst_cmd->cmd_dif_actions, scst_cmd->cdb_buf[0], + cmd, cmd->scst_cmd, scst_cmd->cmd_dif_actions, scst_cmd->cdb_buf[0], cmd->prot_sg, cmd->prot_sg_cnt, cmd->se_cmd.prot_type, cmd->se_cmd.prot_op); @@ -1817,7 +1816,7 @@ static int sqa_rdy_to_xfer(struct scst_cmd *scst_cmd) TRACE_DBG("%s: cmd[%p] ulpcmd[%p] dif_actions=0x%x, cdb=0x%x, " "prot_sg_cnt[%x], prot_type[%x] prot_op[%x], bufflen[%x]",__func__, - cmd, cmd->se_cmd.priv, + cmd, cmd->scst_cmd, scst_cmd->cmd_dif_actions, scst_cmd->cdb_buf[0], cmd->prot_sg_cnt, cmd->se_cmd.prot_type, cmd->se_cmd.prot_op, cmd->bufflen); @@ -2342,7 +2341,7 @@ sqa_qla2xxx_chk_dif_tags(uint32_t tag) static int sqa_qla2xxx_dif_tags(struct qla_tgt_cmd *cmd, uint16_t *pfw_prot_opts) { - struct scst_cmd *scst_cmd = (struct scst_cmd *)cmd->se_cmd.priv; + struct scst_cmd *scst_cmd = cmd->scst_cmd; uint32_t t32=0; t32 = scst_get_dif_checks(scst_cmd->cmd_dif_actions); diff --git a/qla2x00t-32gbit/qla_target.h b/qla2x00t-32gbit/qla_target.h index 8ec9d7741..874e4b24f 100644 --- a/qla2x00t-32gbit/qla_target.h +++ b/qla2x00t-32gbit/qla_target.h @@ -899,6 +899,7 @@ struct qla_tgt_cmd { uint8_t cmd_type; uint8_t pad[7]; struct se_cmd se_cmd; + struct scst_cmd *scst_cmd; #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) /* * Used if neither nor are