Lines Matching refs:server
33 static struct hlist_head *nfs_delegation_hash(struct nfs_server *server, in nfs_delegation_hash() argument
36 return server->delegation_hash_table + in nfs_delegation_hash()
37 (nfs_fhandle_hash(fhandle) & server->delegation_hash_mask); in nfs_delegation_hash()
47 static void nfs_mark_delegation_revoked(struct nfs_server *server, in nfs_mark_delegation_revoked() argument
52 atomic_long_dec(&server->nr_active_delegations); in nfs_mark_delegation_revoked()
70 static void nfs_free_delegation(struct nfs_server *server, in nfs_free_delegation() argument
73 nfs_mark_delegation_revoked(server, delegation); in nfs_free_delegation()
87 static void nfs_mark_return_delegation(struct nfs_server *server, in nfs_mark_return_delegation() argument
91 set_bit(NFS4SERV_DELEGRETURN, &server->delegation_flags); in nfs_mark_return_delegation()
92 set_bit(NFS4CLNT_DELEGRETURN, &server->nfs_client->cl_state); in nfs_mark_return_delegation()
344 struct nfs_server *server, int err) in nfs_abort_delegation_return() argument
351 &server->delegation_flags); in nfs_abort_delegation_return()
353 &server->nfs_client->cl_state); in nfs_abort_delegation_return()
387 struct nfs_server *server) in nfs_detach_delegation() argument
389 struct nfs_client *clp = server->nfs_client; in nfs_detach_delegation()
401 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_detach_delegation() local
407 delegation = nfs_detach_delegation(nfsi, delegation, server); in nfs_inode_detach_delegation()
425 nfs_update_inplace_delegation(struct nfs_server *server, in nfs_update_inplace_delegation() argument
439 atomic_long_inc(&server->nr_active_delegations); in nfs_update_inplace_delegation()
459 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_set_delegation() local
460 struct nfs_client *clp = server->nfs_client; in nfs_inode_set_delegation()
494 nfs_update_inplace_delegation(server, old_delegation, in nfs_inode_set_delegation()
539 list_add_tail_rcu(&delegation->super_list, &server->delegations); in nfs_inode_set_delegation()
541 nfs_delegation_hash(server, &NFS_I(inode)->fh)); in nfs_inode_set_delegation()
545 atomic_long_inc(&server->nr_active_delegations); in nfs_inode_set_delegation()
559 nfs_free_delegation(server, freeme); in nfs_inode_set_delegation()
569 struct nfs_server *server = NFS_SERVER(inode); in nfs_end_delegation_return() local
591 err = nfs4_wait_clnt_recover(server->nfs_client); in nfs_end_delegation_return()
595 nfs_abort_delegation_return(delegation, server, err); in nfs_end_delegation_return()
622 static int nfs_server_return_marked_delegations(struct nfs_server *server, in nfs_server_return_marked_delegations() argument
633 &server->delegation_flags)) in nfs_server_return_marked_delegations()
651 delegation = list_entry_rcu(server->delegations.next, in nfs_server_return_marked_delegations()
653 list_for_each_entry_from_rcu(delegation, &server->delegations, super_list) { in nfs_server_return_marked_delegations()
686 set_bit(NFS4SERV_DELEGRETURN, &server->delegation_flags); in nfs_server_return_marked_delegations()
687 set_bit(NFS4CLNT_DELEGRETURN, &server->nfs_client->cl_state); in nfs_server_return_marked_delegations()
696 static bool nfs_server_clear_delayed_delegations(struct nfs_server *server) in nfs_server_clear_delayed_delegations() argument
702 &server->delegation_flags)) in nfs_server_clear_delayed_delegations()
704 list_for_each_entry_rcu (d, &server->delegations, super_list) { in nfs_server_clear_delayed_delegations()
707 nfs_mark_return_delegation(server, d); in nfs_server_clear_delayed_delegations()
717 struct nfs_server *server; in nfs_client_clear_delayed_delegations() local
723 list_for_each_entry_rcu (server, &clp->cl_superblocks, client_link) { in nfs_client_clear_delayed_delegations()
724 if (nfs_server_clear_delayed_delegations(server)) in nfs_client_clear_delayed_delegations()
901 nfs_mark_return_if_closed_delegation(struct nfs_server *server, in nfs_mark_return_if_closed_delegation() argument
914 nfs_mark_return_delegation(server, delegation); in nfs_mark_return_if_closed_delegation()
921 static bool nfs_server_mark_return_all_delegations(struct nfs_server *server) in nfs_server_mark_return_all_delegations() argument
926 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_server_mark_return_all_delegations()
927 nfs_mark_return_delegation(server, delegation); in nfs_server_mark_return_all_delegations()
935 struct nfs_server *server; in nfs_client_mark_return_all_delegations() local
938 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_client_mark_return_all_delegations()
939 nfs_server_mark_return_all_delegations(server); in nfs_client_mark_return_all_delegations()
965 void nfs_server_return_all_delegations(struct nfs_server *server) in nfs_server_return_all_delegations() argument
967 struct nfs_client *clp = server->nfs_client; in nfs_server_return_all_delegations()
974 need_wait = nfs_server_mark_return_all_delegations(server); in nfs_server_return_all_delegations()
983 static void nfs_mark_return_unused_delegation_types(struct nfs_server *server, in nfs_mark_return_unused_delegation_types() argument
988 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_mark_return_unused_delegation_types()
992 nfs_mark_return_if_closed_delegation(server, delegation); in nfs_mark_return_unused_delegation_types()
999 struct nfs_server *server; in nfs_client_mark_return_unused_delegation_types() local
1002 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_client_mark_return_unused_delegation_types()
1003 nfs_mark_return_unused_delegation_types(server, flags); in nfs_client_mark_return_unused_delegation_types()
1113 static void nfs_mark_return_unreferenced_delegations(struct nfs_server *server) in nfs_mark_return_unreferenced_delegations() argument
1117 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_mark_return_unreferenced_delegations()
1120 nfs_mark_return_if_closed_delegation(server, delegation); in nfs_mark_return_unreferenced_delegations()
1131 struct nfs_server *server; in nfs_expire_unreferenced_delegations() local
1134 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_expire_unreferenced_delegations()
1135 nfs_mark_return_unreferenced_delegations(server); in nfs_expire_unreferenced_delegations()
1151 struct nfs_server *server = NFS_SERVER(inode); in nfs_async_inode_return_delegation() local
1152 struct nfs_client *clp = server->nfs_client; in nfs_async_inode_return_delegation()
1162 nfs_mark_return_delegation(server, delegation); in nfs_async_inode_return_delegation()
1176 nfs_delegation_find_inode_server(struct nfs_server *server, in nfs_delegation_find_inode_server() argument
1179 struct hlist_head *head = nfs_delegation_hash(server, fhandle); in nfs_delegation_find_inode_server()
1189 if (nfs_sb_active(server->super)) { in nfs_delegation_find_inode_server()
1190 freeme = server->super; in nfs_delegation_find_inode_server()
1219 struct nfs_server *server; in nfs_delegation_find_inode() local
1223 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) { in nfs_delegation_find_inode()
1224 res = nfs_delegation_find_inode_server(server, fhandle); in nfs_delegation_find_inode()
1234 static void nfs_delegation_mark_reclaim_server(struct nfs_server *server) in nfs_delegation_mark_reclaim_server() argument
1238 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_delegation_mark_reclaim_server()
1256 struct nfs_server *server; in nfs_delegation_mark_reclaim() local
1259 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_delegation_mark_reclaim()
1260 nfs_delegation_mark_reclaim_server(server); in nfs_delegation_mark_reclaim()
1264 static int nfs_server_reap_unclaimed_delegations(struct nfs_server *server, in nfs_server_reap_unclaimed_delegations() argument
1271 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_server_reap_unclaimed_delegations()
1286 server) != NULL) in nfs_server_reap_unclaimed_delegations()
1287 nfs_free_delegation(server, delegation); in nfs_server_reap_unclaimed_delegations()
1317 static void nfs_mark_test_expired_delegation(struct nfs_server *server, in nfs_mark_test_expired_delegation() argument
1324 set_bit(NFS4SERV_DELEGATION_EXPIRED, &server->delegation_flags); in nfs_mark_test_expired_delegation()
1325 set_bit(NFS4CLNT_DELEGATION_EXPIRED, &server->nfs_client->cl_state); in nfs_mark_test_expired_delegation()
1328 static void nfs_inode_mark_test_expired_delegation(struct nfs_server *server, in nfs_inode_mark_test_expired_delegation() argument
1336 nfs_mark_test_expired_delegation(server, delegation); in nfs_inode_mark_test_expired_delegation()
1341 static void nfs_delegation_mark_test_expired_server(struct nfs_server *server) in nfs_delegation_mark_test_expired_server() argument
1345 list_for_each_entry_rcu(delegation, &server->delegations, super_list) in nfs_delegation_mark_test_expired_server()
1346 nfs_mark_test_expired_delegation(server, delegation); in nfs_delegation_mark_test_expired_server()
1358 struct nfs_server *server; in nfs_mark_test_expired_all_delegations() local
1361 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_mark_test_expired_all_delegations()
1362 nfs_delegation_mark_test_expired_server(server); in nfs_mark_test_expired_all_delegations()
1383 struct nfs_server *server = NFS_SERVER(inode); in nfs_delegation_test_free_expired() local
1384 const struct nfs4_minor_version_ops *ops = server->nfs_client->cl_mvops; in nfs_delegation_test_free_expired()
1389 status = ops->test_and_free_expired(server, stateid, cred); in nfs_delegation_test_free_expired()
1394 static int nfs_server_reap_expired_delegations(struct nfs_server *server, in nfs_server_reap_expired_delegations() argument
1401 unsigned long gen = ++server->delegation_gen; in nfs_server_reap_expired_delegations()
1404 &server->delegation_flags)) in nfs_server_reap_expired_delegations()
1408 list_for_each_entry_rcu(delegation, &server->delegations, super_list) { in nfs_server_reap_expired_delegations()
1429 if (!nfs4_server_rebooted(server->nfs_client)) { in nfs_server_reap_expired_delegations()
1434 nfs_inode_mark_test_expired_delegation(server,inode); in nfs_server_reap_expired_delegations()
1435 set_bit(NFS4SERV_DELEGATION_EXPIRED, &server->delegation_flags); in nfs_server_reap_expired_delegations()
1437 &server->nfs_client->cl_state); in nfs_server_reap_expired_delegations()
1489 struct nfs_server *server; in nfs_delegations_present() local
1493 list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) in nfs_delegations_present()
1494 if (!list_empty(&server->delegations)) { in nfs_delegations_present()
1592 int nfs4_delegation_hash_alloc(struct nfs_server *server) in nfs4_delegation_hash_alloc() argument
1597 server->delegation_hash_mask = delegation_buckets - 1; in nfs4_delegation_hash_alloc()
1598 server->delegation_hash_table = kmalloc_array(delegation_buckets, in nfs4_delegation_hash_alloc()
1599 sizeof(*server->delegation_hash_table), GFP_KERNEL); in nfs4_delegation_hash_alloc()
1600 if (!server->delegation_hash_table) in nfs4_delegation_hash_alloc()
1603 INIT_HLIST_HEAD(&server->delegation_hash_table[i]); in nfs4_delegation_hash_alloc()