Re: [v3.10.y][v3.11.y][v3.12.y][v3.13.y][v3.14.y][PATCH 1/1][V2] ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined

From: Ben Hutchings
Date: Wed Jun 18 2014 - 21:52:57 EST


On Wed, 2014-06-18 at 14:32 -0400, Joseph Salisbury wrote:
> From: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
>
> BugLink: http://bugs.launchpad.net/bugs/1319457
>
> This (widely used) construction:
>
> if(printk_ratelimit())
> dev_dbg()
>
> Causes the ratelimiting to spam the kernel log with the "callbacks suppressed"
> message below, even while the dev_dbg it is supposed to rate limit wouldn't
> print anything because DEBUG is not defined for this device.
>
> [ 533.803964] retire_playback_urb: 852 callbacks suppressed
> [ 538.807930] retire_playback_urb: 852 callbacks suppressed
> [ 543.811897] retire_playback_urb: 852 callbacks suppressed
> [ 548.815745] retire_playback_urb: 852 callbacks suppressed
> [ 553.819826] retire_playback_urb: 852 callbacks suppressed
>
> So use dev_dbg_ratelimited() instead of this construction.
>
> Signed-off-by: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> (backported from commit b7a7723513dc89f83d6df13206df55d4dc26e825)
> Signed-off-by: Joseph Salisbury <joseph.salisbury@xxxxxxxxxxxxx>

It looks like you have combined the commit identified here with the
preceding:

commit a5065eb6da55b226661456e6a7435f605df98111
Author: Tim Gardner <tim.gardner@xxxxxxxxxxxxx>
Date: Wed Apr 9 11:30:44 2014 -0600

ALSA: usb-audio: Suppress repetitive debug messages from retire_playback_urb()

They should not be squashed together like this.

Ben.

> ---
> sound/usb/pcm.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
> index ca3256d..ede4b92 100644
> --- a/sound/usb/pcm.c
> +++ b/sound/usb/pcm.c
> @@ -1488,7 +1488,8 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
> * on two reads of a counter updated every ms.
> */
> if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2)
> - snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n",
> + dev_dbg_ratelimited(&subs->dev->dev,
> + "delay: estimated %d, actual %d\n",
> est_delay, subs->last_delay);
>
> if (!subs->running) {

--
Ben Hutchings
It's easier to fight for one's principles than to live up to them.

Attachment: signature.asc
Description: This is a digitally signed message part