aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_scsi.c
diff options
context:
space:
mode:
authorAndreas Herrmann <aherrman@de.ibm.com>2006-09-18 16:30:36 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-09-23 19:01:46 -0400
commit8165428610446ea9e6aa9dfa5485ab78e58cc9fc (patch)
treec410ad0f802abd86461a04ea7a4f552447e3ed03 /drivers/s390/scsi/zfcp_scsi.c
parent2abbe866c8eb0296e3f5343bcf73e5371522a738 (diff)
[SCSI] zfcp: fix: avoid removal of fsf reqs before qdio queues are down
Fix the fix ... One of my previous fixes introduced removal of all fsf requests in zfcp's eh_host_reset_handler. But this must not happen before qdio queues are shut down. So, I revert the changes of zfcp_scsi_eh_host_reset_handler. Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/s390/scsi/zfcp_scsi.c')
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index 753bb9b2fe74..7cafa34e4c7f 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -544,7 +544,6 @@ int zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt)
544{ 544{
545 struct zfcp_unit *unit; 545 struct zfcp_unit *unit;
546 struct zfcp_adapter *adapter; 546 struct zfcp_adapter *adapter;
547 unsigned long flags;
548 547
549 unit = (struct zfcp_unit*) scpnt->device->hostdata; 548 unit = (struct zfcp_unit*) scpnt->device->hostdata;
550 adapter = unit->port->adapter; 549 adapter = unit->port->adapter;
@@ -552,22 +551,8 @@ int zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt)
552 ZFCP_LOG_NORMAL("host/bus reset because of problems with " 551 ZFCP_LOG_NORMAL("host/bus reset because of problems with "
553 "unit 0x%016Lx\n", unit->fcp_lun); 552 "unit 0x%016Lx\n", unit->fcp_lun);
554 553
555 write_lock_irqsave(&adapter->erp_lock, flags); 554 zfcp_erp_adapter_reopen(adapter, 0);
556 if (atomic_test_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING, 555 zfcp_erp_wait(adapter);
557 &adapter->status)) {
558 zfcp_erp_modify_adapter_status(adapter,
559 ZFCP_STATUS_COMMON_UNBLOCKED|ZFCP_STATUS_COMMON_OPEN,
560 ZFCP_CLEAR);
561 zfcp_erp_action_dismiss_adapter(adapter);
562 write_unlock_irqrestore(&adapter->erp_lock, flags);
563 zfcp_fsf_req_dismiss_all(adapter);
564 adapter->fsf_req_seq_no = 0;
565 zfcp_erp_adapter_reopen(adapter, 0);
566 } else {
567 write_unlock_irqrestore(&adapter->erp_lock, flags);
568 zfcp_erp_adapter_reopen(adapter, 0);
569 zfcp_erp_wait(adapter);
570 }
571 556
572 return SUCCESS; 557 return SUCCESS;
573} 558}