On Wed, Oct 06, 2021 at 10:43:14AM -0400, Benjamin Coddington wrote: > On 6 Oct 2021, at 10:33, J. Bruce Fields wrote: > > >On Wed, Oct 06, 2021 at 10:18:05AM -0400, Benjamin Coddington wrote: > >>If nfsd has existing listening sockets without any processes, > >>then an error > >>returned from svc_create_xprt() for an additional transport will > >>remove > >>those existing listeners. We're seeing this in practice when > >>userspace > >>attempts to create rpcrdma transports without having the rpcrdma > >>modules > >>present before creating nfsd kernel processes. Fix this by > >>checking for > >>existing sockets before callingn nfsd_destroy(). > > > >That seems like an improvement. > > > >I'm curious, though, what the rpc.nfsd behavior is on partial failure. > >And what do we want it to be? > > > >If a user runs rpc.nfsd expecting it to start up tcp and rdma, but > >rdma > >fails, do we want rpc.nfsd to succeed or fail? Should it exit > >with nfsd > >running or not? > > I lean toward having it fail - but I think that's a different patch for > rpc.nfsd. Right now rpc.nfsd exists without error, but you end up > without > any listeners at all. > > Do you want a patch for rpc.nfsd instead? I think we need the kernel fix. I agree that it's weird to shut down the server on a failure to add a listener--better to leave usrespace to decide if it wants to do that. --b.