Message ID | 1434102153-38581-16-git-send-email-Sreekanth.Reddy@avagotech.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Jun 12, 2015 at 03:12:27PM +0530, Sreekanth Reddy wrote: > scsi_dma_map API will return a negative value (i.e. -ENOMEM) > if DMA mapping of sg lists fails and zero if the sg list in the > SCSI cmd is NULL. But drivers doesn't handled sg list DMA mapping > failure case properly. > > So, Updated the code to return host busy error status to SCSI MID Layer(SML), > when DMA mapping of scatter gather list fails for a SCSI command. > So that SML will retry this SCSI cmd after some time. > > Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com> > --- > drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c > index 267e489..0b26c8d 100644 > --- a/drivers/scsi/mpt3sas/mpt3sas_base.c > +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c > @@ -1345,7 +1345,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc, > > sg_scmd = scsi_sglist(scmd); > sges_left = scsi_dma_map(scmd); > - if (!sges_left) { > + if (!sges_left < 0) { > sdev_printk(KERN_ERR, scmd->device, > "pci_map_sg failed: request for %d bytes!\n", > scsi_bufflen(scmd)); > @@ -1414,7 +1414,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc, > fill_in_last_segment: > > /* fill the last segment */ > - while (sges_left) { > + while (sges_left > 0) { > if (sges_left == 1) > _base_add_sg_single_ieee(sg_local, > simple_sgl_flags_last, 0, sg_dma_len(sg_scmd), > -- > 2.0.2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
>>>>> Sreekanth Reddy <sreekanth.reddy@avagotech.com> writes: > scsi_dma_map API will return a negative value (i.e. -ENOMEM) if DMA > mapping of sg lists fails and zero if the sg list in the SCSI cmd is > NULL. But drivers doesn't handled sg list DMA mapping failure case > properly. Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 267e489..0b26c8d 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -1345,7 +1345,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc, sg_scmd = scsi_sglist(scmd); sges_left = scsi_dma_map(scmd); - if (!sges_left) { + if (!sges_left < 0) { sdev_printk(KERN_ERR, scmd->device, "pci_map_sg failed: request for %d bytes!\n", scsi_bufflen(scmd)); @@ -1414,7 +1414,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc, fill_in_last_segment: /* fill the last segment */ - while (sges_left) { + while (sges_left > 0) { if (sges_left == 1) _base_add_sg_single_ieee(sg_local, simple_sgl_flags_last, 0, sg_dma_len(sg_scmd),
scsi_dma_map API will return a negative value (i.e. -ENOMEM) if DMA mapping of sg lists fails and zero if the sg list in the SCSI cmd is NULL. But drivers doesn't handled sg list DMA mapping failure case properly. So, Updated the code to return host busy error status to SCSI MID Layer(SML), when DMA mapping of scatter gather list fails for a SCSI command. So that SML will retry this SCSI cmd after some time. Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com> --- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)