[SCSI] ibmvfc: Ignore fabric RSCNs when link is dead
authorBrian King <brking@linux.vnet.ibm.com>
Fri, 24 Aug 2012 21:51:01 +0000 (16:51 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 24 Sep 2012 08:10:59 +0000 (12:10 +0400)
This fixes an issues seen where a Fabric RSCN event was received
while the link was down, which resulted in repeated attempts to log back
into the fabric, which then failed, resulting in the ibmvfc driver
taking the host offline. Fix this by delaying taking any action
regarding the fabric RSCN until the link comes back up.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/ibmvscsi/ibmvfc.c

index 4f73daccc9f1849e28bb75a369accbbad27e9d77..5e8d51bd03de92222874321ec874559b9a91ec83 100644 (file)
@@ -2625,8 +2625,10 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
        case IBMVFC_AE_SCN_FABRIC:
        case IBMVFC_AE_SCN_DOMAIN:
                vhost->events_to_log |= IBMVFC_AE_RSCN;
-               vhost->delay_init = 1;
-               __ibmvfc_reset_host(vhost);
+               if (vhost->state < IBMVFC_HALTED) {
+                       vhost->delay_init = 1;
+                       __ibmvfc_reset_host(vhost);
+               }
                break;
        case IBMVFC_AE_SCN_NPORT:
        case IBMVFC_AE_SCN_GROUP: