aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorSreekanth Reddy <sreekanth.reddy@avagotech.com>2015-06-30 02:55:01 -0400
committerJames Bottomley <JBottomley@Odin.com>2015-08-27 14:08:29 -0400
commit62f5c74c97037c7c00fdefb69dcfe39810c34a05 (patch)
tree351b71bdc4de480c0725fed9a6be13822b7e3061 /drivers/scsi
parent3898f08e8ccfc8b7b4c297960ecdde970869e950 (diff)
mpt3sas: Return host busy error status to SML when DMA mapping of scatter gather list fails for a SCSI command
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> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/mpt3sas/mpt3sas_base.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 3c8561cb6d84..d4d4e6c0b956 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -1360,7 +1360,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc,
1360 1360
1361 sg_scmd = scsi_sglist(scmd); 1361 sg_scmd = scsi_sglist(scmd);
1362 sges_left = scsi_dma_map(scmd); 1362 sges_left = scsi_dma_map(scmd);
1363 if (!sges_left) { 1363 if (sges_left < 0) {
1364 sdev_printk(KERN_ERR, scmd->device, 1364 sdev_printk(KERN_ERR, scmd->device,
1365 "pci_map_sg failed: request for %d bytes!\n", 1365 "pci_map_sg failed: request for %d bytes!\n",
1366 scsi_bufflen(scmd)); 1366 scsi_bufflen(scmd));
@@ -1429,7 +1429,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc,
1429 fill_in_last_segment: 1429 fill_in_last_segment:
1430 1430
1431 /* fill the last segment */ 1431 /* fill the last segment */
1432 while (sges_left) { 1432 while (sges_left > 0) {
1433 if (sges_left == 1) 1433 if (sges_left == 1)
1434 _base_add_sg_single_ieee(sg_local, 1434 _base_add_sg_single_ieee(sg_local,
1435 simple_sgl_flags_last, 0, sg_dma_len(sg_scmd), 1435 simple_sgl_flags_last, 0, sg_dma_len(sg_scmd),