public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add source address to sunrpc svc errors
@ 2007-08-25  1:26 Dr. David Alan Gilbert
  2007-08-25  1:56 ` Randy Dunlap
  0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2007-08-25  1:26 UTC (permalink / raw)
  To: neilb; +Cc: bfields, linux-kernel

Hi,
  This patch adds the address of the client that caused an
error in sunrpc/svc.c so that you get errors that look like:

svc: 192.168.66.28, port=709 :unknown version (3 for prog 100003, nfsd)

I've seen machines which get bunches of unknown version or similar
errors from time to time, and while the recent patch to add
the service helps to find which service has the wrong version it doesn't
help find the potentially bad client.

  The patch is against a checkout of Linus's git tree made
on 2007-08-24.

  One observation is that the svc_print_addr function
prints to a buffer which in this case makes life a little more complex;
it just feels as if there must be lots of places that print a
connection address - is there a better function to use anywhere?

I think actually there are a few places with semi duplicated code; e.g.
one_sock_name switches on the address family but only currently
has IPV4; I wonder how many other places are similar.

Dave

	Signed-off-by: Dave Gilbert <linux@treblig.org>

-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    | Running GNU/Linux on Alpha,68K| Happy  \ 
\ gro.gilbert @ treblig.org | MIPS,x86,ARM,SPARC,PPC & HPPA | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/


--- linux-2.6/net/sunrpc/svc.c.predag	2007-08-25 00:50:06.000000000 +0100
+++ linux-2.6/net/sunrpc/svc.c	2007-08-25 01:34:56.000000000 +0100
@@ -777,6 +777,28 @@ svc_register(struct svc_serv *serv, int 
 }
 
 /*
+ * Printk the given error with the address of the client that caused it.
+ */
+static int
+svc_printkerr(struct svc_rqst *rqstp, const char* fmt,...)
+{
+	va_list args;
+	int 	r;
+	char 	buf[RPC_MAX_ADDRBUFLEN];
+
+	if (!net_ratelimit())
+		return 0;
+
+	printk("svc: %s :", svc_print_addr(rqstp, buf, sizeof(buf)));
+
+	va_start(args, fmt);
+	r = vprintk(fmt, args);
+	va_end(args);
+
+	return r;
+}
+
+/*
  * Process the RPC request.
  */
 int
@@ -963,14 +985,13 @@ svc_process(struct svc_rqst *rqstp)
 	return 0;
 
 err_short_len:
-	if (net_ratelimit())
-		printk("svc: short len %Zd, dropping request\n", argv->iov_len);
+	svc_printkerr(rqstp, "short len %Zd, dropping request\n",
+			argv->iov_len);
 
 	goto dropit;			/* drop request */
 
 err_bad_dir:
-	if (net_ratelimit())
-		printk("svc: bad direction %d, dropping request\n", dir);
+	svc_printkerr(rqstp, "bad direction %d, dropping request\n", dir);
 
 	serv->sv_stats->rpcbadfmt++;
 	goto dropit;			/* drop request */
@@ -1000,8 +1021,7 @@ err_bad_prog:
 	goto sendit;
 
 err_bad_vers:
-	if (net_ratelimit())
-		printk("svc: unknown version (%d for prog %d, %s)\n",
+	svc_printkerr(rqstp, "unknown version (%d for prog %d, %s)\n",
 		       vers, prog, progp->pg_name);
 
 	serv->sv_stats->rpcbadfmt++;
@@ -1011,16 +1031,14 @@ err_bad_vers:
 	goto sendit;
 
 err_bad_proc:
-	if (net_ratelimit())
-		printk("svc: unknown procedure (%d)\n", proc);
+	svc_printkerr(rqstp, "unknown procedure (%d)\n", proc);
 
 	serv->sv_stats->rpcbadfmt++;
 	svc_putnl(resv, RPC_PROC_UNAVAIL);
 	goto sendit;
 
 err_garbage:
-	if (net_ratelimit())
-		printk("svc: failed to decode args\n");
+	svc_printkerr(rqstp, "svc: failed to decode args\n");
 
 	rpc_stat = rpc_garbage_args;
 err_bad:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-25  1:26 [PATCH] Add source address to sunrpc svc errors Dr. David Alan Gilbert
@ 2007-08-25  1:56 ` Randy Dunlap
  2007-08-25 15:09   ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: Randy Dunlap @ 2007-08-25  1:56 UTC (permalink / raw)
  To: Dr. David Alan Gilbert; +Cc: neilb, bfields, linux-kernel

On Sat, 25 Aug 2007 02:26:30 +0100 Dr. David Alan Gilbert wrote:

> Hi,
>   This patch adds the address of the client that caused an
> error in sunrpc/svc.c so that you get errors that look like:
> 
> svc: 192.168.66.28, port=709 :unknown version (3 for prog 100003, nfsd)
> 
> I've seen machines which get bunches of unknown version or similar
> errors from time to time, and while the recent patch to add
> the service helps to find which service has the wrong version it doesn't
> help find the potentially bad client.
> 
>   The patch is against a checkout of Linus's git tree made
> on 2007-08-24.
> 
>   One observation is that the svc_print_addr function
> prints to a buffer which in this case makes life a little more complex;
> it just feels as if there must be lots of places that print a
> connection address - is there a better function to use anywhere?
> 
> I think actually there are a few places with semi duplicated code; e.g.
> one_sock_name switches on the address family but only currently
> has IPV4; I wonder how many other places are similar.
> 
> Dave
> 
> 	Signed-off-by: Dave Gilbert <linux@treblig.org>
> 
> -- 
>  -----Open up your eyes, open up your mind, open up your code -------   
> / Dr. David Alan Gilbert    | Running GNU/Linux on Alpha,68K| Happy  \ 
> \ gro.gilbert @ treblig.org | MIPS,x86,ARM,SPARC,PPC & HPPA | In Hex /
>  \ _________________________|_____ http://www.treblig.org   |_______/
> 
> 
> --- linux-2.6/net/sunrpc/svc.c.predag	2007-08-25 00:50:06.000000000 +0100
> +++ linux-2.6/net/sunrpc/svc.c	2007-08-25 01:34:56.000000000 +0100
> @@ -777,6 +777,28 @@ svc_register(struct svc_serv *serv, int 
>  }
>  
>  /*
> + * Printk the given error with the address of the client that caused it.
> + */
> +static int
> +svc_printkerr(struct svc_rqst *rqstp, const char* fmt,...)

add:
	__attribute__ ((format (printf, 2, 3)))
so that the compiler can check the args list.

> +{
> +	va_list args;
> +	int 	r;
> +	char 	buf[RPC_MAX_ADDRBUFLEN];
> +
> +	if (!net_ratelimit())
> +		return 0;
> +
> +	printk("svc: %s :", svc_print_addr(rqstp, buf, sizeof(buf)));

some KERN_* level, please.

> +
> +	va_start(args, fmt);
> +	r = vprintk(fmt, args);
> +	va_end(args);
> +
> +	return r;
> +}
> +
> +/*
>   * Process the RPC request.
>   */
>  int
> @@ -963,14 +985,13 @@ svc_process(struct svc_rqst *rqstp)
>  	return 0;
>  
>  err_short_len:
> -	if (net_ratelimit())
> -		printk("svc: short len %Zd, dropping request\n", argv->iov_len);
> +	svc_printkerr(rqstp, "short len %Zd, dropping request\n",
> +			argv->iov_len);
>  
>  	goto dropit;			/* drop request */
>  
>  err_bad_dir:
> -	if (net_ratelimit())
> -		printk("svc: bad direction %d, dropping request\n", dir);
> +	svc_printkerr(rqstp, "bad direction %d, dropping request\n", dir);
>  
>  	serv->sv_stats->rpcbadfmt++;
>  	goto dropit;			/* drop request */
> @@ -1000,8 +1021,7 @@ err_bad_prog:
>  	goto sendit;
>  
>  err_bad_vers:
> -	if (net_ratelimit())
> -		printk("svc: unknown version (%d for prog %d, %s)\n",
> +	svc_printkerr(rqstp, "unknown version (%d for prog %d, %s)\n",
>  		       vers, prog, progp->pg_name);
>  
>  	serv->sv_stats->rpcbadfmt++;
> @@ -1011,16 +1031,14 @@ err_bad_vers:
>  	goto sendit;
>  
>  err_bad_proc:
> -	if (net_ratelimit())
> -		printk("svc: unknown procedure (%d)\n", proc);
> +	svc_printkerr(rqstp, "unknown procedure (%d)\n", proc);
>  
>  	serv->sv_stats->rpcbadfmt++;
>  	svc_putnl(resv, RPC_PROC_UNAVAIL);
>  	goto sendit;
>  
>  err_garbage:
> -	if (net_ratelimit())
> -		printk("svc: failed to decode args\n");
> +	svc_printkerr(rqstp, "svc: failed to decode args\n");
>  
>  	rpc_stat = rpc_garbage_args;
>  err_bad:
> -

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-25  1:56 ` Randy Dunlap
@ 2007-08-25 15:09   ` Dr. David Alan Gilbert
  2007-08-27 21:43     ` J. Bruce Fields
  0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2007-08-25 15:09 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: neilb, bfields, linux-kernel

Hi Randy,
  Thanks for your comments,

* Randy Dunlap (randy.dunlap@oracle.com) wrote:
  in reply to my patch:

> > +static int
> > +svc_printkerr(struct svc_rqst *rqstp, const char* fmt,...)
> 
> add:
> 	__attribute__ ((format (printf, 2, 3)))
> so that the compiler can check the args list.

Added.

> > +	printk("svc: %s :", svc_print_addr(rqstp, buf, sizeof(buf)));
> 
> some KERN_* level, please.

I've gone with KERN_WARNING which seems about right.

Here is a v2 of the patch that adds those two fixes and also
tidies up the output a little.

Dave
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    | Running GNU/Linux on Alpha,68K| Happy  \ 
\ gro.gilbert @ treblig.org | MIPS,x86,ARM,SPARC,PPC & HPPA | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

----------------------------------------------------------
Hi,
  This patch adds the address of the client that caused an
error in sunrpc/svc.c so that you get errors that look like:

svc: 192.168.66.28, port=709: unknown version (3 for prog 100003, nfsd)

I've seen machines which get bunches of unknown version or similar
errors from time to time, and while the recent patch to add
the service helps to find which service has the wrong version it doesn't
help find the potentially bad client.

  The patch is against a checkout of Linus's git tree made
on 2007-08-24.

  One observation is that the svc_print_addr function
prints to a buffer which in this case makes life a little more complex;
it just feels as if there must be lots of places that print a
connection address - is there a better function to use anywhere?

I think actually there are a few places with semi duplicated code; e.g.
one_sock_name switches on the address family but only currently
has IPV4; I wonder how many other places are similar.

Dave

    Signed-off-by: Dave Gilbert <linux@treblig.org>

--- linux-2.6/net/sunrpc/svc.c.predag	2007-08-25 00:50:06.000000000 +0100
+++ linux-2.6/net/sunrpc/svc.c	2007-08-25 15:53:36.000000000 +0100
@@ -777,6 +777,30 @@ svc_register(struct svc_serv *serv, int 
 }
 
 /*
+ * Printk the given error with the address of the client that caused it.
+ */
+static int
+__attribute__ ((format (printf, 2, 3)))
+svc_printkerr(struct svc_rqst *rqstp, const char *fmt, ...)
+{
+	va_list args;
+	int 	r;
+	char 	buf[RPC_MAX_ADDRBUFLEN];
+
+	if (!net_ratelimit())
+		return 0;
+
+	printk(KERN_WARNING "svc: %s: ",
+		svc_print_addr(rqstp, buf, sizeof(buf)));
+
+	va_start(args, fmt);
+	r = vprintk(fmt, args);
+	va_end(args);
+
+	return r;
+}
+
+/*
  * Process the RPC request.
  */
 int
@@ -963,14 +987,13 @@ svc_process(struct svc_rqst *rqstp)
 	return 0;
 
 err_short_len:
-	if (net_ratelimit())
-		printk("svc: short len %Zd, dropping request\n", argv->iov_len);
+	svc_printkerr(rqstp, "short len %Zd, dropping request\n",
+			argv->iov_len);
 
 	goto dropit;			/* drop request */
 
 err_bad_dir:
-	if (net_ratelimit())
-		printk("svc: bad direction %d, dropping request\n", dir);
+	svc_printkerr(rqstp, "bad direction %d, dropping request\n", dir);
 
 	serv->sv_stats->rpcbadfmt++;
 	goto dropit;			/* drop request */
@@ -1000,8 +1023,7 @@ err_bad_prog:
 	goto sendit;
 
 err_bad_vers:
-	if (net_ratelimit())
-		printk("svc: unknown version (%d for prog %d, %s)\n",
+	svc_printkerr(rqstp, "unknown version (%d for prog %d, %s)\n",
 		       vers, prog, progp->pg_name);
 
 	serv->sv_stats->rpcbadfmt++;
@@ -1011,16 +1033,14 @@ err_bad_vers:
 	goto sendit;
 
 err_bad_proc:
-	if (net_ratelimit())
-		printk("svc: unknown procedure (%d)\n", proc);
+	svc_printkerr(rqstp, "unknown procedure (%d)\n", proc);
 
 	serv->sv_stats->rpcbadfmt++;
 	svc_putnl(resv, RPC_PROC_UNAVAIL);
 	goto sendit;
 
 err_garbage:
-	if (net_ratelimit())
-		printk("svc: failed to decode args\n");
+	svc_printkerr(rqstp, "failed to decode args\n");
 
 	rpc_stat = rpc_garbage_args;
 err_bad:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-25 15:09   ` Dr. David Alan Gilbert
@ 2007-08-27 21:43     ` J. Bruce Fields
  2007-08-28 18:03       ` Dr. David Alan Gilbert
  2007-08-28 19:12       ` Valdis.Kletnieks
  0 siblings, 2 replies; 13+ messages in thread
From: J. Bruce Fields @ 2007-08-27 21:43 UTC (permalink / raw)
  To: Dr. David Alan Gilbert; +Cc: Randy Dunlap, neilb, linux-kernel

On Sat, Aug 25, 2007 at 04:09:27PM +0100, Dr. David Alan Gilbert wrote:
>   This patch adds the address of the client that caused an
> error in sunrpc/svc.c so that you get errors that look like:
> 
> svc: 192.168.66.28, port=709: unknown version (3 for prog 100003, nfsd)
> 
> I've seen machines which get bunches of unknown version or similar
> errors from time to time, and while the recent patch to add
> the service helps to find which service has the wrong version it doesn't
> help find the potentially bad client.

Looks like a reasonable idea to me, thanks!  Any objection to just
calling it "svc_printk" instead of "svc_printkerr"?

I also wonder whether these shouldn't all be dprintk's instead of
printk's.  One misbehaving client could create a lot of noise in the
logs.

--b.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-27 21:43     ` J. Bruce Fields
@ 2007-08-28 18:03       ` Dr. David Alan Gilbert
  2007-08-28 18:56         ` J. Bruce Fields
  2007-08-28 19:12       ` Valdis.Kletnieks
  1 sibling, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2007-08-28 18:03 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Randy Dunlap, neilb, linux-kernel

* J. Bruce Fields (bfields@fieldses.org) wrote:
> On Sat, Aug 25, 2007 at 04:09:27PM +0100, Dr. David Alan Gilbert wrote:
> >   This patch adds the address of the client that caused an
> > error in sunrpc/svc.c so that you get errors that look like:
> > 
> > svc: 192.168.66.28, port=709: unknown version (3 for prog 100003, nfsd)
> > 
> > I've seen machines which get bunches of unknown version or similar
> > errors from time to time, and while the recent patch to add
> > the service helps to find which service has the wrong version it doesn't
> > help find the potentially bad client.
> 
> Looks like a reasonable idea to me, thanks!  Any objection to just
> calling it "svc_printk" instead of "svc_printkerr"?

No, that's fine.

> I also wonder whether these shouldn't all be dprintk's instead of
> printk's.  One misbehaving client could create a lot of noise in the
> logs.

Yeh; I wasn't going to change anything else about it;   the
rate limiting (that I think Neil put in a few months ago) means
that any one client doesn't get too noisy - I've got something
trying to do version 0 on nfs to a bunch of boxes and I do wonder
why; I suspect it's just a monitoring script - but it seems better
to know about it until I figure it out.

I'm not going to be able to recut the patch until the weekend;
do you just want to remove the 'err' in your copy and feed this
to the main tree with some of the rest of your patches?

Dave
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    | Running GNU/Linux on Alpha,68K| Happy  \ 
\ gro.gilbert @ treblig.org | MIPS,x86,ARM,SPARC,PPC & HPPA | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-28 18:03       ` Dr. David Alan Gilbert
@ 2007-08-28 18:56         ` J. Bruce Fields
  2007-09-01 19:27           ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: J. Bruce Fields @ 2007-08-28 18:56 UTC (permalink / raw)
  To: Dr. David Alan Gilbert; +Cc: Randy Dunlap, neilb, linux-kernel

On Tue, Aug 28, 2007 at 07:03:06PM +0100, Dr. David Alan Gilbert wrote:
> * J. Bruce Fields (bfields@fieldses.org) wrote:
> > I also wonder whether these shouldn't all be dprintk's instead of
> > printk's.  One misbehaving client could create a lot of noise in the
> > logs.
> 
> Yeh; I wasn't going to change anything else about it;   the
> rate limiting (that I think Neil put in a few months ago) means
> that any one client doesn't get too noisy - I've got something
> trying to do version 0 on nfs to a bunch of boxes and I do wonder
> why; I suspect it's just a monitoring script - but it seems better
> to know about it until I figure it out.

OK.

> I'm not going to be able to recut the patch until the weekend;
> do you just want to remove the 'err' in your copy and feed this
> to the main tree with some of the rest of your patches?

Done; result at

	git://linux-nfs.org/~bfields/linux.git	nfs-server-stable

if you'd like to check.

--b.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-27 21:43     ` J. Bruce Fields
  2007-08-28 18:03       ` Dr. David Alan Gilbert
@ 2007-08-28 19:12       ` Valdis.Kletnieks
  2007-08-28 19:19         ` J. Bruce Fields
  2007-08-29 13:37         ` Peter Staubach
  1 sibling, 2 replies; 13+ messages in thread
From: Valdis.Kletnieks @ 2007-08-28 19:12 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Dr. David Alan Gilbert, Randy Dunlap, neilb, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 500 bytes --]

On Mon, 27 Aug 2007 17:43:33 EDT, "J. Bruce Fields" said:

> Looks like a reasonable idea to me, thanks!  Any objection to just
> calling it "svc_printk" instead of "svc_printkerr"?
> 
> I also wonder whether these shouldn't all be dprintk's instead of
> printk's.  One misbehaving client could create a lot of noise in the
> logs.

I shouldn't have to rebuild my kernel with debugging enabled just to see
who is throwing trash at my machine.  printk(KERN_INFO maybe and/or using
a printk_ratelimit.

[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-28 19:12       ` Valdis.Kletnieks
@ 2007-08-28 19:19         ` J. Bruce Fields
  2007-08-29 18:26           ` Valdis.Kletnieks
  2007-08-29 13:37         ` Peter Staubach
  1 sibling, 1 reply; 13+ messages in thread
From: J. Bruce Fields @ 2007-08-28 19:19 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: Dr. David Alan Gilbert, Randy Dunlap, neilb, linux-kernel

On Tue, Aug 28, 2007 at 03:12:26PM -0400, Valdis.Kletnieks@vt.edu wrote:
> On Mon, 27 Aug 2007 17:43:33 EDT, "J. Bruce Fields" said:
> > I also wonder whether these shouldn't all be dprintk's instead of
> > printk's.  One misbehaving client could create a lot of noise in the
> > logs.
> 
> I shouldn't have to rebuild my kernel with debugging enabled just to see
> who is throwing trash at my machine.

Fair enough.

The dprintk's throughout the nfs and sunrpc server and client code can
be selectively enabled at runtime using a set of sysctls in
sys/sunrpc/*_debug; see

	include/linux/lockd/debug.h
	include/linux/nfsd/debug.h
	include/linux/sunrpc/debug.h

--b.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-28 19:12       ` Valdis.Kletnieks
  2007-08-28 19:19         ` J. Bruce Fields
@ 2007-08-29 13:37         ` Peter Staubach
  2007-08-29 13:50           ` J. Bruce Fields
  2007-08-29 19:41           ` Valdis.Kletnieks
  1 sibling, 2 replies; 13+ messages in thread
From: Peter Staubach @ 2007-08-29 13:37 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: J. Bruce Fields, Dr. David Alan Gilbert, Randy Dunlap, neilb,
	linux-kernel

Valdis.Kletnieks@vt.edu wrote:
> On Mon, 27 Aug 2007 17:43:33 EDT, "J. Bruce Fields" said:
>
>   
>> Looks like a reasonable idea to me, thanks!  Any objection to just
>> calling it "svc_printk" instead of "svc_printkerr"?
>>
>> I also wonder whether these shouldn't all be dprintk's instead of
>> printk's.  One misbehaving client could create a lot of noise in the
>> logs.
>>     
>
> I shouldn't have to rebuild my kernel with debugging enabled just to see
> who is throwing trash at my machine.  printk(KERN_INFO maybe and/or using
> a printk_ratelimit.
>   

There are a lot of ways to discover who is throwing trash
at your system other than the kernel printing messages.

Tools such as tcpdump and tethereal/wireshark make much better
tools for this purpose.

    Thanx...

       ps

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-29 13:37         ` Peter Staubach
@ 2007-08-29 13:50           ` J. Bruce Fields
  2007-08-29 19:41           ` Valdis.Kletnieks
  1 sibling, 0 replies; 13+ messages in thread
From: J. Bruce Fields @ 2007-08-29 13:50 UTC (permalink / raw)
  To: Peter Staubach
  Cc: Valdis.Kletnieks, Dr. David Alan Gilbert, Randy Dunlap, neilb,
	linux-kernel

On Wed, Aug 29, 2007 at 09:37:00AM -0400, Peter Staubach wrote:
> There are a lot of ways to discover who is throwing trash
> at your system other than the kernel printing messages.
>
> Tools such as tcpdump and tethereal/wireshark make much better
> tools for this purpose.

The use of printk's and dprintk's in the rpc and nfsd code seems a
little arbitrary in places.  It would be worth grepping for them all,
figuring out how they're currently used, thinking about what we need
them for (to help administrators identify problems?  to help testers
provide debugging information to developers?), and how they might be
abused (remote hosts and unprivileged local users shouldn't be able to
spam the logs), developing some uniform policies, and submitting
patches.

I'm not volunteering, but if someone's interested I think it could be
really helpful, especially if it helps increase the usefulness of bug
reports.

--b.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-28 19:19         ` J. Bruce Fields
@ 2007-08-29 18:26           ` Valdis.Kletnieks
  0 siblings, 0 replies; 13+ messages in thread
From: Valdis.Kletnieks @ 2007-08-29 18:26 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Dr. David Alan Gilbert, Randy Dunlap, neilb, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1168 bytes --]

On Tue, 28 Aug 2007 15:19:07 EDT, "J. Bruce Fields" said:
> On Tue, Aug 28, 2007 at 03:12:26PM -0400, Valdis.Kletnieks@vt.edu wrote:
> > On Mon, 27 Aug 2007 17:43:33 EDT, "J. Bruce Fields" said:
> > > I also wonder whether these shouldn't all be dprintk's instead of
> > > printk's.  One misbehaving client could create a lot of noise in the
> > > logs.
> > 
> > I shouldn't have to rebuild my kernel with debugging enabled just to see
> > who is throwing trash at my machine.
> 
> Fair enough.
> 
> The dprintk's throughout the nfs and sunrpc server and client code can
> be selectively enabled at runtime using a set of sysctls in
> sys/sunrpc/*_debug; see
> 
> 	include/linux/lockd/debug.h
> 	include/linux/nfsd/debug.h

I looked at nfsd/debug.h, and saw the NFSD_DEBUG usage, and thought "Wow, if I
built it without RPC_DEBUG, I'm screwed". I didn't see where RPC_DEBUG was
enabled if CONFIG_SYSCTL was defined - having "compile in debugging code"
equated to "system has sysctl support" was as unexpected as the guy today who
didn't realize you needed SCSI support for an IDE CD/ROM. ;)

"You are trapped in a twisty maze of little #ifdef's, all different"... ;)


[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-29 13:37         ` Peter Staubach
  2007-08-29 13:50           ` J. Bruce Fields
@ 2007-08-29 19:41           ` Valdis.Kletnieks
  1 sibling, 0 replies; 13+ messages in thread
From: Valdis.Kletnieks @ 2007-08-29 19:41 UTC (permalink / raw)
  To: Peter Staubach
  Cc: J. Bruce Fields, Dr. David Alan Gilbert, Randy Dunlap, neilb,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 776 bytes --]

On Wed, 29 Aug 2007 09:37:00 EDT, Peter Staubach said:

> There are a lot of ways to discover who is throwing trash
> at your system other than the kernel printing messages.
> 
> Tools such as tcpdump and tethereal/wireshark make much better
> tools for this purpose.

Given the number of times I've had to use tcpdump and wireshark to wade
through literally gigabyte traces looking for stuff specifically because
the kernel *didn't* printk information it had handy, I'm not too sympathetic.
Especially when the printk in question is currently saying "I know who's
causing the problem but I'm not going to tell you, nyah nyah"....

(And if there's better ways than kernel printing messages, does that mean we
should deprecate the iptables '-j LOG' target while we're at it?)


[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] Add source address to sunrpc svc errors
  2007-08-28 18:56         ` J. Bruce Fields
@ 2007-09-01 19:27           ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2007-09-01 19:27 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Randy Dunlap, neilb, linux-kernel

* J. Bruce Fields (bfields@fieldses.org) wrote:
> On Tue, Aug 28, 2007 at 07:03:06PM +0100, Dr. David Alan Gilbert wrote:

<snip>

> > I'm not going to be able to recut the patch until the weekend;
> > do you just want to remove the 'err' in your copy and feed this
> > to the main tree with some of the rest of your patches?
> 
> Done; result at
> 
> 	git://linux-nfs.org/~bfields/linux.git	nfs-server-stable
> 
> if you'd like to check.

Yep, that's fine.

Dave
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    | Running GNU/Linux on Alpha,68K| Happy  \ 
\ gro.gilbert @ treblig.org | MIPS,x86,ARM,SPARC,PPC & HPPA | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-09-01 19:27 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-25  1:26 [PATCH] Add source address to sunrpc svc errors Dr. David Alan Gilbert
2007-08-25  1:56 ` Randy Dunlap
2007-08-25 15:09   ` Dr. David Alan Gilbert
2007-08-27 21:43     ` J. Bruce Fields
2007-08-28 18:03       ` Dr. David Alan Gilbert
2007-08-28 18:56         ` J. Bruce Fields
2007-09-01 19:27           ` Dr. David Alan Gilbert
2007-08-28 19:12       ` Valdis.Kletnieks
2007-08-28 19:19         ` J. Bruce Fields
2007-08-29 18:26           ` Valdis.Kletnieks
2007-08-29 13:37         ` Peter Staubach
2007-08-29 13:50           ` J. Bruce Fields
2007-08-29 19:41           ` Valdis.Kletnieks

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox