aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/scsi/zfcp_erp.c14
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: