diff options
Diffstat (limited to 'drivers/s390/scsi')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index e697b1cb6d27..665fcb6ec5d5 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -1116,6 +1116,10 @@ zfcp_fsf_abort_fcp_command(unsigned long old_req_id, | |||
1116 | goto out; | 1116 | goto out; |
1117 | } | 1117 | } |
1118 | 1118 | ||
1119 | if (unlikely(!atomic_test_mask(ZFCP_STATUS_COMMON_UNBLOCKED, | ||
1120 | &unit->status))) | ||
1121 | goto unit_blocked; | ||
1122 | |||
1119 | sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0); | 1123 | sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0); |
1120 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1124 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1121 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1125 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
@@ -1131,22 +1135,13 @@ zfcp_fsf_abort_fcp_command(unsigned long old_req_id, | |||
1131 | 1135 | ||
1132 | zfcp_fsf_start_timer(fsf_req, ZFCP_SCSI_ER_TIMEOUT); | 1136 | zfcp_fsf_start_timer(fsf_req, ZFCP_SCSI_ER_TIMEOUT); |
1133 | retval = zfcp_fsf_req_send(fsf_req); | 1137 | retval = zfcp_fsf_req_send(fsf_req); |
1134 | if (retval) { | 1138 | if (!retval) |
1135 | ZFCP_LOG_INFO("error: Failed to send abort command request " | 1139 | goto out; |
1136 | "on adapter %s, port 0x%016Lx, unit 0x%016Lx\n", | 1140 | |
1137 | zfcp_get_busid_by_adapter(adapter), | 1141 | unit_blocked: |
1138 | unit->port->wwpn, unit->fcp_lun); | ||
1139 | zfcp_fsf_req_free(fsf_req); | 1142 | zfcp_fsf_req_free(fsf_req); |
1140 | fsf_req = NULL; | 1143 | fsf_req = NULL; |
1141 | goto out; | ||
1142 | } | ||
1143 | 1144 | ||
1144 | ZFCP_LOG_DEBUG("Abort FCP Command request initiated " | ||
1145 | "(adapter%s, port d_id=0x%06x, " | ||
1146 | "unit x%016Lx, old_req_id=0x%lx)\n", | ||
1147 | zfcp_get_busid_by_adapter(adapter), | ||
1148 | unit->port->d_id, | ||
1149 | unit->fcp_lun, old_req_id); | ||
1150 | out: | 1145 | out: |
1151 | write_unlock_irqrestore(&adapter->request_queue.queue_lock, lock_flags); | 1146 | write_unlock_irqrestore(&adapter->request_queue.queue_lock, lock_flags); |
1152 | return fsf_req; | 1147 | return fsf_req; |