Lines Matching refs:nn

60  * nfsd_mutex protects nn->nfsd_serv -- both the pointer itself and some members
151 int nfsd_vers(struct nfsd_net *nn, int vers, enum vers_op change)
157 nn->nfsd_versions[vers] = nfsd_support_version(vers);
160 nn->nfsd_versions[vers] = false;
163 return nn->nfsd_versions[vers];
171 nfsd_adjust_nfsd_versions4(struct nfsd_net *nn)
176 if (nn->nfsd4_minorversions[i])
179 nfsd_vers(nn, 4, NFSD_CLEAR);
182 int nfsd_minorversion(struct nfsd_net *nn, u32 minorversion, enum vers_op change)
190 nfsd_vers(nn, 4, NFSD_SET);
191 nn->nfsd4_minorversions[minorversion] =
192 nfsd_vers(nn, 4, NFSD_TEST);
195 nn->nfsd4_minorversions[minorversion] = false;
196 nfsd_adjust_nfsd_versions4(nn);
199 return nn->nfsd4_minorversions[minorversion];
202 nfsd_vers(nn, 4, NFSD_AVAIL);
209 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
211 return (nn && percpu_ref_tryget_live(&nn->nfsd_net_ref));
216 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
218 percpu_ref_put(&nn->nfsd_net_ref);
223 struct nfsd_net *nn = container_of(ref, struct nfsd_net, nfsd_net_ref);
225 complete(&nn->nfsd_net_confirm_done);
230 struct nfsd_net *nn = container_of(ref, struct nfsd_net, nfsd_net_ref);
232 complete(&nn->nfsd_net_free_done);
243 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
246 if (nn->nfsd_serv)
247 rv = nn->nfsd_serv->sv_nrthreads;
255 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
257 if (!list_empty(&nn->nfsd_serv->sv_permsocks))
260 error = svc_xprt_create(nn->nfsd_serv, "udp", net, PF_INET, NFS_PORT,
265 error = svc_xprt_create(nn->nfsd_serv, "tcp", net, PF_INET, NFS_PORT,
307 static bool nfsd_needs_lockd(struct nfsd_net *nn)
309 return nfsd_vers(nn, 2, NFSD_TEST) || nfsd_vers(nn, 3, NFSD_TEST);
315 * @nn: NFS net namespace
320 void nfsd_copy_write_verifier(__be32 verf[2], struct nfsd_net *nn)
325 seq = read_seqbegin(&nn->writeverf_lock);
326 memcpy(verf, nn->writeverf, sizeof(nn->writeverf));
327 } while (read_seqretry(&nn->writeverf_lock, seq));
330 static void nfsd_reset_write_verifier_locked(struct nfsd_net *nn)
340 verf = siphash_2u64(now.tv_sec, now.tv_nsec, &nn->siphash_key);
341 memcpy(nn->writeverf, &verf, sizeof(nn->writeverf));
346 * @nn: NFS net namespace
348 * This function updates the ->writeverf field of @nn. This field
357 void nfsd_reset_write_verifier(struct nfsd_net *nn)
359 write_seqlock(&nn->writeverf_lock);
360 nfsd_reset_write_verifier_locked(nn);
361 write_sequnlock(&nn->writeverf_lock);
371 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
374 if (nn->nfsd_net_up)
384 if (nfsd_needs_lockd(nn) && !nn->lockd_up) {
388 nn->lockd_up = true;
395 ret = nfsd_reply_cache_init(nn);
404 nfsd4_ssc_init_umount_work(nn);
406 nn->nfsd_net_up = true;
410 nfsd_reply_cache_shutdown(nn);
414 if (nn->lockd_up) {
416 nn->lockd_up = false;
425 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
427 if (!nn->nfsd_net_up)
430 percpu_ref_kill_and_confirm(&nn->nfsd_net_ref, nfsd_net_done);
431 wait_for_completion(&nn->nfsd_net_confirm_done);
435 nfsd_reply_cache_shutdown(nn);
437 if (nn->lockd_up) {
439 nn->lockd_up = false;
442 wait_for_completion(&nn->nfsd_net_free_done);
443 percpu_ref_exit(&nn->nfsd_net_ref);
445 nn->nfsd_net_up = false;
456 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
459 if (event != NETDEV_DOWN || !nn->nfsd_serv)
463 if (nn->nfsd_serv) {
467 svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin);
486 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
489 if (event != NETDEV_DOWN || !nn->nfsd_serv)
493 if (nn->nfsd_serv) {
499 svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin6);
521 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
522 struct svc_serv *serv = nn->nfsd_serv;
527 nn->nfsd_serv = NULL;
552 void nfsd_reset_versions(struct nfsd_net *nn)
557 if (nfsd_vers(nn, i, NFSD_TEST))
562 nfsd_vers(nn, i, NFSD_SET);
565 while (nfsd_minorversion(nn, minor, NFSD_SET) >= 0)
593 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
597 serv = nn->nfsd_serv;
619 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
623 if (nn->nfsd_serv)
626 error = percpu_ref_init(&nn->nfsd_net_ref, nfsd_net_free,
630 init_completion(&nn->nfsd_net_free_done);
631 init_completion(&nn->nfsd_net_confirm_done);
635 nfsd_reset_versions(nn);
637 &nn->nfsd_svcstats,
648 nn->nfsd_serv = serv;
658 nfsd_reset_write_verifier(nn);
664 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
666 if (nn->nfsd_serv == NULL)
669 return nn->nfsd_serv->sv_nrpools;
674 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
675 struct svc_serv *serv = nn->nfsd_serv;
702 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
706 if (nn->nfsd_serv == NULL || n <= 0)
714 return svc_set_num_threads(nn->nfsd_serv, NULL, nthreads[0]);
716 if (n > nn->nfsd_serv->sv_nrpools)
717 n = nn->nfsd_serv->sv_nrpools;
740 err = svc_set_num_threads(nn->nfsd_serv,
741 &nn->nfsd_serv->sv_pools[i],
748 for (i = n; i < nn->nfsd_serv->sv_nrpools; ++i) {
749 err = svc_set_num_threads(nn->nfsd_serv,
750 &nn->nfsd_serv->sv_pools[i],
774 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
781 strscpy(nn->nfsd_name, scope ? scope : utsname()->nodename,
782 sizeof(nn->nfsd_name));
787 serv = nn->nfsd_serv;
829 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
833 nfsd_vers(nn, rqstp->rq_vers, NFSD_TEST)))
839 nfsd_vers(nn, i, NFSD_TEST)) {
849 nfsd_vers(nn, i, NFSD_TEST)) {
874 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
877 if (likely(nfsd_vers(nn, rqstp->rq_vers, NFSD_TEST)))
882 if (nfsd_vers(nn, i, NFSD_TEST)) {
891 if (nfsd_vers(nn, i, NFSD_TEST)) {
908 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
927 nfsd_file_net_dispose(nn);