|
@@ -156,6 +156,8 @@ static int zfcp_erp_required_act(int want, struct zfcp_adapter *adapter,
|
|
|
if (!(a_status & ZFCP_STATUS_COMMON_RUNNING) ||
|
|
|
a_status & ZFCP_STATUS_COMMON_ERP_FAILED)
|
|
|
return 0;
|
|
|
+ if (p_status & ZFCP_STATUS_COMMON_NOESC)
|
|
|
+ return need;
|
|
|
if (!(a_status & ZFCP_STATUS_COMMON_UNBLOCKED))
|
|
|
need = ZFCP_ERP_ACTION_REOPEN_ADAPTER;
|
|
|
/* fall through */
|
|
@@ -188,6 +190,9 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
|
|
|
atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE,
|
|
|
&zfcp_sdev->status);
|
|
|
erp_action = &zfcp_sdev->erp_action;
|
|
|
+ memset(erp_action, 0, sizeof(struct zfcp_erp_action));
|
|
|
+ erp_action->port = port;
|
|
|
+ erp_action->sdev = sdev;
|
|
|
if (!(atomic_read(&zfcp_sdev->status) &
|
|
|
ZFCP_STATUS_COMMON_RUNNING))
|
|
|
act_status |= ZFCP_STATUS_ERP_CLOSE_ONLY;
|
|
@@ -200,6 +205,8 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
|
|
|
zfcp_erp_action_dismiss_port(port);
|
|
|
atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &port->status);
|
|
|
erp_action = &port->erp_action;
|
|
|
+ memset(erp_action, 0, sizeof(struct zfcp_erp_action));
|
|
|
+ erp_action->port = port;
|
|
|
if (!(atomic_read(&port->status) & ZFCP_STATUS_COMMON_RUNNING))
|
|
|
act_status |= ZFCP_STATUS_ERP_CLOSE_ONLY;
|
|
|
break;
|
|
@@ -209,6 +216,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
|
|
|
zfcp_erp_action_dismiss_adapter(adapter);
|
|
|
atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &adapter->status);
|
|
|
erp_action = &adapter->erp_action;
|
|
|
+ memset(erp_action, 0, sizeof(struct zfcp_erp_action));
|
|
|
if (!(atomic_read(&adapter->status) &
|
|
|
ZFCP_STATUS_COMMON_RUNNING))
|
|
|
act_status |= ZFCP_STATUS_ERP_CLOSE_ONLY;
|
|
@@ -218,10 +226,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- memset(erp_action, 0, sizeof(struct zfcp_erp_action));
|
|
|
erp_action->adapter = adapter;
|
|
|
- erp_action->port = port;
|
|
|
- erp_action->sdev = sdev;
|
|
|
erp_action->action = need;
|
|
|
erp_action->status = act_status;
|
|
|
|