Re: [PATCH] NFSD: fix up error returned by write_threads()
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.nfs |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 2026-06-08 at 09:14 -0400, Scott Mayhew wrote:
> Previously, writing 0 to /proc/fs/nfsd/threads would return 0 if the NFS
> server wasn't running. After commit 14282cc3cfa2, -EIO is returned.
> Existing scripts don't expect this behavior.
>
> Add a check to bypass the call to nfsd_svc() when newthreads is 0 and
> the NFS server is already stopped.
>
> Fixes: 14282cc3cfa2 ("NFSD: don't start nfsd if sv_permsocks is empty")
> Signed-off-by: Scott Mayhew <[email protected]>
> ---
> fs/nfsd/nfsctl.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index 04e3954d54bd..ed1a06b4edcd 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -419,6 +419,7 @@ static ssize_t write_threads(struct file *file, char *buf, size_t size)
> char *mesg = buf;
> int rv;
> struct net *net = netns(file);
> + struct nfsd_net *nn = net_generic(net, nfsd_net_id);
>
> if (size > 0) {
> int newthreads;
> @@ -429,7 +430,10 @@ static ssize_t write_threads(struct file *file, char *buf, size_t size)
> return -EINVAL;
> trace_nfsd_ctl_threads(net, newthreads);
> mutex_lock(&nfsd_mutex);
> - rv = nfsd_svc(1, &newthreads, net, file->f_cred, NULL);
> + if (newthreads > 0 || nn->nfsd_serv != NULL)
> + rv = nfsd_svc(1, &newthreads, net, file->f_cred, NULL);
> + else
> + rv = 0;
> mutex_unlock(&nfsd_mutex);
> if (rv < 0)
> return rv;
Reviewed-by: Jeff Layton <[email protected]>