Message ID | 20240719-nfsd-next-v1-1-b6a9a899a908@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | nfsd: don't set SVC_SOCK_ANONYMOUS when creating nfsd sockets | expand |
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> >
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
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> > > >
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>
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)
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(-) --- base-commit: 769d20028f45a4f442cfe558a32faba357a7f5e2 change-id: 20240719-nfsd-next-d9582a2c50c2 Best regards,