[SCSI] zfcp: fix: mark fsf request failed when receiving unknown status qualifier
authorAndreas Herrmann <aherrman@de.ibm.com>
Mon, 13 Jun 2005 11:17:44 +0000 (13:17 +0200)
committerJames Bottomley <jejb@mulgrave.(none)>
Tue, 14 Jun 2005 02:29:14 +0000 (21:29 -0500)
From: Maxim Shchetynin <maxim@de.ibm.com>

Correct a bug in zfcp_fsf_send_fcp_command_handler.  An fsf request
was not marked as failed if an unknown status qualifier was returned.

Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/s390/scsi/zfcp_fsf.c

index 225e3631e8d2d29ad499d33bcc36d96111cd2262..bf66fc6d8a97d458f0bf7c58bf8e4cec491ec1c5 100644 (file)
@@ -3931,19 +3931,16 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req)
                        debug_text_event(fsf_req->adapter->erp_dbf, 1,
                                         "fsf_sq_ltest");
                        zfcp_test_link(unit->port);
-                       fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
                        break;
                case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED:
                        /* FIXME(hw) need proper specs for proper action */
                        /* let scsi stack deal with retries and escalation */
                        debug_text_event(fsf_req->adapter->erp_dbf, 1,
                                         "fsf_sq_ulp");
-                       fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
                        break;
                default:
-                       /* FIXME: shall we consider this a successful transfer? */
                        ZFCP_LOG_NORMAL
-                           ("bug: Wrong status qualifier 0x%x arrived.\n",
+                           ("Unknown status qualifier 0x%x arrived.\n",
                             header->fsf_status_qual.word[0]);
                        debug_text_event(fsf_req->adapter->erp_dbf, 0,
                                         "fsf_sq_inval:");
@@ -3952,6 +3949,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req)
                                        sizeof(u32));
                        break;
                }
+               fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
                break;
 
        case FSF_GOOD: