aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-03 11:20:11 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-03 11:20:11 -0500
commit26145f7e7ebc8a5f1b29425d6da62e872031be4a (patch)
treed06d4418c6db3683fb06d9035baa8a50c3a5311f /drivers/s390
parent8002cedc1adbf51e2d56091534ef7551b88329b4 (diff)
parent1e641664301744f0d381de43ae1e12343e60b479 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage [SCSI] zfcp: fix cleanup of dismissed error recovery actions [SCSI] zfcp: fix dismissal of error recovery actions [SCSI] qla1280: convert to use the data buffer accessors [SCSI] iscsi: return data transfer residual for data-out commands [SCSI] iscsi_tcp: fix potential lockup with write commands [SCSI] aacraid: fix security weakness [SCSI] aacraid: fix up le32 issues in BlinkLED [SCSI] aacraid: fix potential panic in thread stop [SCSI] aacraid: don't assign cpu_to_le32(constant) to u8
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/scsi/zfcp_erp.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 5552b755c08a..07fa824d179f 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -977,7 +977,9 @@ static void zfcp_erp_action_dismiss(struct zfcp_erp_action *erp_action)
977 debug_text_event(adapter->erp_dbf, 2, "a_adis"); 977 debug_text_event(adapter->erp_dbf, 2, "a_adis");
978 debug_event(adapter->erp_dbf, 2, &erp_action->action, sizeof (int)); 978 debug_event(adapter->erp_dbf, 2, &erp_action->action, sizeof (int));
979 979
980 zfcp_erp_async_handler_nolock(erp_action, ZFCP_STATUS_ERP_DISMISSED); 980 erp_action->status |= ZFCP_STATUS_ERP_DISMISSED;
981 if (zfcp_erp_action_exists(erp_action) == ZFCP_ERP_ACTION_RUNNING)
982 zfcp_erp_action_ready(erp_action);
981} 983}
982 984
983int 985int
@@ -1063,7 +1065,7 @@ zfcp_erp_thread(void *data)
1063 &adapter->status)) { 1065 &adapter->status)) {
1064 1066
1065 write_lock_irqsave(&adapter->erp_lock, flags); 1067 write_lock_irqsave(&adapter->erp_lock, flags);
1066 next = adapter->erp_ready_head.prev; 1068 next = adapter->erp_ready_head.next;
1067 write_unlock_irqrestore(&adapter->erp_lock, flags); 1069 write_unlock_irqrestore(&adapter->erp_lock, flags);
1068 1070
1069 if (next != &adapter->erp_ready_head) { 1071 if (next != &adapter->erp_ready_head) {
@@ -1153,15 +1155,13 @@ zfcp_erp_strategy(struct zfcp_erp_action *erp_action)
1153 1155
1154 /* 1156 /*
1155 * check for dismissed status again to avoid follow-up actions, 1157 * check for dismissed status again to avoid follow-up actions,
1156 * 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()
1157 */ 1160 */
1158 retval = zfcp_erp_strategy_check_action(erp_action, retval); 1161 if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED)
1162 retval = ZFCP_ERP_CONTINUES;
1159 1163
1160 switch (retval) { 1164 switch (retval) {
1161 case ZFCP_ERP_DISMISSED:
1162 /* leave since this action has ridden to its ancestors */
1163 debug_text_event(adapter->erp_dbf, 6, "a_st_dis2");
1164 goto unlock;
1165 case ZFCP_ERP_NOMEM: 1165 case ZFCP_ERP_NOMEM:
1166 /* no memory to continue immediately, let it sleep */ 1166 /* no memory to continue immediately, let it sleep */
1167 if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) { 1167 if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) {
@@ -3089,7 +3089,7 @@ zfcp_erp_action_enqueue(int action,
3089 ++adapter->erp_total_count; 3089 ++adapter->erp_total_count;
3090 3090
3091 /* finally put it into 'ready' queue and kick erp thread */ 3091 /* finally put it into 'ready' queue and kick erp thread */
3092 list_add(&erp_action->list, &adapter->erp_ready_head); 3092 list_add_tail(&erp_action->list, &adapter->erp_ready_head);
3093 up(&adapter->erp_ready_sem); 3093 up(&adapter->erp_ready_sem);
3094 retval = 0; 3094 retval = 0;
3095 out: 3095 out: