]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
scsi: lpfc: Treat SCSI Write operation Underruns as an error
authorJames Smart <jsmart2021@gmail.com>
Tue, 30 Jan 2018 23:59:00 +0000 (15:59 -0800)
committerSeth Forshee <seth.forshee@canonical.com>
Fri, 16 Mar 2018 12:18:58 +0000 (07:18 -0500)
BugLink: http://bugs.launchpad.net/bugs/1752182
Currently, write underruns (mismatch of amount transferred vs scsi
status and its residual) detected by the adapter are not being flagged
as an error. Its expected the target controls the data transfer and
would appropriately set the RSP values.  Only read underruns are treated
as errors.

Revise the SCSI error handling to treat write underruns as an error as
well.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 45634a86ca6e98dbcaddb763f8e90ad243057789 linux-next)
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
drivers/scsi/lpfc/lpfc_scsi.c

index dcc86936e6fc4ceef46a44c754e1de430e899427..10c2dc0cf1fa6ae7ec41b3dd1acec19f414474f4 100644 (file)
@@ -3772,20 +3772,18 @@ lpfc_handle_fcp_err(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
                scsi_set_resid(cmnd, be32_to_cpu(fcprsp->rspResId));
 
                lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP_UNDER,
-                                "9025 FCP Read Underrun, expected %d, "
+                                "9025 FCP Underrun, expected %d, "
                                 "residual %d Data: x%x x%x x%x\n",
                                 fcpDl,
                                 scsi_get_resid(cmnd), fcpi_parm, cmnd->cmnd[0],
                                 cmnd->underflow);
 
                /*
-                * If there is an under run check if under run reported by
+                * If there is an under run, check if under run reported by
                 * storage array is same as the under run reported by HBA.
                 * If this is not same, there is a dropped frame.
                 */
-               if ((cmnd->sc_data_direction == DMA_FROM_DEVICE) &&
-                       fcpi_parm &&
-                       (scsi_get_resid(cmnd) != fcpi_parm)) {
+               if (fcpi_parm && (scsi_get_resid(cmnd) != fcpi_parm)) {
                        lpfc_printf_vlog(vport, KERN_WARNING,
                                         LOG_FCP | LOG_FCP_ERROR,
                                         "9026 FCP Read Check Error "