|
@@ -841,29 +841,27 @@ zfcp_erp_action_exists(struct zfcp_erp_action *erp_action)
|
|
*
|
|
*
|
|
* returns: 0
|
|
* returns: 0
|
|
*/
|
|
*/
|
|
-static int
|
|
|
|
|
|
+static void
|
|
zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|
zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|
{
|
|
{
|
|
- int retval = 0;
|
|
|
|
- struct zfcp_fsf_req *fsf_req = NULL;
|
|
|
|
struct zfcp_adapter *adapter = erp_action->adapter;
|
|
struct zfcp_adapter *adapter = erp_action->adapter;
|
|
|
|
|
|
if (erp_action->fsf_req) {
|
|
if (erp_action->fsf_req) {
|
|
/* take lock to ensure that request is not deleted meanwhile */
|
|
/* take lock to ensure that request is not deleted meanwhile */
|
|
spin_lock(&adapter->req_list_lock);
|
|
spin_lock(&adapter->req_list_lock);
|
|
- if ((!zfcp_reqlist_ismember(adapter,
|
|
|
|
- erp_action->fsf_req->req_id)) &&
|
|
|
|
- (fsf_req->erp_action == erp_action)) {
|
|
|
|
|
|
+ if (zfcp_reqlist_ismember(adapter,
|
|
|
|
+ erp_action->fsf_req->req_id)) {
|
|
/* fsf_req still exists */
|
|
/* fsf_req still exists */
|
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_req");
|
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_req");
|
|
- debug_event(adapter->erp_dbf, 3, &fsf_req,
|
|
|
|
|
|
+ debug_event(adapter->erp_dbf, 3, &erp_action->fsf_req,
|
|
sizeof (unsigned long));
|
|
sizeof (unsigned long));
|
|
/* dismiss fsf_req of timed out/dismissed erp_action */
|
|
/* dismiss fsf_req of timed out/dismissed erp_action */
|
|
if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED |
|
|
if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED |
|
|
ZFCP_STATUS_ERP_TIMEDOUT)) {
|
|
ZFCP_STATUS_ERP_TIMEDOUT)) {
|
|
debug_text_event(adapter->erp_dbf, 3,
|
|
debug_text_event(adapter->erp_dbf, 3,
|
|
"a_ca_disreq");
|
|
"a_ca_disreq");
|
|
- fsf_req->status |= ZFCP_STATUS_FSFREQ_DISMISSED;
|
|
|
|
|
|
+ erp_action->fsf_req->status |=
|
|
|
|
+ ZFCP_STATUS_FSFREQ_DISMISSED;
|
|
}
|
|
}
|
|
if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
|
|
if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
|
|
ZFCP_LOG_NORMAL("error: erp step timed out "
|
|
ZFCP_LOG_NORMAL("error: erp step timed out "
|
|
@@ -876,11 +874,11 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|
* then keep it running asynchronously and don't mess
|
|
* then keep it running asynchronously and don't mess
|
|
* with the association of erp_action and fsf_req.
|
|
* with the association of erp_action and fsf_req.
|
|
*/
|
|
*/
|
|
- if (fsf_req->status & (ZFCP_STATUS_FSFREQ_COMPLETED |
|
|
|
|
|
|
+ if (erp_action->fsf_req->status &
|
|
|
|
+ (ZFCP_STATUS_FSFREQ_COMPLETED |
|
|
ZFCP_STATUS_FSFREQ_DISMISSED)) {
|
|
ZFCP_STATUS_FSFREQ_DISMISSED)) {
|
|
/* forget about association between fsf_req
|
|
/* forget about association between fsf_req
|
|
and erp_action */
|
|
and erp_action */
|
|
- fsf_req->erp_action = NULL;
|
|
|
|
erp_action->fsf_req = NULL;
|
|
erp_action->fsf_req = NULL;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
@@ -894,8 +892,6 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|
spin_unlock(&adapter->req_list_lock);
|
|
spin_unlock(&adapter->req_list_lock);
|
|
} else
|
|
} else
|
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq");
|
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq");
|
|
-
|
|
|
|
- return retval;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|