diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_erp.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 8ec8da0beaa8..f74412bd9d6a 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -848,18 +848,16 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action) | |||
848 | struct zfcp_adapter *adapter = erp_action->adapter; | 848 | struct zfcp_adapter *adapter = erp_action->adapter; |
849 | 849 | ||
850 | if (erp_action->fsf_req) { | 850 | if (erp_action->fsf_req) { |
851 | /* take lock to ensure that request is not being deleted meanwhile */ | 851 | /* take lock to ensure that request is not deleted meanwhile */ |
852 | spin_lock(&adapter->fsf_req_list_lock); | 852 | spin_lock(&adapter->req_list_lock); |
853 | /* check whether fsf req does still exist */ | 853 | if ((!zfcp_reqlist_ismember(adapter, |
854 | list_for_each_entry(fsf_req, &adapter->fsf_req_list_head, list) | 854 | erp_action->fsf_req->req_id)) && |
855 | if (fsf_req == erp_action->fsf_req) | 855 | (fsf_req->erp_action == erp_action)) { |
856 | break; | ||
857 | if (fsf_req && (fsf_req->erp_action == erp_action)) { | ||
858 | /* fsf_req still exists */ | 856 | /* fsf_req still exists */ |
859 | debug_text_event(adapter->erp_dbf, 3, "a_ca_req"); | 857 | debug_text_event(adapter->erp_dbf, 3, "a_ca_req"); |
860 | debug_event(adapter->erp_dbf, 3, &fsf_req, | 858 | debug_event(adapter->erp_dbf, 3, &fsf_req, |
861 | sizeof (unsigned long)); | 859 | sizeof (unsigned long)); |
862 | /* dismiss fsf_req of timed out or dismissed erp_action */ | 860 | /* dismiss fsf_req of timed out/dismissed erp_action */ |
863 | if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED | | 861 | if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED | |
864 | ZFCP_STATUS_ERP_TIMEDOUT)) { | 862 | ZFCP_STATUS_ERP_TIMEDOUT)) { |
865 | debug_text_event(adapter->erp_dbf, 3, | 863 | debug_text_event(adapter->erp_dbf, 3, |
@@ -892,7 +890,7 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action) | |||
892 | */ | 890 | */ |
893 | erp_action->fsf_req = NULL; | 891 | erp_action->fsf_req = NULL; |
894 | } | 892 | } |
895 | spin_unlock(&adapter->fsf_req_list_lock); | 893 | spin_unlock(&adapter->req_list_lock); |
896 | } else | 894 | } else |
897 | debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq"); | 895 | debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq"); |
898 | 896 | ||