Patchwork [net-next] netconsole: add oops_only module option

login
register
mail settings
Submitter Amerigo Wang
Date Nov. 8, 2012, 1:42 p.m.
Message ID <1352382158-3928-1-git-send-email-amwang@redhat.com>
Download mbox | patch
Permalink /patch/197837/
State Accepted
Delegated to: David Miller
Headers show

Comments

Amerigo Wang - Nov. 8, 2012, 1:42 p.m.
Some people wants to log only oops messages via netconsole,
(this is also why netoops was invented)
so add a module option for netconsole. This can be tuned
via /sys/module/netconsole/parameters/oops_only at run time
as well.

Cc: David Miller <davem@davemloft.net>
Signed-off-by: Cong Wang <amwang@redhat.com>

---
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap - Nov. 8, 2012, 7:49 p.m.
On 11/08/2012 05:42 AM, Cong Wang wrote:

> Some people wants to log only oops messages via netconsole,
> (this is also why netoops was invented)
> so add a module option for netconsole. This can be tuned
> via /sys/module/netconsole/parameters/oops_only at run time
> as well.
> 


Hi,

What does this do with panics?
Do they set oops_in_progress?

thanks.

> Cc: David Miller <davem@davemloft.net>
> Signed-off-by: Cong Wang <amwang@redhat.com>
> 
> ---
> diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
> index b332112..6989ebe 100644
> --- a/drivers/net/netconsole.c
> +++ b/drivers/net/netconsole.c
> @@ -56,6 +56,10 @@ static char config[MAX_PARAM_LENGTH];
>  module_param_string(netconsole, config, MAX_PARAM_LENGTH, 0);
>  MODULE_PARM_DESC(netconsole, " netconsole=[src-port]@[src-ip]/[dev],[tgt-port]@<tgt-ip>/[tgt-macaddr]");
>  
> +static bool oops_only = false;
> +module_param(oops_only, bool, 0600);
> +MODULE_PARM_DESC(oops_only, "Only log oops messages");
> +
>  #ifndef	MODULE
>  static int __init option_setup(char *opt)
>  {
> @@ -683,6 +687,8 @@ static void write_msg(struct console *con, const char *msg, unsigned int len)
>  	struct netconsole_target *nt;
>  	const char *tmp;
>  
> +	if (oops_only && !oops_in_progress)
> +		return;
>  	/* Avoid taking lock and disabling interrupts unnecessarily */
>  	if (list_empty(&target_list))
>  		return;
> --
Amerigo Wang - Nov. 9, 2012, 3:02 a.m.
On Thu, 2012-11-08 at 11:49 -0800, Randy Dunlap wrote:
> On 11/08/2012 05:42 AM, Cong Wang wrote:
> 
> > Some people wants to log only oops messages via netconsole,
> > (this is also why netoops was invented)
> > so add a module option for netconsole. This can be tuned
> > via /sys/module/netconsole/parameters/oops_only at run time
> > as well.
> > 
> 
> 
> Hi,
> 
> What does this do with panics?
> Do they set oops_in_progress?

Yes, panic() calls bust_spinlocks(1).


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Nov. 9, 2012, 3:07 a.m.
From: Cong Wang <amwang@redhat.com>
Date: Thu,  8 Nov 2012 21:42:38 +0800

> Some people wants to log only oops messages via netconsole,
> (this is also why netoops was invented)
> so add a module option for netconsole. This can be tuned
> via /sys/module/netconsole/parameters/oops_only at run time
> as well.
> 
> Cc: David Miller <davem@davemloft.net>
> Signed-off-by: Cong Wang <amwang@redhat.com>

Seems reasonable, applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index b332112..6989ebe 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -56,6 +56,10 @@  static char config[MAX_PARAM_LENGTH];
 module_param_string(netconsole, config, MAX_PARAM_LENGTH, 0);
 MODULE_PARM_DESC(netconsole, " netconsole=[src-port]@[src-ip]/[dev],[tgt-port]@<tgt-ip>/[tgt-macaddr]");
 
+static bool oops_only = false;
+module_param(oops_only, bool, 0600);
+MODULE_PARM_DESC(oops_only, "Only log oops messages");
+
 #ifndef	MODULE
 static int __init option_setup(char *opt)
 {
@@ -683,6 +687,8 @@  static void write_msg(struct console *con, const char *msg, unsigned int len)
 	struct netconsole_target *nt;
 	const char *tmp;
 
+	if (oops_only && !oops_in_progress)
+		return;
 	/* Avoid taking lock and disabling interrupts unnecessarily */
 	if (list_empty(&target_list))
 		return;