aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorAndreas Herrmann <aherrman@de.ibm.com>2005-06-13 07:16:27 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-06-13 22:28:17 -0400
commit65a8d4e1a3754f0bfaa62949ebe919930e3127a1 (patch)
treed1398c39556ece53c1ba5788d1f585a8673dd28d /drivers/s390
parent22753fa514aad02342e647ad13048caa282d9238 (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.c19
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: