From: Brian King <brking@linux.vnet.ibm.com>
Subject: ibmvfc: Ignore fabric RSCNs when link is dead
Git-commit: 5cdf162654123c53f14524bb23546f4d11bfde28
Patch-mainline: yes
References: bnc#788452

    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>
Acked-by: Torsten Duwe <duwe@suse.de>

 drivers/scsi/ibmvscsi/ibmvfc.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
index 4f73dac..5e8d51b 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
@@ -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:
