* [PATCH] cifs: Ratelimit kernel log messages
@ 2015-11-07 12:13 Jamie Bainbridge
[not found] ` <7094bd3a2ef3c030463aa04fbce8369bfb33be9c.1446897962.git.jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Jamie Bainbridge @ 2015-11-07 12:13 UTC (permalink / raw)
To: linux-cifs-u79uwXL29TY76Z2rM5mHXA
Under some conditions, CIFS can repeatedly call the cifs_dbg() logging
wrapper. If done rapidly enough, the console framebuffer can softlockup
or "rcu_sched self-detected stall". Apply the built-in log ratelimiters
to prevent such hangs.
Signed-off-by: Jamie Bainbridge <jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
fs/cifs/cifs_debug.c | 2 +-
fs/cifs/cifs_debug.h | 9 ++++-----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 7febcf2475c5ab675c04dfd2fddaa3ed574522a0..50b268483302922ee63d205a2fa560ec27676eed 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -50,7 +50,7 @@ void cifs_vfs_err(const char *fmt, ...)
vaf.fmt = fmt;
vaf.va = &args;
- pr_err("CIFS VFS: %pV", &vaf);
+ pr_err_ratelimited("CIFS VFS: %pV", &vaf);
va_end(args);
}
diff --git a/fs/cifs/cifs_debug.h b/fs/cifs/cifs_debug.h
index f40fbaca1b2a2c1d7457d71bd1a5e7dd4b477859..66cf0f9fff8984cb12eed1c89d91bc9c6ccc6a9d 100644
--- a/fs/cifs/cifs_debug.h
+++ b/fs/cifs/cifs_debug.h
@@ -51,14 +51,13 @@ __printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
/* information message: e.g., configuration, major event */
#define cifs_dbg(type, fmt, ...) \
do { \
- if (type == FYI) { \
- if (cifsFYI & CIFS_INFO) { \
- pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__); \
- } \
+ if (type == FYI && cifsFYI & CIFS_INFO) { \
+ pr_debug_ratelimited("%s: " \
+ fmt, __FILE__, ##__VA_ARGS__); \
} else if (type == VFS) { \
cifs_vfs_err(fmt, ##__VA_ARGS__); \
} else if (type == NOISY && type != 0) { \
- pr_debug(fmt, ##__VA_ARGS__); \
+ pr_debug_ratelimited(fmt, ##__VA_ARGS__); \
} \
} while (0)
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] cifs: Ratelimit kernel log messages
[not found] ` <7094bd3a2ef3c030463aa04fbce8369bfb33be9c.1446897962.git.jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-11-30 4:07 ` Steve French
0 siblings, 0 replies; 2+ messages in thread
From: Steve French @ 2015-11-30 4:07 UTC (permalink / raw)
To: Jamie Bainbridge; +Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA
repushed to cifs-2.6.git (after finding out that the kbuild test robot
warning messages for ARCH=mn10300 is likely not a real problem.
On Sat, Nov 7, 2015 at 6:13 AM, Jamie Bainbridge
<jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Under some conditions, CIFS can repeatedly call the cifs_dbg() logging
> wrapper. If done rapidly enough, the console framebuffer can softlockup
> or "rcu_sched self-detected stall". Apply the built-in log ratelimiters
> to prevent such hangs.
>
> Signed-off-by: Jamie Bainbridge <jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
> fs/cifs/cifs_debug.c | 2 +-
> fs/cifs/cifs_debug.h | 9 ++++-----
> 2 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
> index 7febcf2475c5ab675c04dfd2fddaa3ed574522a0..50b268483302922ee63d205a2fa560ec27676eed 100644
> --- a/fs/cifs/cifs_debug.c
> +++ b/fs/cifs/cifs_debug.c
> @@ -50,7 +50,7 @@ void cifs_vfs_err(const char *fmt, ...)
> vaf.fmt = fmt;
> vaf.va = &args;
>
> - pr_err("CIFS VFS: %pV", &vaf);
> + pr_err_ratelimited("CIFS VFS: %pV", &vaf);
>
> va_end(args);
> }
> diff --git a/fs/cifs/cifs_debug.h b/fs/cifs/cifs_debug.h
> index f40fbaca1b2a2c1d7457d71bd1a5e7dd4b477859..66cf0f9fff8984cb12eed1c89d91bc9c6ccc6a9d 100644
> --- a/fs/cifs/cifs_debug.h
> +++ b/fs/cifs/cifs_debug.h
> @@ -51,14 +51,13 @@ __printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
> /* information message: e.g., configuration, major event */
> #define cifs_dbg(type, fmt, ...) \
> do { \
> - if (type == FYI) { \
> - if (cifsFYI & CIFS_INFO) { \
> - pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__); \
> - } \
> + if (type == FYI && cifsFYI & CIFS_INFO) { \
> + pr_debug_ratelimited("%s: " \
> + fmt, __FILE__, ##__VA_ARGS__); \
> } else if (type == VFS) { \
> cifs_vfs_err(fmt, ##__VA_ARGS__); \
> } else if (type == NOISY && type != 0) { \
> - pr_debug(fmt, ##__VA_ARGS__); \
> + pr_debug_ratelimited(fmt, ##__VA_ARGS__); \
> } \
> } while (0)
>
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-11-30 4:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-07 12:13 [PATCH] cifs: Ratelimit kernel log messages Jamie Bainbridge
[not found] ` <7094bd3a2ef3c030463aa04fbce8369bfb33be9c.1446897962.git.jamie.bainbridge-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-11-30 4:07 ` Steve French
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.