Lines Matching refs:nn

83 void nfsd4_end_grace(struct nfsd_net *nn);
84 static void _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_state *cps);
146 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in get_client_locked() local
148 lockdep_assert_held(&nn->client_lock); in get_client_locked()
160 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in renew_client_locked() local
171 list_move_tail(&clp->cl_lru, &nn->client_lru); in renew_client_locked()
177 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in put_client_renew_locked() local
179 lockdep_assert_held(&nn->client_lock); in put_client_renew_locked()
191 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in put_client_renew() local
193 if (!atomic_dec_and_lock(&clp->cl_rpc_users, &nn->client_lock)) in put_client_renew()
199 spin_unlock(&nn->client_lock); in put_client_renew()
218 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in nfsd4_put_session_locked() local
220 lockdep_assert_held(&nn->client_lock); in nfsd4_put_session_locked()
230 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in nfsd4_put_session() local
232 spin_lock(&nn->client_lock); in nfsd4_put_session()
234 spin_unlock(&nn->client_lock); in nfsd4_put_session()
239 struct nfsd_net *nn) in find_blocked_lock() argument
243 spin_lock(&nn->blocked_locks_lock); in find_blocked_lock()
252 spin_unlock(&nn->blocked_locks_lock); in find_blocked_lock()
260 struct nfsd_net *nn) in find_or_allocate_block() argument
264 nbl = find_blocked_lock(lo, fh, nn); in find_or_allocate_block()
292 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in remove_blocked_locks() local
297 spin_lock(&nn->blocked_locks_lock); in remove_blocked_locks()
305 spin_unlock(&nn->blocked_locks_lock); in remove_blocked_locks()
759 static int nfs4_init_cp_state(struct nfsd_net *nn, copy_stateid_t *stid, in nfs4_init_cp_state() argument
764 stid->stid.si_opaque.so_clid.cl_boot = (u32)nn->boot_time; in nfs4_init_cp_state()
765 stid->stid.si_opaque.so_clid.cl_id = nn->s2s_cp_cl_id; in nfs4_init_cp_state()
769 spin_lock(&nn->s2s_cp_lock); in nfs4_init_cp_state()
770 new_id = idr_alloc_cyclic(&nn->s2s_cp_stateids, stid, 0, 0, GFP_NOWAIT); in nfs4_init_cp_state()
773 spin_unlock(&nn->s2s_cp_lock); in nfs4_init_cp_state()
780 int nfs4_init_copy_state(struct nfsd_net *nn, struct nfsd4_copy *copy) in nfs4_init_copy_state() argument
782 return nfs4_init_cp_state(nn, &copy->cp_stateid, NFS4_COPY_STID); in nfs4_init_copy_state()
785 struct nfs4_cpntf_state *nfs4_alloc_init_cpntf_state(struct nfsd_net *nn, in nfs4_alloc_init_cpntf_state() argument
795 if (!nfs4_init_cp_state(nn, &cps->cp_stateid, NFS4_COPYNOTIFY_STID)) in nfs4_alloc_init_cpntf_state()
797 spin_lock(&nn->s2s_cp_lock); in nfs4_alloc_init_cpntf_state()
799 spin_unlock(&nn->s2s_cp_lock); in nfs4_alloc_init_cpntf_state()
808 struct nfsd_net *nn; in nfs4_free_copy_state() local
811 nn = net_generic(copy->cp_clp->net, nfsd_net_id); in nfs4_free_copy_state()
812 spin_lock(&nn->s2s_cp_lock); in nfs4_free_copy_state()
813 idr_remove(&nn->s2s_cp_stateids, in nfs4_free_copy_state()
815 spin_unlock(&nn->s2s_cp_lock); in nfs4_free_copy_state()
821 struct nfsd_net *nn; in nfs4_free_cpntf_statelist() local
823 nn = net_generic(net, nfsd_net_id); in nfs4_free_cpntf_statelist()
824 spin_lock(&nn->s2s_cp_lock); in nfs4_free_cpntf_statelist()
828 _free_cpntf_state_locked(nn, cps); in nfs4_free_cpntf_statelist()
830 spin_unlock(&nn->s2s_cp_lock); in nfs4_free_cpntf_statelist()
1509 struct nfsd_net *nn = net_generic(oo->oo_owner.so_client->net, in release_last_closed_stateid() local
1513 spin_lock(&nn->client_lock); in release_last_closed_stateid()
1519 spin_unlock(&nn->client_lock); in release_last_closed_stateid()
1648 static u32 nfsd4_get_drc_mem(struct nfsd4_channel_attrs *ca, struct nfsd_net *nn) in nfsd4_get_drc_mem() argument
1675 scale_factor = max_t(unsigned int, 8, nn->nfsd_serv->sv_nrthreads); in nfsd4_get_drc_mem()
1842 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in init_session() local
1855 list_add(&new->se_hash, &nn->sessionid_hashtbl[idx]); in init_session()
1880 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in __find_in_sessionid_hashtbl() local
1882 lockdep_assert_held(&nn->client_lock); in __find_in_sessionid_hashtbl()
1887 list_for_each_entry(elem, &nn->sessionid_hashtbl[idx], se_hash) { in __find_in_sessionid_hashtbl()
1921 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in unhash_session() local
1923 lockdep_assert_held(&nn->client_lock); in unhash_session()
1933 STALE_CLIENTID(clientid_t *clid, struct nfsd_net *nn) in STALE_CLIENTID() argument
1940 if (clid->cl_boot == (u32)nn->boot_time) in STALE_CLIENTID()
2036 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in unhash_client_locked() local
2039 lockdep_assert_held(&nn->client_lock); in unhash_client_locked()
2047 rb_erase(&clp->cl_namenode, &nn->conf_name_tree); in unhash_client_locked()
2049 rb_erase(&clp->cl_namenode, &nn->unconf_name_tree); in unhash_client_locked()
2061 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in unhash_client() local
2063 spin_lock(&nn->client_lock); in unhash_client()
2065 spin_unlock(&nn->client_lock); in unhash_client()
2135 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in inc_reclaim_complete() local
2137 if (!nn->track_reclaim_completes) in inc_reclaim_complete()
2139 if (!nfsd4_find_reclaim_client(clp->cl_name, nn)) in inc_reclaim_complete()
2141 if (atomic_inc_return(&nn->nr_reclaim_complete) == in inc_reclaim_complete()
2142 nn->reclaim_str_hashtbl_size) { in inc_reclaim_complete()
2145 nfsd4_end_grace(nn); in inc_reclaim_complete()
2286 static void gen_confirm(struct nfs4_client *clp, struct nfsd_net *nn) in gen_confirm() argument
2295 verf[1] = (__force __be32)nn->clverifier_counter++; in gen_confirm()
2299 static void gen_clid(struct nfs4_client *clp, struct nfsd_net *nn) in gen_clid() argument
2301 clp->cl_clientid.cl_boot = (u32)nn->boot_time; in gen_clid()
2302 clp->cl_clientid.cl_id = nn->clientid_counter++; in gen_clid()
2303 gen_confirm(clp, nn); in gen_clid()
2653 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in force_expire_client() local
2656 spin_lock(&nn->client_lock); in force_expire_client()
2658 spin_unlock(&nn->client_lock); in force_expire_client()
2661 spin_lock(&nn->client_lock); in force_expire_client()
2665 spin_unlock(&nn->client_lock); in force_expire_client()
2711 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in create_client() local
2722 gen_clid(clp, nn); in create_client()
2731 clp->cl_nfsd_dentry = nfsd_client_mkdir(nn, &clp->cl_nfsdfs, in create_client()
2732 clp->cl_clientid.cl_id - nn->clientid_base, in create_client()
2785 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in add_to_unconfirmed() local
2787 lockdep_assert_held(&nn->client_lock); in add_to_unconfirmed()
2790 add_clp_to_name_tree(clp, &nn->unconf_name_tree); in add_to_unconfirmed()
2792 list_add(&clp->cl_idhash, &nn->unconf_id_hashtbl[idhashval]); in add_to_unconfirmed()
2800 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); in move_to_confirmed() local
2802 lockdep_assert_held(&nn->client_lock); in move_to_confirmed()
2805 list_move(&clp->cl_idhash, &nn->conf_id_hashtbl[idhashval]); in move_to_confirmed()
2806 rb_erase(&clp->cl_namenode, &nn->unconf_name_tree); in move_to_confirmed()
2807 add_clp_to_name_tree(clp, &nn->conf_name_tree); in move_to_confirmed()
2830 find_confirmed_client(clientid_t *clid, bool sessions, struct nfsd_net *nn) in find_confirmed_client() argument
2832 struct list_head *tbl = nn->conf_id_hashtbl; in find_confirmed_client()
2834 lockdep_assert_held(&nn->client_lock); in find_confirmed_client()
2839 find_unconfirmed_client(clientid_t *clid, bool sessions, struct nfsd_net *nn) in find_unconfirmed_client() argument
2841 struct list_head *tbl = nn->unconf_id_hashtbl; in find_unconfirmed_client()
2843 lockdep_assert_held(&nn->client_lock); in find_unconfirmed_client()
2853 find_confirmed_client_by_name(struct xdr_netobj *name, struct nfsd_net *nn) in find_confirmed_client_by_name() argument
2855 lockdep_assert_held(&nn->client_lock); in find_confirmed_client_by_name()
2856 return find_clp_in_name_tree(name, &nn->conf_name_tree); in find_confirmed_client_by_name()
2860 find_unconfirmed_client_by_name(struct xdr_netobj *name, struct nfsd_net *nn) in find_unconfirmed_client_by_name() argument
2862 lockdep_assert_held(&nn->client_lock); in find_unconfirmed_client_by_name()
2863 return find_clp_in_name_tree(name, &nn->unconf_name_tree); in find_unconfirmed_client_by_name()
3073 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_exchange_id() local
3135 spin_lock(&nn->client_lock); in nfsd4_exchange_id()
3136 conf = find_confirmed_client_by_name(&exid->clname, nn); in nfsd4_exchange_id()
3183 unconf = find_unconfirmed_client_by_name(&exid->clname, nn); in nfsd4_exchange_id()
3212 spin_unlock(&nn->client_lock); in nfsd4_exchange_id()
3280 static __be32 check_forechannel_attrs(struct nfsd4_channel_attrs *ca, struct nfsd_net *nn) in check_forechannel_attrs() argument
3282 u32 maxrpc = nn->nfsd_serv->sv_max_mesg; in check_forechannel_attrs()
3305 ca->maxreqs = nfsd4_get_drc_mem(ca, nn); in check_forechannel_attrs()
3371 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_create_session() local
3378 status = check_forechannel_attrs(&cr_ses->fore_channel, nn); in nfsd4_create_session()
3392 spin_lock(&nn->client_lock); in nfsd4_create_session()
3393 unconf = find_unconfirmed_client(&cr_ses->clientid, true, nn); in nfsd4_create_session()
3394 conf = find_confirmed_client(&cr_ses->clientid, true, nn); in nfsd4_create_session()
3424 old = find_confirmed_client_by_name(&unconf->cl_name, nn); in nfsd4_create_session()
3454 spin_unlock(&nn->client_lock); in nfsd4_create_session()
3462 spin_unlock(&nn->client_lock); in nfsd4_create_session()
3493 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_backchannel_ctl() local
3499 spin_lock(&nn->client_lock); in nfsd4_backchannel_ctl()
3502 spin_unlock(&nn->client_lock); in nfsd4_backchannel_ctl()
3559 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_bind_conn_to_session() local
3563 spin_lock(&nn->client_lock); in nfsd4_bind_conn_to_session()
3565 spin_unlock(&nn->client_lock); in nfsd4_bind_conn_to_session()
3613 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_destroy_session() local
3622 spin_lock(&nn->client_lock); in nfsd4_destroy_session()
3633 spin_unlock(&nn->client_lock); in nfsd4_destroy_session()
3637 spin_lock(&nn->client_lock); in nfsd4_destroy_session()
3642 spin_unlock(&nn->client_lock); in nfsd4_destroy_session()
3736 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_sequence() local
3749 spin_lock(&nn->client_lock); in nfsd4_sequence()
3839 spin_unlock(&nn->client_lock); in nfsd4_sequence()
3871 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_destroy_clientid() local
3873 spin_lock(&nn->client_lock); in nfsd4_destroy_clientid()
3874 unconf = find_unconfirmed_client(&dc->clientid, true, nn); in nfsd4_destroy_clientid()
3875 conf = find_confirmed_client(&dc->clientid, true, nn); in nfsd4_destroy_clientid()
3900 spin_unlock(&nn->client_lock); in nfsd4_destroy_clientid()
3956 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_setclientid() local
3962 spin_lock(&nn->client_lock); in nfsd4_setclientid()
3963 conf = find_confirmed_client_by_name(&clname, nn); in nfsd4_setclientid()
3974 unconf = find_unconfirmed_client_by_name(&clname, nn); in nfsd4_setclientid()
3980 gen_confirm(new, nn); in nfsd4_setclientid()
3991 spin_unlock(&nn->client_lock); in nfsd4_setclientid()
4012 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_setclientid_confirm() local
4014 if (STALE_CLIENTID(clid, nn)) in nfsd4_setclientid_confirm()
4017 spin_lock(&nn->client_lock); in nfsd4_setclientid_confirm()
4018 conf = find_confirmed_client(clid, false, nn); in nfsd4_setclientid_confirm()
4019 unconf = find_unconfirmed_client(clid, false, nn); in nfsd4_setclientid_confirm()
4047 old = find_confirmed_client_by_name(&unconf->cl_name, nn); in nfsd4_setclientid_confirm()
4066 spin_unlock(&nn->client_lock); in nfsd4_setclientid_confirm()
4068 spin_lock(&nn->client_lock); in nfsd4_setclientid_confirm()
4071 spin_unlock(&nn->client_lock); in nfsd4_setclientid_confirm()
4403 struct nfsd_net *nn = net_generic(s->st_stid.sc_client->net, in move_to_close_lru() local
4425 spin_lock(&nn->client_lock); in move_to_close_lru()
4428 list_move_tail(&oo->oo_close_lru, &nn->close_lru); in move_to_close_lru()
4430 spin_unlock(&nn->client_lock); in move_to_close_lru()
4511 struct nfsd_net *nn = net_generic(dp->dl_stid.sc_client->net, in nfsd4_cb_recall_prepare() local
4526 list_add_tail(&dp->dl_recall_lru, &nn->del_recall_lru); in nfsd4_cb_recall_prepare()
4665 struct nfsd_net *nn, in lookup_clientid() argument
4677 if (STALE_CLIENTID(clid, nn)) in lookup_clientid()
4686 spin_lock(&nn->client_lock); in lookup_clientid()
4687 found = find_confirmed_client(clid, sessions, nn); in lookup_clientid()
4689 spin_unlock(&nn->client_lock); in lookup_clientid()
4693 spin_unlock(&nn->client_lock); in lookup_clientid()
4702 struct nfsd4_open *open, struct nfsd_net *nn) in nfsd4_process_open1() argument
4710 if (STALE_CLIENTID(&open->op_clientid, nn)) in nfsd4_process_open1()
4720 status = lookup_clientid(clientid, cstate, nn, false); in nfsd4_process_open1()
5307 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_renew() local
5310 status = lookup_clientid(clid, cstate, nn, false); in nfsd4_renew()
5324 nfsd4_end_grace(struct nfsd_net *nn) in nfsd4_end_grace() argument
5327 if (nn->grace_ended) in nfsd4_end_grace()
5330 trace_nfsd_grace_complete(nn); in nfsd4_end_grace()
5331 nn->grace_ended = true; in nfsd4_end_grace()
5338 nfsd4_record_grace_done(nn); in nfsd4_end_grace()
5348 locks_end_grace(&nn->nfsd4_manager); in nfsd4_end_grace()
5360 static bool clients_still_reclaiming(struct nfsd_net *nn) in clients_still_reclaiming() argument
5362 time64_t double_grace_period_end = nn->boot_time + in clients_still_reclaiming()
5363 2 * nn->nfsd4_lease; in clients_still_reclaiming()
5365 if (nn->track_reclaim_completes && in clients_still_reclaiming()
5366 atomic_read(&nn->nr_reclaim_complete) == in clients_still_reclaiming()
5367 nn->reclaim_str_hashtbl_size) in clients_still_reclaiming()
5369 if (!nn->somebody_reclaimed) in clients_still_reclaiming()
5371 nn->somebody_reclaimed = false; in clients_still_reclaiming()
5382 nfs4_laundromat(struct nfsd_net *nn) in nfs4_laundromat() argument
5390 time64_t cutoff = ktime_get_boottime_seconds() - nn->nfsd4_lease; in nfs4_laundromat()
5391 time64_t t, new_timeo = nn->nfsd4_lease; in nfs4_laundromat()
5396 if (clients_still_reclaiming(nn)) { in nfs4_laundromat()
5400 nfsd4_end_grace(nn); in nfs4_laundromat()
5403 spin_lock(&nn->s2s_cp_lock); in nfs4_laundromat()
5404 idr_for_each_entry(&nn->s2s_cp_stateids, cps_t, i) { in nfs4_laundromat()
5408 _free_cpntf_state_locked(nn, cps); in nfs4_laundromat()
5410 spin_unlock(&nn->s2s_cp_lock); in nfs4_laundromat()
5412 spin_lock(&nn->client_lock); in nfs4_laundromat()
5413 list_for_each_safe(pos, next, &nn->client_lru) { in nfs4_laundromat()
5426 spin_unlock(&nn->client_lock); in nfs4_laundromat()
5434 list_for_each_safe(pos, next, &nn->del_recall_lru) { in nfs4_laundromat()
5452 spin_lock(&nn->client_lock); in nfs4_laundromat()
5453 while (!list_empty(&nn->close_lru)) { in nfs4_laundromat()
5454 oo = list_first_entry(&nn->close_lru, struct nfs4_openowner, in nfs4_laundromat()
5464 spin_unlock(&nn->client_lock); in nfs4_laundromat()
5466 spin_lock(&nn->client_lock); in nfs4_laundromat()
5468 spin_unlock(&nn->client_lock); in nfs4_laundromat()
5482 spin_lock(&nn->blocked_locks_lock); in nfs4_laundromat()
5483 while (!list_empty(&nn->blocked_locks_lru)) { in nfs4_laundromat()
5484 nbl = list_first_entry(&nn->blocked_locks_lru, in nfs4_laundromat()
5494 spin_unlock(&nn->blocked_locks_lock); in nfs4_laundromat()
5515 struct nfsd_net *nn = container_of(dwork, struct nfsd_net, in laundromat_main() local
5518 t = nfs4_laundromat(nn); in laundromat_main()
5519 queue_delayed_work(laundry_wq, &nn->laundromat_work, t*HZ); in laundromat_main()
5679 struct nfs4_stid **s, struct nfsd_net *nn) in nfsd4_lookup_stateid() argument
5696 status = lookup_clientid(&stateid->si_opaque.so_clid, cstate, nn, in nfsd4_lookup_stateid()
5776 _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_state *cps) in _free_cpntf_state_locked() argument
5782 idr_remove(&nn->s2s_cp_stateids, in _free_cpntf_state_locked()
5791 __be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st, in manage_cpntf_state() argument
5798 if (st->si_opaque.so_clid.cl_id != nn->s2s_cp_cl_id) in manage_cpntf_state()
5800 spin_lock(&nn->s2s_cp_lock); in manage_cpntf_state()
5801 cps_t = idr_find(&nn->s2s_cp_stateids, st->si_opaque.so_id); in manage_cpntf_state()
5812 _free_cpntf_state_locked(nn, state); in manage_cpntf_state()
5815 spin_unlock(&nn->s2s_cp_lock); in manage_cpntf_state()
5823 static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st, in find_cpntf_state() argument
5830 status = manage_cpntf_state(nn, st, NULL, &cps); in find_cpntf_state()
5836 status = lookup_clientid(&cps->cp_p_clid, &cstate, nn, true); in find_cpntf_state()
5841 stid, nn); in find_cpntf_state()
5844 nfs4_put_cpntf_state(nn, cps); in find_cpntf_state()
5848 void nfs4_put_cpntf_state(struct nfsd_net *nn, struct nfs4_cpntf_state *cps) in nfs4_put_cpntf_state() argument
5850 spin_lock(&nn->s2s_cp_lock); in nfs4_put_cpntf_state()
5851 _free_cpntf_state_locked(nn, cps); in nfs4_put_cpntf_state()
5852 spin_unlock(&nn->s2s_cp_lock); in nfs4_put_cpntf_state()
5866 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfs4_preprocess_stateid_op() local
5883 &s, nn); in nfs4_preprocess_stateid_op()
5885 status = find_cpntf_state(nn, stateid, &s); in nfs4_preprocess_stateid_op()
6052 struct nfsd_net *nn) in nfs4_preprocess_seqid_op() argument
6061 status = nfsd4_lookup_stateid(cstate, stateid, typemask, &s, nn); in nfs4_preprocess_seqid_op()
6076 stateid_t *stateid, struct nfs4_ol_stateid **stpp, struct nfsd_net *nn) in nfs4_preprocess_confirmed_seqid_op() argument
6083 NFS4_OPEN_STID, &stp, nn); in nfs4_preprocess_confirmed_seqid_op()
6104 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_open_confirm() local
6115 NFS4_OPEN_STID, &stp, nn); in nfsd4_open_confirm()
6170 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_open_downgrade() local
6181 &od->od_stateid, &stp, nn); in nfsd4_open_downgrade()
6243 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_close() local
6251 &stp, nn); in nfsd4_close()
6293 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_delegreturn() local
6298 status = nfsd4_lookup_stateid(cstate, stateid, NFS4_DELEG_STID, &s, nn); in nfsd4_delegreturn()
6373 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_lm_notify() local
6379 spin_lock(&nn->blocked_locks_lock); in nfsd4_lm_notify()
6385 spin_unlock(&nn->blocked_locks_lock); in nfsd4_lm_notify()
6690 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfsd4_lock() local
6713 if (STALE_CLIENTID(&lock->lk_new_clientid, nn)) in nfsd4_lock()
6720 &open_stp, nn); in nfsd4_lock()
6735 NFS4_LOCK_STID, &lock_stp, nn); in nfsd4_lock()
6789 nbl = find_or_allocate_block(lock_sop, &fp->fi_fhandle, nn); in nfsd4_lock()
6816 spin_lock(&nn->blocked_locks_lock); in nfsd4_lock()
6818 list_add_tail(&nbl->nbl_lru, &nn->blocked_locks_lru); in nfsd4_lock()
6819 spin_unlock(&nn->blocked_locks_lock); in nfsd4_lock()
6828 nn->somebody_reclaimed = true; in nfsd4_lock()
6850 spin_lock(&nn->blocked_locks_lock); in nfsd4_lock()
6853 spin_unlock(&nn->blocked_locks_lock); in nfsd4_lock()
6923 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_lockt() local
6932 status = lookup_clientid(&lockt->lt_clientid, cstate, nn, in nfsd4_lockt()
7000 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_locku() local
7011 &stp, nn); in nfsd4_locku()
7110 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); in nfsd4_release_lockowner() local
7117 status = lookup_clientid(clid, cstate, nn, false); in nfsd4_release_lockowner()
7167 nfs4_has_reclaimed_state(struct xdr_netobj name, struct nfsd_net *nn) in nfs4_has_reclaimed_state() argument
7171 crp = nfsd4_find_reclaim_client(name, nn); in nfs4_has_reclaimed_state()
7183 struct nfsd_net *nn) in nfs4_client_to_reclaim() argument
7192 list_add(&crp->cr_strhash, &nn->reclaim_str_hashtbl[strhashval]); in nfs4_client_to_reclaim()
7198 nn->reclaim_str_hashtbl_size++; in nfs4_client_to_reclaim()
7204 nfs4_remove_reclaim_record(struct nfs4_client_reclaim *crp, struct nfsd_net *nn) in nfs4_remove_reclaim_record() argument
7210 nn->reclaim_str_hashtbl_size--; in nfs4_remove_reclaim_record()
7214 nfs4_release_reclaim(struct nfsd_net *nn) in nfs4_release_reclaim() argument
7220 while (!list_empty(&nn->reclaim_str_hashtbl[i])) { in nfs4_release_reclaim()
7221 crp = list_entry(nn->reclaim_str_hashtbl[i].next, in nfs4_release_reclaim()
7223 nfs4_remove_reclaim_record(crp, nn); in nfs4_release_reclaim()
7226 WARN_ON_ONCE(nn->reclaim_str_hashtbl_size); in nfs4_release_reclaim()
7232 nfsd4_find_reclaim_client(struct xdr_netobj name, struct nfsd_net *nn) in nfsd4_find_reclaim_client() argument
7238 list_for_each_entry(crp, &nn->reclaim_str_hashtbl[strhashval], cr_strhash) { in nfsd4_find_reclaim_client()
7252 struct nfsd_net *nn) in nfs4_check_open_reclaim() argument
7257 status = lookup_clientid(clid, cstate, nn, false); in nfs4_check_open_reclaim()
7293 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfs4_state_create_net() local
7296 nn->conf_id_hashtbl = kmalloc_array(CLIENT_HASH_SIZE, in nfs4_state_create_net()
7299 if (!nn->conf_id_hashtbl) in nfs4_state_create_net()
7301 nn->unconf_id_hashtbl = kmalloc_array(CLIENT_HASH_SIZE, in nfs4_state_create_net()
7304 if (!nn->unconf_id_hashtbl) in nfs4_state_create_net()
7306 nn->sessionid_hashtbl = kmalloc_array(SESSION_HASH_SIZE, in nfs4_state_create_net()
7309 if (!nn->sessionid_hashtbl) in nfs4_state_create_net()
7313 INIT_LIST_HEAD(&nn->conf_id_hashtbl[i]); in nfs4_state_create_net()
7314 INIT_LIST_HEAD(&nn->unconf_id_hashtbl[i]); in nfs4_state_create_net()
7317 INIT_LIST_HEAD(&nn->sessionid_hashtbl[i]); in nfs4_state_create_net()
7318 nn->conf_name_tree = RB_ROOT; in nfs4_state_create_net()
7319 nn->unconf_name_tree = RB_ROOT; in nfs4_state_create_net()
7320 nn->boot_time = ktime_get_real_seconds(); in nfs4_state_create_net()
7321 nn->grace_ended = false; in nfs4_state_create_net()
7322 nn->nfsd4_manager.block_opens = true; in nfs4_state_create_net()
7323 INIT_LIST_HEAD(&nn->nfsd4_manager.list); in nfs4_state_create_net()
7324 INIT_LIST_HEAD(&nn->client_lru); in nfs4_state_create_net()
7325 INIT_LIST_HEAD(&nn->close_lru); in nfs4_state_create_net()
7326 INIT_LIST_HEAD(&nn->del_recall_lru); in nfs4_state_create_net()
7327 spin_lock_init(&nn->client_lock); in nfs4_state_create_net()
7328 spin_lock_init(&nn->s2s_cp_lock); in nfs4_state_create_net()
7329 idr_init(&nn->s2s_cp_stateids); in nfs4_state_create_net()
7331 spin_lock_init(&nn->blocked_locks_lock); in nfs4_state_create_net()
7332 INIT_LIST_HEAD(&nn->blocked_locks_lru); in nfs4_state_create_net()
7334 INIT_DELAYED_WORK(&nn->laundromat_work, laundromat_main); in nfs4_state_create_net()
7340 kfree(nn->unconf_id_hashtbl); in nfs4_state_create_net()
7342 kfree(nn->conf_id_hashtbl); in nfs4_state_create_net()
7352 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfs4_state_destroy_net() local
7355 while (!list_empty(&nn->conf_id_hashtbl[i])) { in nfs4_state_destroy_net()
7356 clp = list_entry(nn->conf_id_hashtbl[i].next, struct nfs4_client, cl_idhash); in nfs4_state_destroy_net()
7361 WARN_ON(!list_empty(&nn->blocked_locks_lru)); in nfs4_state_destroy_net()
7364 while (!list_empty(&nn->unconf_id_hashtbl[i])) { in nfs4_state_destroy_net()
7365 clp = list_entry(nn->unconf_id_hashtbl[i].next, struct nfs4_client, cl_idhash); in nfs4_state_destroy_net()
7370 kfree(nn->sessionid_hashtbl); in nfs4_state_destroy_net()
7371 kfree(nn->unconf_id_hashtbl); in nfs4_state_destroy_net()
7372 kfree(nn->conf_id_hashtbl); in nfs4_state_destroy_net()
7379 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfs4_state_start_net() local
7387 mntput(nn->nfsd_mnt); in nfs4_state_start_net()
7390 locks_start_grace(net, &nn->nfsd4_manager); in nfs4_state_start_net()
7392 if (nn->track_reclaim_completes && nn->reclaim_str_hashtbl_size == 0) in nfs4_state_start_net()
7395 nn->nfsd4_grace, net->ns.inum); in nfs4_state_start_net()
7396 trace_nfsd_grace_start(nn); in nfs4_state_start_net()
7397 queue_delayed_work(laundry_wq, &nn->laundromat_work, nn->nfsd4_grace * HZ); in nfs4_state_start_net()
7403 queue_delayed_work(laundry_wq, &nn->laundromat_work, nn->nfsd4_lease * HZ); in nfs4_state_start_net()
7404 nfsd4_end_grace(nn); in nfs4_state_start_net()
7438 struct nfsd_net *nn = net_generic(net, nfsd_net_id); in nfs4_state_shutdown_net() local
7440 cancel_delayed_work_sync(&nn->laundromat_work); in nfs4_state_shutdown_net()
7441 locks_end_grace(&nn->nfsd4_manager); in nfs4_state_shutdown_net()
7445 list_for_each_safe(pos, next, &nn->del_recall_lru) { in nfs4_state_shutdown_net()
7459 mntput(nn->nfsd_mnt); in nfs4_state_shutdown_net()