[SCSI] qla2xxx: Preserve an fcport's loop-id after terminate_rport_io().
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Tue, 24 Mar 2009 16:08:02 +0000 (09:08 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 3 Apr 2009 14:22:46 +0000 (09:22 -0500)
Since in some circumstances, login-retries may be occuring in the
background via the DPC routine.  This race, in the inadvertant
setting of the loop-id to 'NONE' breaks the existing retry logic.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/qla2xxx/qla_attr.c

index ee9d401..664d610 100644 (file)
@@ -1036,12 +1036,10 @@ qla2x00_terminate_rport_io(struct fc_rport *rport)
         * At this point all fcport's software-states are cleared.  Perform any
         * final cleanup of firmware resources (PCBs and XCBs).
         */
-       if (fcport->loop_id != FC_NO_LOOP_ID) {
+       if (fcport->loop_id != FC_NO_LOOP_ID)
                fcport->vha->hw->isp_ops->fabric_logout(fcport->vha,
                        fcport->loop_id, fcport->d_id.b.domain,
                        fcport->d_id.b.area, fcport->d_id.b.al_pa);
-               fcport->loop_id = FC_NO_LOOP_ID;
-       }
 
        qla2x00_abort_fcport_cmds(fcport);
 }