Lines Matching refs:inode

45 nfs4_do_check_delegation(struct inode *inode, fmode_t flags, bool mark)  in nfs4_do_check_delegation()  argument
52 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs4_do_check_delegation()
70 int nfs4_have_delegation(struct inode *inode, fmode_t flags) in nfs4_have_delegation() argument
72 return nfs4_do_check_delegation(inode, flags, true); in nfs4_have_delegation()
79 int nfs4_check_delegation(struct inode *inode, fmode_t flags) in nfs4_check_delegation() argument
81 return nfs4_do_check_delegation(inode, flags, false); in nfs4_check_delegation()
86 struct inode *inode = state->inode; in nfs_delegation_claim_locks() local
88 struct file_lock_context *flctx = inode->i_flctx; in nfs_delegation_claim_locks()
116 static int nfs_delegation_claim_opens(struct inode *inode, in nfs_delegation_claim_opens() argument
119 struct nfs_inode *nfsi = NFS_I(inode); in nfs_delegation_claim_opens()
127 spin_lock(&inode->i_lock); in nfs_delegation_claim_opens()
139 spin_unlock(&inode->i_lock); in nfs_delegation_claim_opens()
155 spin_unlock(&inode->i_lock); in nfs_delegation_claim_opens()
166 void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, in nfs_inode_reclaim_delegation() argument
173 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs_inode_reclaim_delegation()
176 if (delegation->inode != NULL) { in nfs_inode_reclaim_delegation()
187 trace_nfs4_reclaim_delegation(inode, res->delegation_type); in nfs_inode_reclaim_delegation()
192 nfs_inode_set_delegation(inode, cred, res); in nfs_inode_reclaim_delegation()
199 static int nfs_do_return_delegation(struct inode *inode, struct nfs_delegation *delegation, int iss… in nfs_do_return_delegation() argument
204 res = nfs4_proc_delegreturn(inode, in nfs_do_return_delegation()
212 static struct inode *nfs_delegation_grab_inode(struct nfs_delegation *delegation) in nfs_delegation_grab_inode()
214 struct inode *inode = NULL; in nfs_delegation_grab_inode() local
217 if (delegation->inode != NULL) in nfs_delegation_grab_inode()
218 inode = igrab(delegation->inode); in nfs_delegation_grab_inode()
220 return inode; in nfs_delegation_grab_inode()
277 delegation->inode = NULL; in nfs_detach_delegation_locked()
296 nfs_inode_detach_delegation(struct inode *inode) in nfs_inode_detach_delegation() argument
298 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_detach_delegation()
299 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_detach_delegation()
327 int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res) in nfs_inode_set_delegation() argument
329 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_set_delegation()
331 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_set_delegation()
342 delegation->change_attr = inode->i_version; in nfs_inode_set_delegation()
344 delegation->inode = inode; in nfs_inode_set_delegation()
387 spin_lock(&inode->i_lock); in nfs_inode_set_delegation()
389 spin_unlock(&inode->i_lock); in nfs_inode_set_delegation()
390 trace_nfs4_set_delegation(inode, res->delegation_type); in nfs_inode_set_delegation()
397 nfs_do_return_delegation(inode, freeme, 0); in nfs_inode_set_delegation()
404 static int nfs_end_delegation_return(struct inode *inode, struct nfs_delegation *delegation, int is… in nfs_end_delegation_return() argument
406 struct nfs_client *clp = NFS_SERVER(inode)->nfs_client; in nfs_end_delegation_return()
407 struct nfs_inode *nfsi = NFS_I(inode); in nfs_end_delegation_return()
415 err = nfs_delegation_claim_opens(inode, &delegation->stateid, in nfs_end_delegation_return()
429 if (!nfs_detach_delegation(nfsi, delegation, NFS_SERVER(inode))) in nfs_end_delegation_return()
432 err = nfs_do_return_delegation(inode, delegation, issync); in nfs_end_delegation_return()
446 struct inode *inode; in nfs_delegation_need_return() local
449 inode = delegation->inode; in nfs_delegation_need_return()
450 if (inode && list_empty(&NFS_I(inode)->open_files)) in nfs_delegation_need_return()
472 struct inode *inode; in nfs_client_return_marked_delegations() local
484 inode = nfs_delegation_grab_inode(delegation); in nfs_client_return_marked_delegations()
485 if (inode == NULL) { in nfs_client_return_marked_delegations()
490 delegation = nfs_start_delegation_return_locked(NFS_I(inode)); in nfs_client_return_marked_delegations()
493 err = nfs_end_delegation_return(inode, delegation, 0); in nfs_client_return_marked_delegations()
494 iput(inode); in nfs_client_return_marked_delegations()
513 void nfs_inode_return_delegation_noreclaim(struct inode *inode) in nfs_inode_return_delegation_noreclaim() argument
517 delegation = nfs_inode_detach_delegation(inode); in nfs_inode_return_delegation_noreclaim()
519 nfs_do_return_delegation(inode, delegation, 1); in nfs_inode_return_delegation_noreclaim()
532 int nfs4_inode_return_delegation(struct inode *inode) in nfs4_inode_return_delegation() argument
534 struct nfs_inode *nfsi = NFS_I(inode); in nfs4_inode_return_delegation()
538 nfs_wb_all(inode); in nfs4_inode_return_delegation()
541 err = nfs_end_delegation_return(inode, delegation, 1); in nfs4_inode_return_delegation()
645 static void nfs_revoke_delegation(struct inode *inode) in nfs_revoke_delegation() argument
649 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs_revoke_delegation()
652 nfs_mark_return_delegation(NFS_SERVER(inode), delegation); in nfs_revoke_delegation()
657 void nfs_remove_bad_delegation(struct inode *inode) in nfs_remove_bad_delegation() argument
661 nfs_revoke_delegation(inode); in nfs_remove_bad_delegation()
662 delegation = nfs_inode_detach_delegation(inode); in nfs_remove_bad_delegation()
664 nfs_inode_find_state_and_recover(inode, &delegation->stateid); in nfs_remove_bad_delegation()
717 int nfs_async_inode_return_delegation(struct inode *inode, in nfs_async_inode_return_delegation() argument
720 struct nfs_server *server = NFS_SERVER(inode); in nfs_async_inode_return_delegation()
725 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs_async_inode_return_delegation()
741 static struct inode *
746 struct inode *res = NULL; in nfs_delegation_find_inode_server()
750 if (delegation->inode != NULL && in nfs_delegation_find_inode_server()
751 nfs_compare_fh(fhandle, &NFS_I(delegation->inode)->fh) == 0) { in nfs_delegation_find_inode_server()
752 res = igrab(delegation->inode); in nfs_delegation_find_inode_server()
769 struct inode *nfs_delegation_find_inode(struct nfs_client *clp, in nfs_delegation_find_inode()
773 struct inode *res = NULL; in nfs_delegation_find_inode()
817 struct inode *inode; in nfs_delegation_reap_unclaimed() local
832 inode = nfs_delegation_grab_inode(delegation); in nfs_delegation_reap_unclaimed()
833 if (inode == NULL) { in nfs_delegation_reap_unclaimed()
838 delegation = nfs_start_delegation_return_locked(NFS_I(inode)); in nfs_delegation_reap_unclaimed()
841 delegation = nfs_detach_delegation(NFS_I(inode), in nfs_delegation_reap_unclaimed()
846 iput(inode); in nfs_delegation_reap_unclaimed()
885 bool nfs4_copy_delegation_stateid(nfs4_stateid *dst, struct inode *inode, in nfs4_copy_delegation_stateid() argument
888 struct nfs_inode *nfsi = NFS_I(inode); in nfs4_copy_delegation_stateid()
912 bool nfs4_delegation_flush_on_close(const struct inode *inode) in nfs4_delegation_flush_on_close() argument
914 struct nfs_inode *nfsi = NFS_I(inode); in nfs4_delegation_flush_on_close()