Lines Matching refs:nn

62  * nfsd_mutex protects nn->nfsd_serv -- both the pointer itself and the members
66 * If (out side the lock) nn->nfsd_serv is non-NULL, then it must point to a
188 nfsd_netns_free_versions(struct nfsd_net *nn)
190 kfree(nn->nfsd_versions);
191 kfree(nn->nfsd4_minorversions);
192 nn->nfsd_versions = NULL;
193 nn->nfsd4_minorversions = NULL;
197 nfsd_netns_init_versions(struct nfsd_net *nn)
199 if (!nn->nfsd_versions) {
200 nn->nfsd_versions = nfsd_alloc_versions();
201 nn->nfsd4_minorversions = nfsd_alloc_minorversions();
202 if (!nn->nfsd_versions || !nn->nfsd4_minorversions)
203 nfsd_netns_free_versions(nn);
207 int nfsd_vers(struct nfsd_net *nn, int vers, enum vers_op change)
213 if (nn->nfsd_versions)
214 nn->nfsd_versions[vers] = nfsd_support_version(vers);
217 nfsd_netns_init_versions(nn);
218 if (nn->nfsd_versions)
219 nn->nfsd_versions[vers] = false;
222 if (nn->nfsd_versions)
223 return nn->nfsd_versions[vers];
232 nfsd_adjust_nfsd_versions4(struct nfsd_net *nn)
237 if (nn->nfsd4_minorversions[i])
240 nfsd_vers(nn, 4, NFSD_CLEAR);
243 int nfsd_minorversion(struct nfsd_net *nn, u32 minorversion, enum vers_op change)
251 if (nn->nfsd4_minorversions) {
252 nfsd_vers(nn, 4, NFSD_SET);
253 nn->nfsd4_minorversions[minorversion] =
254 nfsd_vers(nn, 4, NFSD_TEST);
258 nfsd_netns_init_versions(nn);
259 if (nn->nfsd4_minorversions) {
260 nn->nfsd4_minorversions[minorversion] = false;
261 nfsd_adjust_nfsd_versions4(nn);
265 if (nn->nfsd4_minorversions)
266 return nn->nfsd4_minorversions[minorversion];
267 return nfsd_vers(nn, 4, NFSD_TEST);
270 nfsd_vers(nn, 4, NFSD_AVAIL);
283 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
286 if (nn->nfsd_serv)
287 rv = nn->nfsd_serv->sv_nrthreads;
295 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
297 if (!list_empty(&nn->nfsd_serv->sv_permsocks))
300 error = svc_create_xprt(nn->nfsd_serv, "udp", net, PF_INET, NFS_PORT,
305 error = svc_create_xprt(nn->nfsd_serv, "tcp", net, PF_INET, NFS_PORT,
347 static bool nfsd_needs_lockd(struct nfsd_net *nn)
349 return nfsd_vers(nn, 2, NFSD_TEST) || nfsd_vers(nn, 3, NFSD_TEST);
352 void nfsd_copy_boot_verifier(__be32 verf[2], struct nfsd_net *nn)
357 read_seqbegin_or_lock(&nn->boot_lock, &seq);
363 verf[0] = (__force __be32)nn->nfssvc_boot.tv_sec;
364 verf[1] = (__force __be32)nn->nfssvc_boot.tv_nsec;
365 } while (need_seqretry(&nn->boot_lock, seq));
366 done_seqretry(&nn->boot_lock, seq);
369 static void nfsd_reset_boot_verifier_locked(struct nfsd_net *nn)
371 ktime_get_real_ts64(&nn->nfssvc_boot);
374 void nfsd_reset_boot_verifier(struct nfsd_net *nn)
376 write_seqlock(&nn->boot_lock);
377 nfsd_reset_boot_verifier_locked(nn);
378 write_sequnlock(&nn->boot_lock);
383 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
386 if (nn->nfsd_net_up)
396 if (nfsd_needs_lockd(nn) && !nn->lockd_up) {
400 nn->lockd_up = true;
410 nn->nfsd_net_up = true;
416 if (nn->lockd_up) {
418 nn->lockd_up = false;
427 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
431 if (nn->lockd_up) {
433 nn->lockd_up = false;
435 nn->nfsd_net_up = false;
445 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
449 !atomic_inc_not_zero(&nn->ntf_refcnt))
452 if (nn->nfsd_serv) {
456 svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin);
458 atomic_dec(&nn->ntf_refcnt);
459 wake_up(&nn->ntf_wq);
476 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
480 !atomic_inc_not_zero(&nn->ntf_refcnt))
483 if (nn->nfsd_serv) {
489 svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin6);
491 atomic_dec(&nn->ntf_refcnt);
492 wake_up(&nn->ntf_wq);
507 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
509 atomic_dec(&nn->ntf_refcnt);
517 wait_event(nn->ntf_wq, atomic_read(&nn->ntf_refcnt) == 0);
526 if (!nn->nfsd_net_up)
534 void nfsd_reset_versions(struct nfsd_net *nn)
539 if (nfsd_vers(nn, i, NFSD_TEST))
544 nfsd_vers(nn, i, NFSD_SET);
547 while (nfsd_minorversion(nn, minor, NFSD_SET) >= 0)
605 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
609 nn->nfsd_serv = NULL;
610 complete(&nn->nfsd_shutdown_complete);
615 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
619 serv = nn->nfsd_serv;
631 wait_for_completion(&nn->nfsd_shutdown_complete);
642 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
645 if (nn->nfsd_serv) {
646 svc_get(nn->nfsd_serv);
651 nfsd_reset_versions(nn);
652 nn->nfsd_serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize,
654 if (nn->nfsd_serv == NULL)
656 init_completion(&nn->nfsd_shutdown_complete);
658 nn->nfsd_serv->sv_maxconn = nn->max_connections;
659 error = svc_bind(nn->nfsd_serv, net);
661 svc_destroy(nn->nfsd_serv);
674 atomic_inc(&nn->ntf_refcnt);
675 nfsd_reset_boot_verifier(nn);
681 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
683 if (nn->nfsd_serv == NULL)
686 return nn->nfsd_serv->sv_nrpools;
692 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
694 if (nn->nfsd_serv != NULL) {
695 for (i = 0; i < nn->nfsd_serv->sv_nrpools && i < n; i++)
696 nthreads[i] = nn->nfsd_serv->sv_pools[i].sp_nrthreads;
704 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
705 int destroy = (nn->nfsd_serv->sv_nrthreads == 1);
708 svc_shutdown_net(nn->nfsd_serv, net);
709 svc_destroy(nn->nfsd_serv);
719 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
723 if (nn->nfsd_serv == NULL || n <= 0)
726 if (n > nn->nfsd_serv->sv_nrpools)
727 n = nn->nfsd_serv->sv_nrpools;
756 svc_get(nn->nfsd_serv);
758 err = nn->nfsd_serv->sv_ops->svo_setup(nn->nfsd_serv,
759 &nn->nfsd_serv->sv_pools[i], nthreads[i]);
777 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
786 if (nrservs == 0 && nn->nfsd_serv == NULL)
789 strlcpy(nn->nfsd_name, utsname()->nodename,
790 sizeof(nn->nfsd_name));
796 nfsd_up_before = nn->nfsd_net_up;
801 error = nn->nfsd_serv->sv_ops->svo_setup(nn->nfsd_serv,
805 /* We are holding a reference to nn->nfsd_serv which
809 error = nn->nfsd_serv->sv_nrthreads - 1;
846 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
850 nfsd_vers(nn, rqstp->rq_vers, NFSD_TEST)))
856 nfsd_vers(nn, i, NFSD_TEST)) {
866 nfsd_vers(nn, i, NFSD_TEST)) {
891 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
894 if (likely(nfsd_vers(nn, rqstp->rq_vers, NFSD_TEST)))
899 if (nfsd_vers(nn, i, NFSD_TEST)) {
908 if (nfsd_vers(nn, i, NFSD_TEST)) {
925 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
960 rqstp->rq_server->sv_maxconn = nn->max_connections;
1111 struct nfsd_net *nn = net_generic(inode->i_sb->s_fs_info, nfsd_net_id);
1114 if (nn->nfsd_serv == NULL) {
1119 svc_get(nn->nfsd_serv);
1120 ret = svc_pool_stats_open(nn->nfsd_serv, file);