On Sun, Sep 28, 2008 at 09:21:26AM +0300, Benny Halevy wrote: > From: Benny Halevy <bhalevy@xxxxxxxxxxx> > > since commit ff7d9756b501744540be65e172d27ee321d86103 > "nfsd: use static memory for callback program and stats" > do_probe_callback uses a static callback program > (NFS4_CALLBACK) rather than the one set in clp->cl_callback.cb_prog > as passed in by the client in setclientid (4.0) > or create_session (4.1). > > This patches introduces rpc_create_args.prognumber that allows > overriding program->number when creating rpc_clnt. Applied--thanks!--b. > > Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> > --- > fs/nfsd/nfs4callback.c | 1 + > include/linux/sunrpc/clnt.h | 1 + > net/sunrpc/clnt.c | 2 +- > 3 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c > index 3073ccb..e198ead 100644 > --- a/fs/nfsd/nfs4callback.c > +++ b/fs/nfsd/nfs4callback.c > @@ -377,6 +377,7 @@ static int do_probe_callback(void *data) > .addrsize = sizeof(addr), > .timeout = &timeparms, > .program = &cb_program, > + .prognumber = cb->cb_prog, > .version = nfs_cb_version[1]->number, > .authflavor = RPC_AUTH_UNIX, /* XXX: need AUTH_GSS... */ > .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET), > diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h > index e5bfe01..4ba84e8 100644 > --- a/include/linux/sunrpc/clnt.h > +++ b/include/linux/sunrpc/clnt.h > @@ -104,6 +104,7 @@ struct rpc_create_args { > const struct rpc_timeout *timeout; > char *servername; > struct rpc_program *program; > + u32 prognumber; /* overrides program->number */ > u32 version; > rpc_authflavor_t authflavor; > unsigned long flags; > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index 76739e9..da0789f 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -174,7 +174,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru > clnt->cl_procinfo = version->procs; > clnt->cl_maxproc = version->nrprocs; > clnt->cl_protname = program->name; > - clnt->cl_prog = program->number; > + clnt->cl_prog = args->prognumber ? : program->number; > clnt->cl_vers = version->number; > clnt->cl_stats = program->stats; > clnt->cl_metrics = rpc_alloc_iostats(clnt); > -- > 1.6.0.2 > > > -- > 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 -- 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