aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_target.c21
-rw-r--r--drivers/scsi/qla2xxx/tcm_qla2xxx.c4
2 files changed, 22 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index ad1dc14bacce..80f4b849e2b0 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -1264,8 +1264,27 @@ static int __qlt_24xx_handle_abts(struct scsi_qla_host *vha,
1264 struct abts_recv_from_24xx *abts, struct qla_tgt_sess *sess) 1264 struct abts_recv_from_24xx *abts, struct qla_tgt_sess *sess)
1265{ 1265{
1266 struct qla_hw_data *ha = vha->hw; 1266 struct qla_hw_data *ha = vha->hw;
1267 struct se_session *se_sess = sess->se_sess;
1267 struct qla_tgt_mgmt_cmd *mcmd; 1268 struct qla_tgt_mgmt_cmd *mcmd;
1269 struct se_cmd *se_cmd;
1270 u32 lun = 0;
1268 int rc; 1271 int rc;
1272 bool found_lun = false;
1273
1274 spin_lock(&se_sess->sess_cmd_lock);
1275 list_for_each_entry(se_cmd, &se_sess->sess_cmd_list, se_cmd_list) {
1276 struct qla_tgt_cmd *cmd =
1277 container_of(se_cmd, struct qla_tgt_cmd, se_cmd);
1278 if (cmd->tag == abts->exchange_addr_to_abort) {
1279 lun = cmd->unpacked_lun;
1280 found_lun = true;
1281 break;
1282 }
1283 }
1284 spin_unlock(&se_sess->sess_cmd_lock);
1285
1286 if (!found_lun)
1287 return -ENOENT;
1269 1288
1270 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00f, 1289 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00f,
1271 "qla_target(%d): task abort (tag=%d)\n", 1290 "qla_target(%d): task abort (tag=%d)\n",
@@ -1283,7 +1302,7 @@ static int __qlt_24xx_handle_abts(struct scsi_qla_host *vha,
1283 mcmd->sess = sess; 1302 mcmd->sess = sess;
1284 memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); 1303 memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts));
1285 1304
1286 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, 0, TMR_ABORT_TASK, 1305 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, lun, TMR_ABORT_TASK,
1287 abts->exchange_addr_to_abort); 1306 abts->exchange_addr_to_abort);
1288 if (rc != 0) { 1307 if (rc != 0) {
1289 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf052, 1308 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf052,
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index 4372e32bc95f..d182c96e17ea 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -620,8 +620,8 @@ static void tcm_qla2xxx_handle_data_work(struct work_struct *work)
620 return; 620 return;
621 } 621 }
622 622
623 cmd->se_cmd.scsi_sense_reason = TCM_CHECK_CONDITION_ABORT_CMD; 623 transport_generic_request_failure(&cmd->se_cmd,
624 transport_generic_request_failure(&cmd->se_cmd); 624 TCM_CHECK_CONDITION_ABORT_CMD);
625 return; 625 return;
626 } 626 }
627 627