[SCSI] zfcp: Do not try "forced close" when port is already closed
authorChristof Schmitt <christof.schmitt@de.ibm.com>
Thu, 8 Jul 2010 07:53:06 +0000 (09:53 +0200)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 28 Jul 2010 14:46:36 +0000 (09:46 -0500)
When the port is already "physically closed" try the reopen instead.
There is no way to send a "physically close" to an already closed
port.

Reviewed-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/s390/scsi/zfcp_erp.c

index c663eb2..5a71b73 100644 (file)
@@ -141,9 +141,13 @@ static int zfcp_erp_required_act(int want, struct zfcp_adapter *adapter,
                if (!(p_status & ZFCP_STATUS_COMMON_UNBLOCKED))
                        need = ZFCP_ERP_ACTION_REOPEN_PORT;
                /* fall through */
-       case ZFCP_ERP_ACTION_REOPEN_PORT:
        case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
                p_status = atomic_read(&port->status);
+               if (!(p_status & ZFCP_STATUS_COMMON_OPEN))
+                       need = ZFCP_ERP_ACTION_REOPEN_PORT;
+               /* fall through */
+       case ZFCP_ERP_ACTION_REOPEN_PORT:
+               p_status = atomic_read(&port->status);
                if (p_status & ZFCP_STATUS_COMMON_ERP_INUSE)
                        return 0;
                a_status = atomic_read(&adapter->status);