return -EINVAL;
                trace_nfsd_ctl_threads(net, newthreads);
                mutex_lock(&nfsd_mutex);
-               rv = nfsd_svc(newthreads, net, file->f_cred);
+               rv = nfsd_svc(newthreads, net, file->f_cred, NULL);
                mutex_unlock(&nfsd_mutex);
                if (rv < 0)
                        return rv;
 
 /*
  * Function prototypes.
  */
-int            nfsd_svc(int nrservs, struct net *net, const struct cred *cred);
+int            nfsd_svc(int nrservs, struct net *net, const struct cred *cred, const char *scope);
 int            nfsd_dispatch(struct svc_rqst *rqstp);
 
 int            nfsd_nrthreads(struct net *);
 
  * this is the first time nrservs is nonzero.
  */
 int
-nfsd_svc(int nrservs, struct net *net, const struct cred *cred)
+nfsd_svc(int nrservs, struct net *net, const struct cred *cred, const char *scope)
 {
        int     error;
        struct nfsd_net *nn = net_generic(net, nfsd_net_id);
        if (nrservs == 0 && nn->nfsd_serv == NULL)
                goto out;
 
-       strscpy(nn->nfsd_name, utsname()->nodename,
+       strscpy(nn->nfsd_name, scope ? scope : utsname()->nodename,
                sizeof(nn->nfsd_name));
 
        error = nfsd_create_serv(net);