mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-22 21:21:28 +00:00
qla2x00t-32gbit, target: Do not use se_cmd.priv
se_cmd.priv is not available in older kernel versions. Hence do not use it. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8131 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 <linux/bitmap.h> nor <linux/percpu_ida.h> are
|
||||
|
||||
Reference in New Issue
Block a user