diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_erp.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 07fa824d179f..4f86c0e12961 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -131,7 +131,7 @@ static void zfcp_close_qdio(struct zfcp_adapter *adapter) | |||
131 | debug_text_event(adapter->erp_dbf, 3, "qdio_down2a"); | 131 | debug_text_event(adapter->erp_dbf, 3, "qdio_down2a"); |
132 | while (qdio_shutdown(adapter->ccw_device, | 132 | while (qdio_shutdown(adapter->ccw_device, |
133 | QDIO_FLAG_CLEANUP_USING_CLEAR) == -EINPROGRESS) | 133 | QDIO_FLAG_CLEANUP_USING_CLEAR) == -EINPROGRESS) |
134 | msleep(1000); | 134 | ssleep(1); |
135 | debug_text_event(adapter->erp_dbf, 3, "qdio_down2b"); | 135 | debug_text_event(adapter->erp_dbf, 3, "qdio_down2b"); |
136 | 136 | ||
137 | /* cleanup used outbound sbals */ | 137 | /* cleanup used outbound sbals */ |
@@ -456,7 +456,7 @@ zfcp_test_link(struct zfcp_port *port) | |||
456 | 456 | ||
457 | zfcp_port_get(port); | 457 | zfcp_port_get(port); |
458 | retval = zfcp_erp_adisc(port); | 458 | retval = zfcp_erp_adisc(port); |
459 | if (retval != 0) { | 459 | if (retval != 0 && retval != -EBUSY) { |
460 | zfcp_port_put(port); | 460 | zfcp_port_put(port); |
461 | ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx " | 461 | ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx " |
462 | "on adapter %s\n ", port->wwpn, | 462 | "on adapter %s\n ", port->wwpn, |
@@ -846,7 +846,8 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action) | |||
846 | if (erp_action->fsf_req) { | 846 | if (erp_action->fsf_req) { |
847 | /* take lock to ensure that request is not deleted meanwhile */ | 847 | /* take lock to ensure that request is not deleted meanwhile */ |
848 | spin_lock(&adapter->req_list_lock); | 848 | spin_lock(&adapter->req_list_lock); |
849 | if (zfcp_reqlist_find(adapter, erp_action->fsf_req->req_id)) { | 849 | if (zfcp_reqlist_find_safe(adapter, erp_action->fsf_req) && |
850 | erp_action->fsf_req->erp_action == erp_action) { | ||
850 | /* fsf_req still exists */ | 851 | /* fsf_req still exists */ |
851 | debug_text_event(adapter->erp_dbf, 3, "a_ca_req"); | 852 | debug_text_event(adapter->erp_dbf, 3, "a_ca_req"); |
852 | debug_event(adapter->erp_dbf, 3, &erp_action->fsf_req, | 853 | debug_event(adapter->erp_dbf, 3, &erp_action->fsf_req, |
@@ -1609,7 +1610,6 @@ static void zfcp_erp_scsi_scan(struct work_struct *work) | |||
1609 | scsi_scan_target(&rport->dev, 0, rport->scsi_target_id, | 1610 | scsi_scan_target(&rport->dev, 0, rport->scsi_target_id, |
1610 | unit->scsi_lun, 0); | 1611 | unit->scsi_lun, 0); |
1611 | atomic_clear_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status); | 1612 | atomic_clear_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status); |
1612 | wake_up(&unit->scsi_scan_wq); | ||
1613 | zfcp_unit_put(unit); | 1613 | zfcp_unit_put(unit); |
1614 | kfree(p); | 1614 | kfree(p); |
1615 | } | 1615 | } |
@@ -1900,7 +1900,7 @@ zfcp_erp_adapter_strategy(struct zfcp_erp_action *erp_action) | |||
1900 | ZFCP_LOG_INFO("Waiting to allow the adapter %s " | 1900 | ZFCP_LOG_INFO("Waiting to allow the adapter %s " |
1901 | "to recover itself\n", | 1901 | "to recover itself\n", |
1902 | zfcp_get_busid_by_adapter(adapter)); | 1902 | zfcp_get_busid_by_adapter(adapter)); |
1903 | msleep(jiffies_to_msecs(ZFCP_TYPE2_RECOVERY_TIME)); | 1903 | ssleep(ZFCP_TYPE2_RECOVERY_TIME); |
1904 | } | 1904 | } |
1905 | 1905 | ||
1906 | return retval; | 1906 | return retval; |
@@ -2080,7 +2080,7 @@ zfcp_erp_adapter_strategy_open_qdio(struct zfcp_erp_action *erp_action) | |||
2080 | debug_text_event(adapter->erp_dbf, 3, "qdio_down1a"); | 2080 | debug_text_event(adapter->erp_dbf, 3, "qdio_down1a"); |
2081 | while (qdio_shutdown(adapter->ccw_device, | 2081 | while (qdio_shutdown(adapter->ccw_device, |
2082 | QDIO_FLAG_CLEANUP_USING_CLEAR) == -EINPROGRESS) | 2082 | QDIO_FLAG_CLEANUP_USING_CLEAR) == -EINPROGRESS) |
2083 | msleep(1000); | 2083 | ssleep(1); |
2084 | debug_text_event(adapter->erp_dbf, 3, "qdio_down1b"); | 2084 | debug_text_event(adapter->erp_dbf, 3, "qdio_down1b"); |
2085 | 2085 | ||
2086 | failed_qdio_establish: | 2086 | failed_qdio_establish: |
@@ -2165,7 +2165,7 @@ zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action) | |||
2165 | ZFCP_LOG_DEBUG("host connection still initialising... " | 2165 | ZFCP_LOG_DEBUG("host connection still initialising... " |
2166 | "waiting and retrying...\n"); | 2166 | "waiting and retrying...\n"); |
2167 | /* sleep a little bit before retry */ | 2167 | /* sleep a little bit before retry */ |
2168 | msleep(jiffies_to_msecs(sleep)); | 2168 | ssleep(sleep); |
2169 | sleep *= 2; | 2169 | sleep *= 2; |
2170 | } | 2170 | } |
2171 | 2171 | ||