nfsd: don't allow setting maxblksize after svc created
J. Bruce Fields [Fri, 6 Aug 2010 22:00:33 +0000 (18:00 -0400)]
It's harmless to set this after the server is created, but also
ineffective, since the value is only used at the time of
svc_create_pooled().  So fail the attempt, in keeping with the pattern
set by write_versions, write_{lease,grace}time and write_recoverydir.

(This could break userspace that tried to write to nfsd/max_block_size
between setting up sockets and starting the server.  However, such code
wouldn't have worked anyway, and I don't know of any examples--rpc.nfsd
in nfs-utils, probably the only user of the interface, doesn't do that.)

Signed-off-by: J. Bruce Fields <bfields@redhat.com>

fs/nfsd/nfsctl.c

index 12f0ee7..b53b1d0 100644 (file)
@@ -1190,7 +1190,7 @@ static ssize_t write_maxblksize(struct file *file, char *buf, size_t size)
                        bsize = NFSSVC_MAXBLKSIZE;
                bsize &= ~(1024-1);
                mutex_lock(&nfsd_mutex);
-               if (nfsd_serv && nfsd_serv->sv_nrthreads) {
+               if (nfsd_serv) {
                        mutex_unlock(&nfsd_mutex);
                        return -EBUSY;
                }