Skip to content

Commit

Permalink
scsi: mpt3sas: Rate-limit scsi_dma_map() error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
donald authored and pmenzel committed Jul 19, 2023
1 parent 6d44c56 commit fc1d313
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions drivers/scsi/mpt3sas/mpt3sas_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ enum mpt3sas_perf_mode {
MPT_PERF_MODE_LATENCY = 2,
};


static DEFINE_RATELIMIT_STATE(dma_map_failed_warning_rlstate, (60 * 60 * HZ), 4); /* max 4 per hour */

static int
_base_wait_on_iocstate(struct MPT3SAS_ADAPTER *ioc,
u32 ioc_state, int timeout);
Expand Down Expand Up @@ -2595,9 +2598,10 @@ _base_check_pcie_native_sgl(struct MPT3SAS_ADAPTER *ioc,
/* Get the SG list pointer and info. */
sges_left = scsi_dma_map(scmd);
if (sges_left < 0) {
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed: request for %d bytes!\n",
scsi_bufflen(scmd));
if (__ratelimit(&dma_map_failed_warning_rlstate))
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed in _base_check_pcie_native_sgl: request for %d bytes!\n",
scsi_bufflen(scmd));
return 1;
}

Expand Down Expand Up @@ -2707,10 +2711,11 @@ _base_build_sg_scmd(struct MPT3SAS_ADAPTER *ioc,
sg_scmd = scsi_sglist(scmd);
sges_left = scsi_dma_map(scmd);
if (sges_left < 0) {
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed: request for %d bytes!\n",
scsi_bufflen(scmd));
return -ENOMEM;
if (__ratelimit(&dma_map_failed_warning_rlstate))
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed in _base_build_sg_scmd: request for %d bytes!\n",
scsi_bufflen(scmd));
return -ENOMEM;
}

sg_local = &mpi_request->SGL;
Expand Down Expand Up @@ -2855,9 +2860,10 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc,
sg_scmd = scsi_sglist(scmd);
sges_left = scsi_dma_map(scmd);
if (sges_left < 0) {
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed: request for %d bytes!\n",
scsi_bufflen(scmd));
if (__ratelimit(&dma_map_failed_warning_rlstate))
sdev_printk(KERN_ERR, scmd->device,
"scsi_dma_map failed in _base_build_sg_scmd_ieee: request for %d bytes!\n",
scsi_bufflen(scmd));
return -ENOMEM;
}

Expand Down

0 comments on commit fc1d313

Please sign in to comment.