2005-09-22 19:43:49

by Chuck Lever

[permalink] [raw]
Subject: [Fwd: [Fwd: [Fwd: Re: 2.6.13-mm2]]]

attached please find the original message containing the pmap reserved
port patch.


Attachments:
[Fwd: [Fwd: Re: 2.6.13-mm2]] (9.14 kB)
cel.vcf (439.00 B)
Download all attachments

2005-09-22 21:58:04

by Trond Myklebust

[permalink] [raw]
Subject: Re: [Fwd: [Fwd: [Fwd: Re: 2.6.13-mm2]]]

to den 22.09.2005 Klokka 15:43 (-0400) skreiv Chuck Lever:
> attached please find the original message containing the pmap reserved
> port patch.

There's just one problem: it won't apply to my tree. Looks like this is
relative to something you haven't merged yet.

Cheers,
Trond

> e-postmelding vedlegg ([Fwd: [Fwd: Re: 2.6.13-mm2]])
> to den 22.09.2005 Klokka 15:43 (-0400) skreiv Chuck Lever:
> > andrew-
> >
> > please replace the one-liner that adds "xprt->resvport = 0;" to
> > net/sunrpc/clnt.c with the attached patch.
> >
> > i haven't heard confirmation from dominik on this, but trond and i
> > suspect this is a reasonable replacement for the original patch.
> > e-postmelding vedlegg ([Fwd: Re: 2.6.13-mm2])
> > to den 22.09.2005 Klokka 15:43 (-0400) skreiv Chuck Lever:
> > > Looks like one of your patches...
> > > e-postmelding vedlegg, "Vidaresendt melding - Re: 2.6.13-mm2"
> > > to den 22.09.2005 Klokka 15:43 (-0400) skreiv Chuck Lever:
> > > > Dominik Karall <[email protected]> wrote:
> > > > >
> > > > > On Thursday 08 September 2005 14:30, Andrew Morton wrote:
> > > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13/2.6.13
> > > > > >-mm2/
> > > > >
> > > > > I have problems using NFS with 2.6.13-mm2, it failes to start, but works with
> > > > > 2.6.13-ck1 (so pure 2.6.13 should work too, as there are no nfs related
> > > > > changes in -ck, I think).
> > > > > Following messages appear in /var/log/messages:
> > > > >
> > > > > Installing knfsd (copyright (C) 1996 [email protected]).
> > > > > rpc.statd[15041]: Version 1.0.7 Starting
> > > > > NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
> > > > > NFSD: recovery directory /var/lib/nfs/v4recovery doesn't exist
> > > > > NFSD: starting 90-second grace period
> > > > > portmap[15048]: connect from 127.0.0.1 to set(nfs): request from unprivileged
> > > > > port
> > > > > nfsd[15046]: nfssvc: Permission denied
> > > > >
> > > > >
> > > > > with 2.6.13-ck1:
> > > > >
> > > > > Installing knfsd (copyright (C) 1996 [email protected]).
> > > > > rpc.statd[16126]: Version 1.0.7 Starting
> > > > > NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
> > > > > NFSD: starting 90-second grace period
> > > >
> > > > OK. We don't have many nfsd patches at all in 2.6.13-mm2. But there are
> > > > quite a few sunrpc changes. Plus I have a few random nfs patches which
> > > > should be merged up or dropped.
> > > >
> > > > In short: dunno. Relevant people cc'ed ;)

2005-09-23 01:25:00

by Chuck Lever

[permalink] [raw]
Subject: Re: [Fwd: [Fwd: [Fwd: Re: 2.6.13-mm2]]]

On Thu, 22 Sep 2005, Trond Myklebust wrote:

> to den 22.09.2005 Klokka 15:43 (-0400) skreiv Chuck Lever:
> > attached please find the original message containing the pmap reserved
> > port patch.
>
> There's just one problem: it won't apply to my tree. Looks like this is
> relative to something you haven't merged yet.

oops, you're right. try this one.



[SUNRPC] portmapper doesn't need a reserved port

The in-kernel portmapper does not require a reserved port for making bind
queries.

Test-plan:
Tens of runs of the Connectathon locking suite with TCP and UDP against
several other NFS server implementations using NFSv3, not NFSv4 (which
doesn't require rpcbind).

Signed-off-by: Chuck Lever <[email protected]>
---

net/sunrpc/pmap_clnt.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/net/sunrpc/pmap_clnt.c b/net/sunrpc/pmap_clnt.c
--- a/net/sunrpc/pmap_clnt.c
+++ b/net/sunrpc/pmap_clnt.c
@@ -26,7 +26,7 @@
#define PMAP_GETPORT 3

static struct rpc_procinfo pmap_procedures[];
-static struct rpc_clnt * pmap_create(char *, struct sockaddr_in *, int);
+static struct rpc_clnt * pmap_create(char *, struct sockaddr_in *, int, int);
static void pmap_getport_done(struct rpc_task *);
static struct rpc_program pmap_program;
static DEFINE_SPINLOCK(pmap_lock);
@@ -65,7 +65,7 @@ rpc_getport(struct rpc_task *task, struc
map->pm_binding = 1;
spin_unlock(&pmap_lock);

- pmap_clnt = pmap_create(clnt->cl_server, sap, map->pm_prot);
+ pmap_clnt = pmap_create(clnt->cl_server, sap, map->pm_prot, 0);
if (IS_ERR(pmap_clnt)) {
task->tk_status = PTR_ERR(pmap_clnt);
goto bailout;
@@ -112,7 +112,7 @@ rpc_getport_external(struct sockaddr_in
NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);

sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
- pmap_clnt = pmap_create(hostname, sin, prot);
+ pmap_clnt = pmap_create(hostname, sin, prot, 0);
if (IS_ERR(pmap_clnt))
return PTR_ERR(pmap_clnt);

@@ -171,7 +171,7 @@ rpc_register(u32 prog, u32 vers, int pro

sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- pmap_clnt = pmap_create("localhost", &sin, IPPROTO_UDP);
+ pmap_clnt = pmap_create("localhost", &sin, IPPROTO_UDP, 1);
if (IS_ERR(pmap_clnt)) {
error = PTR_ERR(pmap_clnt);
dprintk("RPC: couldn't create pmap client. Error = %d\n", error);
@@ -198,7 +198,7 @@ rpc_register(u32 prog, u32 vers, int pro
}

static struct rpc_clnt *
-pmap_create(char *hostname, struct sockaddr_in *srvaddr, int proto)
+pmap_create(char *hostname, struct sockaddr_in *srvaddr, int proto, int privileged)
{
struct rpc_xprt *xprt;
struct rpc_clnt *clnt;
@@ -208,6 +208,8 @@ pmap_create(char *hostname, struct socka
if (IS_ERR(xprt))
return (struct rpc_clnt *)xprt;
xprt->addr.sin_port = htons(RPC_PMAP_PORT);
+ if (!privileged)
+ xprt->resvport = 0;

/* printk("pmap: create clnt\n"); */
clnt = rpc_new_client(xprt, hostname,

- Chuck Lever
--
corporate: <cel at netapp dot com>
personal: <chucklever at bigfoot dot com>