[PATCH] NFSD: fix up error returned by write_threads()
Scott Mayhew <[email protected]>
| Newsgroups | gmane.linux.nfs |
|---|---|
| Message-ID | <[email protected]> |
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;
--
2.54.0