Skip to content

Commit 14282cc

Browse files
Olga Kornievskaiachucklever
authored andcommitted
NFSD: don't start nfsd if sv_permsocks is empty
Previously, while trying to create a server instance, if no listening sockets were present then default parameter udp and tcp listeners were created. It's unclear what purpose was of starting these listeners were and how this could have been triggered by the userland setup. This patch proposed to ensure the reverse that we never end in a situation where no listener sockets are created and we are trying to create nfsd threads. The problem it solves is: when nfs.conf only has tcp=n (and nothing else for the choice of transports), nfsdctl would still start the server and create udp and tcp listeners. Signed-off-by: Olga Kornievskaia <okorniev@redhat.com> Reviewed-by: NeilBrown <neil@brown.name> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
1 parent b0f8e1f commit 14282cc

1 file changed

Lines changed: 5 additions & 23 deletions

File tree

fs/nfsd/nfssvc.c

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -249,27 +249,6 @@ int nfsd_nrthreads(struct net *net)
249249
return rv;
250250
}
251251

252-
static int nfsd_init_socks(struct net *net, const struct cred *cred)
253-
{
254-
int error;
255-
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
256-
257-
if (!list_empty(&nn->nfsd_serv->sv_permsocks))
258-
return 0;
259-
260-
error = svc_xprt_create(nn->nfsd_serv, "udp", net, PF_INET, NFS_PORT,
261-
SVC_SOCK_DEFAULTS, cred);
262-
if (error < 0)
263-
return error;
264-
265-
error = svc_xprt_create(nn->nfsd_serv, "tcp", net, PF_INET, NFS_PORT,
266-
SVC_SOCK_DEFAULTS, cred);
267-
if (error < 0)
268-
return error;
269-
270-
return 0;
271-
}
272-
273252
static int nfsd_users = 0;
274253

275254
static int nfsd_startup_generic(void)
@@ -377,9 +356,12 @@ static int nfsd_startup_net(struct net *net, const struct cred *cred)
377356
ret = nfsd_startup_generic();
378357
if (ret)
379358
return ret;
380-
ret = nfsd_init_socks(net, cred);
381-
if (ret)
359+
360+
if (list_empty(&nn->nfsd_serv->sv_permsocks)) {
361+
pr_warn("NFSD: Failed to start, no listeners configured.\n");
362+
ret = -EIO;
382363
goto out_socks;
364+
}
383365

384366
if (nfsd_needs_lockd(nn) && !nn->lockd_up) {
385367
ret = lockd_up(net, cred);

0 commit comments

Comments
 (0)