On Mon, 2011-11-07 at 14:04 -0500, Fred Isaman wrote: > If a server incorrectly returns RPC_PROG_MISMATCH in the midst > of nfsv4 traffic, the client will hang in various difficult to > debug states. Change a dprintk to a printk to ensure a > relevant log message is sent in this case. > > Signed-off-by: Fred Isaman <iisaman@xxxxxxxxxx> > --- > net/sunrpc/clnt.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index c5347d2..2d9b77e 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -31,6 +31,7 @@ > #include <linux/in.h> > #include <linux/in6.h> > #include <linux/un.h> > +#include <linux/ratelimit.h> > > #include <linux/sunrpc/clnt.h> > #include <linux/sunrpc/rpc_pipe_fs.h> > @@ -1736,8 +1737,9 @@ rpc_verify_header(struct rpc_task *task) > error = -EPFNOSUPPORT; > goto out_err; > case RPC_PROG_MISMATCH: > - dprintk("RPC: %5u %s: program %u, version %u unsupported by " > - "server %s\n", task->tk_pid, __func__, > + printk_ratelimited("RPC: %5u %s: program %u, version %u " > + "unsupported by server %s\n", > + task->tk_pid, __func__, > (unsigned int)task->tk_client->cl_prog, > (unsigned int)task->tk_client->cl_vers, > task->tk_client->cl_server); 1) The above will trigger every time the client tries to autonegotiate the NFS version (i.e. on pretty much every mount in some cases). That makes it unacceptable unless you add some kind of extra protection. 2) Why is PROG_MISMATCH special, when compared to PROG_UNAVAIL, PROC_UNAVAIL and/or GARBAGE_ARGS? Trond -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html