]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/scsi/qla2xxx/tcm_qla2xxx.c
Merge branch 'misc.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[karo-tx-linux.git] / drivers / scsi / qla2xxx / tcm_qla2xxx.c
index 7443e4efa3aed461f225f6b04bae9223f615dd0b..c4b414833b86ef77de2bd4d3785f460793526c1f 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
-#include <generated/utsrelease.h>
 #include <linux/utsname.h>
 #include <linux/vmalloc.h>
 #include <linux/init.h>
@@ -284,7 +283,7 @@ static void tcm_qla2xxx_complete_free(struct work_struct *work)
 
        WARN_ON(cmd->trc_flags & TRC_CMD_FREE);
 
-       cmd->vha->tgt_counters.qla_core_ret_sta_ctio++;
+       cmd->qpair->tgt_counters.qla_core_ret_sta_ctio++;
        cmd->trc_flags |= TRC_CMD_FREE;
        transport_generic_free_cmd(&cmd->se_cmd, 0);
 }
@@ -296,7 +295,7 @@ static void tcm_qla2xxx_complete_free(struct work_struct *work)
  */
 static void tcm_qla2xxx_free_cmd(struct qla_tgt_cmd *cmd)
 {
-       cmd->vha->tgt_counters.core_qla_free_cmd++;
+       cmd->qpair->tgt_counters.core_qla_free_cmd++;
        cmd->cmd_in_wq = 1;
 
        WARN_ON(cmd->trc_flags & TRC_CMD_DONE);
@@ -492,7 +491,7 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
        }
 #endif
 
-       cmd->vha->tgt_counters.qla_core_sbt_cmd++;
+       cmd->qpair->tgt_counters.qla_core_sbt_cmd++;
        return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
                                cmd->unpacked_lun, data_length, fcp_task_attr,
                                data_dir, flags);
@@ -520,7 +519,7 @@ static void tcm_qla2xxx_handle_data_work(struct work_struct *work)
        }
        spin_unlock_irqrestore(&cmd->cmd_lock, flags);
 
-       cmd->vha->tgt_counters.qla_core_ret_ctio++;
+       cmd->qpair->tgt_counters.qla_core_ret_ctio++;
        if (!cmd->write_data_transferred) {
                /*
                 * Check if se_cmd has already been aborted via LUN_RESET, and
@@ -595,7 +594,7 @@ static int tcm_qla2xxx_dif_tags(struct qla_tgt_cmd *cmd,
 /*
  * Called from qla_target.c:qlt_issue_task_mgmt()
  */
-static int tcm_qla2xxx_handle_tmr(struct qla_tgt_mgmt_cmd *mcmd, uint32_t lun,
+static int tcm_qla2xxx_handle_tmr(struct qla_tgt_mgmt_cmd *mcmd, u64 lun,
        uint16_t tmr_func, uint32_t tag)
 {
        struct fc_port *sess = mcmd->sess;
@@ -686,6 +685,19 @@ static int tcm_qla2xxx_queue_status(struct se_cmd *se_cmd)
                                struct qla_tgt_cmd, se_cmd);
        int xmit_type = QLA_TGT_XMIT_STATUS;
 
+       if (cmd->aborted) {
+               /*
+                * Cmd can loop during Q-full. tcm_qla2xxx_aborted_task
+                * can get ahead of this cmd. tcm_qla2xxx_aborted_task
+                * already kick start the free.
+                */
+               pr_debug(
+                   "queue_data_in aborted cmd[%p] refcount %d transport_state %x, t_state %x, se_cmd_flags %x\n",
+                   cmd, kref_read(&cmd->se_cmd.cmd_kref),
+                   cmd->se_cmd.transport_state, cmd->se_cmd.t_state,
+                   cmd->se_cmd.se_cmd_flags);
+               return 0;
+       }
        cmd->bufflen = se_cmd->data_length;
        cmd->sg = NULL;
        cmd->sg_cnt = 0;
@@ -1870,9 +1882,9 @@ static ssize_t tcm_qla2xxx_wwn_version_show(struct config_item *item,
                char *page)
 {
        return sprintf(page,
-           "TCM QLOGIC QLA2XXX NPIV capable fabric module %s on %s/%s on "
-           UTS_RELEASE"\n", QLA2XXX_VERSION, utsname()->sysname,
-           utsname()->machine);
+           "TCM QLOGIC QLA2XXX NPIV capable fabric module %s on %s/%s on %s\n",
+           QLA2XXX_VERSION, utsname()->sysname,
+           utsname()->machine, utsname()->release);
 }
 
 CONFIGFS_ATTR_RO(tcm_qla2xxx_wwn_, version);
@@ -1976,9 +1988,9 @@ static int tcm_qla2xxx_register_configfs(void)
 {
        int ret;
 
-       pr_debug("TCM QLOGIC QLA2XXX fabric module %s on %s/%s on "
-           UTS_RELEASE"\n", QLA2XXX_VERSION, utsname()->sysname,
-           utsname()->machine);
+       pr_debug("TCM QLOGIC QLA2XXX fabric module %s on %s/%s on %s\n",
+           QLA2XXX_VERSION, utsname()->sysname,
+           utsname()->machine, utsname()->release);
 
        ret = target_register_template(&tcm_qla2xxx_ops);
        if (ret)