fs/nfsd/nfsctl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
When creating nfsd sockets via the netlink interface, we do want to
register with the portmapper. Don't set SVC_SOCK_ANONYMOUS.
Fixes: 16a471177496 NFSD: add listener-{set,get} netlink command
Reported-by: Steve Dickson <steved@redhat.com>
Cc: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
fs/nfsd/nfsctl.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 9e0ea6fc2aa3..34eb2c2cbcde 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -2069,8 +2069,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
continue;
}
- ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa,
- SVC_SOCK_ANONYMOUS,
+ ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa, 0,
get_current_cred());
/* always save the latest error */
if (ret < 0)
---
base-commit: 769d20028f45a4f442cfe558a32faba357a7f5e2
change-id: 20240719-nfsd-next-d9582a2c50c2
Best regards,
--
Jeff Layton <jlayton@kernel.org>
On Fri, Jul 19, 2024 at 02:55:53PM -0400, Jeff Layton wrote:
> When creating nfsd sockets via the netlink interface, we do want to
> register with the portmapper. Don't set SVC_SOCK_ANONYMOUS.
NFSD's RDMA transports don't register with rpcbind, for example.
> Fixes: 16a471177496 NFSD: add listener-{set,get} netlink command
> Reported-by: Steve Dickson <steved@redhat.com>
> Cc: Lorenzo Bianconi <lorenzo@kernel.org>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
> ---
> fs/nfsd/nfsctl.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index 9e0ea6fc2aa3..34eb2c2cbcde 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -2069,8 +2069,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
> continue;
> }
>
> - ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa,
> - SVC_SOCK_ANONYMOUS,
> + ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa, 0,
> get_current_cred());
> /* always save the latest error */
> if (ret < 0)
>
> ---
> base-commit: 769d20028f45a4f442cfe558a32faba357a7f5e2
> change-id: 20240719-nfsd-next-d9582a2c50c2
>
> Best regards,
> --
> Jeff Layton <jlayton@kernel.org>
>
--
Chuck Lever
On Fri, 2024-07-19 at 15:03 -0400, Chuck Lever wrote:
> On Fri, Jul 19, 2024 at 02:55:53PM -0400, Jeff Layton wrote:
> > When creating nfsd sockets via the netlink interface, we do want to
> > register with the portmapper. Don't set SVC_SOCK_ANONYMOUS.
>
> NFSD's RDMA transports don't register with rpcbind, for example.
>
They still aren't registered with this patch either. After doing
nfsdctl autostart:
[kdevops@kdevops-nfsd ~]$ rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 42104 status
100024 1 tcp 40159 status
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100021 1 udp 46387 nlockmgr
100021 3 udp 46387 nlockmgr
100021 4 udp 46387 nlockmgr
100021 1 tcp 36565 nlockmgr
100021 3 tcp 36565 nlockmgr
100021 4 tcp 36565 nlockmgr
I don't see a need to do anything else here.
>
> > Fixes: 16a471177496 NFSD: add listener-{set,get} netlink command
> > Reported-by: Steve Dickson <steved@redhat.com>
> > Cc: Lorenzo Bianconi <lorenzo@kernel.org>
> > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> > ---
> > fs/nfsd/nfsctl.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> > index 9e0ea6fc2aa3..34eb2c2cbcde 100644
> > --- a/fs/nfsd/nfsctl.c
> > +++ b/fs/nfsd/nfsctl.c
> > @@ -2069,8 +2069,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
> > continue;
> > }
> >
> > - ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa,
> > - SVC_SOCK_ANONYMOUS,
> > + ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa, 0,
> > get_current_cred());
> > /* always save the latest error */
> > if (ret < 0)
> >
> > ---
> > base-commit: 769d20028f45a4f442cfe558a32faba357a7f5e2
> > change-id: 20240719-nfsd-next-d9582a2c50c2
> >
> > Best regards,
> > --
> > Jeff Layton <jlayton@kernel.org>
> >
>
--
Jeff Layton <jlayton@kernel.org>
On Mon, Jul 22, 2024 at 08:32:39AM -0400, Jeff Layton wrote:
> On Fri, 2024-07-19 at 15:03 -0400, Chuck Lever wrote:
> > On Fri, Jul 19, 2024 at 02:55:53PM -0400, Jeff Layton wrote:
> > > When creating nfsd sockets via the netlink interface, we do want to
> > > register with the portmapper. Don't set SVC_SOCK_ANONYMOUS.
> >
> > NFSD's RDMA transports don't register with rpcbind, for example.
> >
>
> They still aren't registered with this patch either. After doing
> nfsdctl autostart:
>
> [kdevops@kdevops-nfsd ~]$ rpcinfo -p
> program vers proto port service
> 100000 4 tcp 111 portmapper
> 100000 3 tcp 111 portmapper
> 100000 2 tcp 111 portmapper
> 100000 4 udp 111 portmapper
> 100000 3 udp 111 portmapper
> 100000 2 udp 111 portmapper
> 100024 1 udp 42104 status
> 100024 1 tcp 40159 status
> 100003 3 udp 2049 nfs
> 100227 3 udp 2049 nfs_acl
> 100003 3 tcp 2049 nfs
> 100003 4 tcp 2049 nfs
> 100227 3 tcp 2049 nfs_acl
> 100021 1 udp 46387 nlockmgr
> 100021 3 udp 46387 nlockmgr
> 100021 4 udp 46387 nlockmgr
> 100021 1 tcp 36565 nlockmgr
> 100021 3 tcp 36565 nlockmgr
> 100021 4 tcp 36565 nlockmgr
>
> I don't see a need to do anything else here.
Fair enough. Applied to nfsd-fixes (for v6.11-rc).
Not registering RDMA transports with rpcbind was done to mimic
Solaris behavior, IIRC. I don't remember any functional reason not
to register them.
> > > Fixes: 16a471177496 NFSD: add listener-{set,get} netlink command
> > > Reported-by: Steve Dickson <steved@redhat.com>
> > > Cc: Lorenzo Bianconi <lorenzo@kernel.org>
> > > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> > > ---
> > > fs/nfsd/nfsctl.c | 3 +--
> > > 1 file changed, 1 insertion(+), 2 deletions(-)
> > >
> > > diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> > > index 9e0ea6fc2aa3..34eb2c2cbcde 100644
> > > --- a/fs/nfsd/nfsctl.c
> > > +++ b/fs/nfsd/nfsctl.c
> > > @@ -2069,8 +2069,7 @@ int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info)
> > > continue;
> > > }
> > >
> > > - ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa,
> > > - SVC_SOCK_ANONYMOUS,
> > > + ret = svc_xprt_create_from_sa(serv, xcl_name, net, sa, 0,
> > > get_current_cred());
> > > /* always save the latest error */
> > > if (ret < 0)
> > >
> > > ---
> > > base-commit: 769d20028f45a4f442cfe558a32faba357a7f5e2
> > > change-id: 20240719-nfsd-next-d9582a2c50c2
> > >
> > > Best regards,
> > > --
> > > Jeff Layton <jlayton@kernel.org>
> > >
> >
>
> --
> Jeff Layton <jlayton@kernel.org>
--
Chuck Lever
On Sat, 20 Jul 2024, Chuck Lever wrote: > On Fri, Jul 19, 2024 at 02:55:53PM -0400, Jeff Layton wrote: > > When creating nfsd sockets via the netlink interface, we do want to > > register with the portmapper. Don't set SVC_SOCK_ANONYMOUS. > > NFSD's RDMA transports don't register with rpcbind, for example. For RDMA, what does inet->sk_family and in->sk_protocol contain in svc_setup_socket()? Could that code detect that it doesn't make sense to register the socket with rpcbind? NeilBrown
© 2016 - 2026 Red Hat, Inc.