]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: qla2xxx: Fix Inquiry command being dropped in Target mode
authorQuinn Tran <quinn.tran@cavium.com>
Tue, 1 May 2018 16:01:49 +0000 (09:01 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 May 2018 04:46:11 +0000 (00:46 -0400)
When a connection is established, the target core session may not be
created immediately. Current code will drop/terminate the command based
on the session state. This patch will return BUSY status for any
commands arriving on wire before the session is created.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_target.c

index 3e8bf728e884f84e456fc79f334ff82e4564a658..5e81b64c8ef5c992d75c28c675f821aff61494d2 100644 (file)
@@ -5140,10 +5140,15 @@ static int __qlt_send_busy(struct qla_qpair *qpair,
        struct fc_port *sess = NULL;
        unsigned long flags;
        u16 temp;
+       port_id_t id;
+
+       id.b.al_pa = atio->u.isp24.fcp_hdr.s_id[2];
+       id.b.area = atio->u.isp24.fcp_hdr.s_id[1];
+       id.b.domain = atio->u.isp24.fcp_hdr.s_id[0];
+       id.b.rsvd_1 = 0;
 
        spin_lock_irqsave(&ha->tgt.sess_lock, flags);
-       sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha,
-           atio->u.isp24.fcp_hdr.s_id);
+       sess = qla2x00_find_fcport_by_nportid(vha, &id, 1);
        spin_unlock_irqrestore(&ha->tgt.sess_lock, flags);
        if (!sess) {
                qlt_send_term_exchange(qpair, NULL, atio, 1, 0);