]> err.no Git - linux-2.6/commitdiff
[SCSI] lpfc 8.1.11 : Adjust LOG_FCP logging
authorJames Smart <James.Smart@Emulex.Com>
Sat, 2 Dec 2006 18:34:42 +0000 (13:34 -0500)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Sun, 3 Dec 2006 15:29:57 +0000 (09:29 -0600)
Adjust LOG_FCP logging to be more meaningful.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_logmsg.h
drivers/scsi/lpfc/lpfc_scsi.c

index f05ef301130708da6cdbc1fccb678ad761a7ef29..73d3afc72de20c76e4389344555de122595d6709 100644 (file)
@@ -806,7 +806,7 @@ static CLASS_DEVICE_ATTR(lpfc_devloss_tmo, S_IRUGO | S_IWUSR,
 # LOG_NODE                      0x80       Node table events
 # LOG_MISC                      0x400      Miscellaneous events
 # LOG_SLI                       0x800      SLI events
-# LOG_CHK_COND                  0x1000     FCP Check condition flag
+# LOG_FCP_ERROR                 0x1000     Only log FCP errors
 # LOG_LIBDFC                    0x2000     LIBDFC events
 # LOG_ALL_MSG                   0xffff     LOG all messages
 */
index 62c8ca862e9ec2666decc907d26018a4f3dc83d8..438cbcd9eb136cf4a391ee49387ba3f8f38bea81 100644 (file)
@@ -28,7 +28,7 @@
 #define LOG_NODE                      0x80     /* Node table events */
 #define LOG_MISC                      0x400    /* Miscellaneous events */
 #define LOG_SLI                       0x800    /* SLI events */
-#define LOG_CHK_COND                  0x1000   /* FCP Check condition flag */
+#define LOG_FCP_ERROR                 0x1000   /* log errors, not underruns */
 #define LOG_LIBDFC                    0x2000   /* Libdfc events */
 #define LOG_ALL_MSG                   0xffff   /* LOG all messages */
 
index 97ae98dc95d04f9d13d55a2da8bbc8c51447f564..125179af470c197bba3a4adb1a754cee153b0217 100644 (file)
@@ -297,8 +297,10 @@ lpfc_handle_fcp_err(struct lpfc_scsi_buf *lpfc_cmd)
        uint32_t fcpi_parm = lpfc_cmd->cur_iocbq.iocb.un.fcpi.fcpi_parm;
        uint32_t resp_info = fcprsp->rspStatus2;
        uint32_t scsi_status = fcprsp->rspStatus3;
+       uint32_t *lp;
        uint32_t host_status = DID_OK;
        uint32_t rsplen = 0;
+       uint32_t logit = LOG_FCP | LOG_FCP_ERROR;
 
        /*
         *  If this is a task management command, there is no
@@ -310,10 +312,25 @@ lpfc_handle_fcp_err(struct lpfc_scsi_buf *lpfc_cmd)
                goto out;
        }
 
-       lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
-                       "%d:0730 FCP command failed: RSP "
-                       "Data: x%x x%x x%x x%x x%x x%x\n",
-                       phba->brd_no, resp_info, scsi_status,
+       if ((resp_info & SNS_LEN_VALID) && fcprsp->rspSnsLen) {
+               uint32_t snslen = be32_to_cpu(fcprsp->rspSnsLen);
+               if (snslen > SCSI_SENSE_BUFFERSIZE)
+                       snslen = SCSI_SENSE_BUFFERSIZE;
+
+               if (resp_info & RSP_LEN_VALID)
+                 rsplen = be32_to_cpu(fcprsp->rspRspLen);
+               memcpy(cmnd->sense_buffer, &fcprsp->rspInfo0 + rsplen, snslen);
+       }
+       lp = (uint32_t *)cmnd->sense_buffer;
+
+       if (!scsi_status && (resp_info & RESID_UNDER))
+               logit = LOG_FCP;
+
+       lpfc_printf_log(phba, KERN_WARNING, logit,
+                       "%d:0730 FCP command x%x failed: x%x SNS x%x x%x "
+                       "Data: x%x x%x x%x x%x x%x\n",
+                       phba->brd_no, cmnd->cmnd[0], scsi_status,
+                       be32_to_cpu(*lp), be32_to_cpu(*(lp + 3)), resp_info,
                        be32_to_cpu(fcprsp->rspResId),
                        be32_to_cpu(fcprsp->rspSnsLen),
                        be32_to_cpu(fcprsp->rspRspLen),
@@ -328,14 +345,6 @@ lpfc_handle_fcp_err(struct lpfc_scsi_buf *lpfc_cmd)
                }
        }
 
-       if ((resp_info & SNS_LEN_VALID) && fcprsp->rspSnsLen) {
-               uint32_t snslen = be32_to_cpu(fcprsp->rspSnsLen);
-               if (snslen > SCSI_SENSE_BUFFERSIZE)
-                       snslen = SCSI_SENSE_BUFFERSIZE;
-
-               memcpy(cmnd->sense_buffer, &fcprsp->rspInfo0 + rsplen, snslen);
-       }
-
        cmnd->resid = 0;
        if (resp_info & RESID_UNDER) {
                cmnd->resid = be32_to_cpu(fcprsp->rspResId);
@@ -378,7 +387,7 @@ lpfc_handle_fcp_err(struct lpfc_scsi_buf *lpfc_cmd)
         */
        } else if ((scsi_status == SAM_STAT_GOOD) && fcpi_parm &&
                        (cmnd->sc_data_direction == DMA_FROM_DEVICE)) {
-               lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
+               lpfc_printf_log(phba, KERN_WARNING, LOG_FCP | LOG_FCP_ERROR,
                        "%d:0734 FCP Read Check Error Data: "
                        "x%x x%x x%x x%x\n", phba->brd_no,
                        be32_to_cpu(fcpcmd->fcpDl),