diff options
Diffstat (limited to 'drivers/s390/scsi')
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index ad5b481ddafa..07fa824d179f 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -1065,7 +1065,7 @@ zfcp_erp_thread(void *data) | |||
1065 | &adapter->status)) { | 1065 | &adapter->status)) { |
1066 | 1066 | ||
1067 | write_lock_irqsave(&adapter->erp_lock, flags); | 1067 | write_lock_irqsave(&adapter->erp_lock, flags); |
1068 | next = adapter->erp_ready_head.prev; | 1068 | next = adapter->erp_ready_head.next; |
1069 | write_unlock_irqrestore(&adapter->erp_lock, flags); | 1069 | write_unlock_irqrestore(&adapter->erp_lock, flags); |
1070 | 1070 | ||
1071 | if (next != &adapter->erp_ready_head) { | 1071 | if (next != &adapter->erp_ready_head) { |
@@ -1155,15 +1155,13 @@ zfcp_erp_strategy(struct zfcp_erp_action *erp_action) | |||
1155 | 1155 | ||
1156 | /* | 1156 | /* |
1157 | * check for dismissed status again to avoid follow-up actions, | 1157 | * check for dismissed status again to avoid follow-up actions, |
1158 | * failing of targets and so on for dismissed actions | 1158 | * failing of targets and so on for dismissed actions, |
1159 | * we go through down() here because there has been an up() | ||
1159 | */ | 1160 | */ |
1160 | retval = zfcp_erp_strategy_check_action(erp_action, retval); | 1161 | if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED) |
1162 | retval = ZFCP_ERP_CONTINUES; | ||
1161 | 1163 | ||
1162 | switch (retval) { | 1164 | switch (retval) { |
1163 | case ZFCP_ERP_DISMISSED: | ||
1164 | /* leave since this action has ridden to its ancestors */ | ||
1165 | debug_text_event(adapter->erp_dbf, 6, "a_st_dis2"); | ||
1166 | goto unlock; | ||
1167 | case ZFCP_ERP_NOMEM: | 1165 | case ZFCP_ERP_NOMEM: |
1168 | /* no memory to continue immediately, let it sleep */ | 1166 | /* no memory to continue immediately, let it sleep */ |
1169 | if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) { | 1167 | if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) { |
@@ -3091,7 +3089,7 @@ zfcp_erp_action_enqueue(int action, | |||
3091 | ++adapter->erp_total_count; | 3089 | ++adapter->erp_total_count; |
3092 | 3090 | ||
3093 | /* finally put it into 'ready' queue and kick erp thread */ | 3091 | /* finally put it into 'ready' queue and kick erp thread */ |
3094 | list_add(&erp_action->list, &adapter->erp_ready_head); | 3092 | list_add_tail(&erp_action->list, &adapter->erp_ready_head); |
3095 | up(&adapter->erp_ready_sem); | 3093 | up(&adapter->erp_ready_sem); |
3096 | retval = 0; | 3094 | retval = 0; |
3097 | out: | 3095 | out: |