diff options
author | Andreas Herrmann <aherrman@de.ibm.com> | 2005-06-13 07:16:27 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-06-13 22:28:17 -0400 |
commit | 65a8d4e1a3754f0bfaa62949ebe919930e3127a1 (patch) | |
tree | d1398c39556ece53c1ba5788d1f585a8673dd28d /drivers/s390 | |
parent | 22753fa514aad02342e647ad13048caa282d9238 (diff) |
[SCSI] zfcp: fix: reopen port only if link-test fails
From: Maxim Shchetynin <maxim@de.ibm.com>
Reopen a remote port only if the link-test fails. This avoids that a
port is unnecessarily reopened.
Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 14aaab82dc96..225e3631e8d2 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -1267,8 +1267,7 @@ zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *new_fsf_req) | |||
1267 | case FSF_SQ_INVOKE_LINK_TEST_PROCEDURE: | 1267 | case FSF_SQ_INVOKE_LINK_TEST_PROCEDURE: |
1268 | debug_text_event(new_fsf_req->adapter->erp_dbf, 1, | 1268 | debug_text_event(new_fsf_req->adapter->erp_dbf, 1, |
1269 | "fsf_sq_ltest"); | 1269 | "fsf_sq_ltest"); |
1270 | /* reopening link to port */ | 1270 | zfcp_test_link(unit->port); |
1271 | zfcp_erp_port_reopen(unit->port, 0); | ||
1272 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1271 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1273 | break; | 1272 | break; |
1274 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: | 1273 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: |
@@ -3125,7 +3124,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
3125 | /* Re-establish link to port */ | 3124 | /* Re-establish link to port */ |
3126 | debug_text_event(adapter->erp_dbf, 1, | 3125 | debug_text_event(adapter->erp_dbf, 1, |
3127 | "fsf_sq_ltest"); | 3126 | "fsf_sq_ltest"); |
3128 | zfcp_erp_port_reopen(unit->port, 0); | 3127 | zfcp_test_link(unit->port); |
3129 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3128 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
3130 | break; | 3129 | break; |
3131 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: | 3130 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: |
@@ -3368,7 +3367,7 @@ zfcp_fsf_close_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
3368 | /* re-establish link to port */ | 3367 | /* re-establish link to port */ |
3369 | debug_text_event(fsf_req->adapter->erp_dbf, 1, | 3368 | debug_text_event(fsf_req->adapter->erp_dbf, 1, |
3370 | "fsf_sq_ltest"); | 3369 | "fsf_sq_ltest"); |
3371 | zfcp_erp_port_reopen(unit->port, 0); | 3370 | zfcp_test_link(unit->port); |
3372 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3371 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
3373 | break; | 3372 | break; |
3374 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: | 3373 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: |
@@ -3931,12 +3930,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
3931 | /* re-establish link to port */ | 3930 | /* re-establish link to port */ |
3932 | debug_text_event(fsf_req->adapter->erp_dbf, 1, | 3931 | debug_text_event(fsf_req->adapter->erp_dbf, 1, |
3933 | "fsf_sq_ltest"); | 3932 | "fsf_sq_ltest"); |
3934 | zfcp_erp_port_reopen(unit->port, 0); | 3933 | zfcp_test_link(unit->port); |
3935 | zfcp_cmd_dbf_event_fsf( | ||
3936 | "sqltest", | ||
3937 | fsf_req, | ||
3938 | &header->fsf_status_qual, | ||
3939 | sizeof (union fsf_status_qual)); | ||
3940 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3934 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
3941 | break; | 3935 | break; |
3942 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: | 3936 | case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED: |
@@ -3944,11 +3938,6 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
3944 | /* let scsi stack deal with retries and escalation */ | 3938 | /* let scsi stack deal with retries and escalation */ |
3945 | debug_text_event(fsf_req->adapter->erp_dbf, 1, | 3939 | debug_text_event(fsf_req->adapter->erp_dbf, 1, |
3946 | "fsf_sq_ulp"); | 3940 | "fsf_sq_ulp"); |
3947 | zfcp_cmd_dbf_event_fsf( | ||
3948 | "sqdeperp", | ||
3949 | fsf_req, | ||
3950 | &header->fsf_status_qual, | ||
3951 | sizeof (union fsf_status_qual)); | ||
3952 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3941 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
3953 | break; | 3942 | break; |
3954 | default: | 3943 | default: |