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, const nfs4_stateid *stateid) in nfs_delegation_claim_opens() argument
118 struct nfs_inode *nfsi = NFS_I(inode); in nfs_delegation_claim_opens()
126 spin_lock(&inode->i_lock); in nfs_delegation_claim_opens()
138 spin_unlock(&inode->i_lock); in nfs_delegation_claim_opens()
154 spin_unlock(&inode->i_lock); in nfs_delegation_claim_opens()
165 void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, in nfs_inode_reclaim_delegation() argument
172 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs_inode_reclaim_delegation()
175 if (delegation->inode != NULL) { in nfs_inode_reclaim_delegation()
186 trace_nfs4_reclaim_delegation(inode, res->delegation_type); in nfs_inode_reclaim_delegation()
191 nfs_inode_set_delegation(inode, cred, res); in nfs_inode_reclaim_delegation()
198 static int nfs_do_return_delegation(struct inode *inode, struct nfs_delegation *delegation, int iss… in nfs_do_return_delegation() argument
203 res = nfs4_proc_delegreturn(inode, in nfs_do_return_delegation()
211 static struct inode *nfs_delegation_grab_inode(struct nfs_delegation *delegation) in nfs_delegation_grab_inode()
213 struct inode *inode = NULL; in nfs_delegation_grab_inode() local
216 if (delegation->inode != NULL) in nfs_delegation_grab_inode()
217 inode = igrab(delegation->inode); in nfs_delegation_grab_inode()
219 return inode; in nfs_delegation_grab_inode()
276 delegation->inode = NULL; in nfs_detach_delegation_locked()
295 nfs_inode_detach_delegation(struct inode *inode) in nfs_inode_detach_delegation() argument
297 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_detach_delegation()
298 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_detach_delegation()
326 int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res) in nfs_inode_set_delegation() argument
328 struct nfs_server *server = NFS_SERVER(inode); in nfs_inode_set_delegation()
330 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_set_delegation()
341 delegation->change_attr = inode->i_version; in nfs_inode_set_delegation()
343 delegation->inode = inode; in nfs_inode_set_delegation()
386 spin_lock(&inode->i_lock); in nfs_inode_set_delegation()
388 spin_unlock(&inode->i_lock); in nfs_inode_set_delegation()
389 trace_nfs4_set_delegation(inode, res->delegation_type); in nfs_inode_set_delegation()
396 nfs_do_return_delegation(inode, freeme, 0); in nfs_inode_set_delegation()
403 static int nfs_end_delegation_return(struct inode *inode, struct nfs_delegation *delegation, int is… in nfs_end_delegation_return() argument
405 struct nfs_client *clp = NFS_SERVER(inode)->nfs_client; in nfs_end_delegation_return()
406 struct nfs_inode *nfsi = NFS_I(inode); in nfs_end_delegation_return()
414 err = nfs_delegation_claim_opens(inode, &delegation->stateid); in nfs_end_delegation_return()
427 if (!nfs_detach_delegation(nfsi, delegation, NFS_SERVER(inode))) in nfs_end_delegation_return()
430 err = nfs_do_return_delegation(inode, delegation, issync); in nfs_end_delegation_return()
444 struct inode *inode; in nfs_delegation_need_return() local
447 inode = delegation->inode; in nfs_delegation_need_return()
448 if (inode && list_empty(&NFS_I(inode)->open_files)) in nfs_delegation_need_return()
470 struct inode *inode; in nfs_client_return_marked_delegations() local
482 inode = nfs_delegation_grab_inode(delegation); in nfs_client_return_marked_delegations()
483 if (inode == NULL) { in nfs_client_return_marked_delegations()
488 delegation = nfs_start_delegation_return_locked(NFS_I(inode)); in nfs_client_return_marked_delegations()
491 err = nfs_end_delegation_return(inode, delegation, 0); in nfs_client_return_marked_delegations()
492 iput(inode); in nfs_client_return_marked_delegations()
511 void nfs_inode_return_delegation_noreclaim(struct inode *inode) in nfs_inode_return_delegation_noreclaim() argument
515 delegation = nfs_inode_detach_delegation(inode); in nfs_inode_return_delegation_noreclaim()
517 nfs_do_return_delegation(inode, delegation, 1); in nfs_inode_return_delegation_noreclaim()
530 int nfs4_inode_return_delegation(struct inode *inode) in nfs4_inode_return_delegation() argument
532 struct nfs_inode *nfsi = NFS_I(inode); in nfs4_inode_return_delegation()
536 nfs_wb_all(inode); in nfs4_inode_return_delegation()
539 err = nfs_end_delegation_return(inode, delegation, 1); in nfs4_inode_return_delegation()
643 static void nfs_revoke_delegation(struct inode *inode) in nfs_revoke_delegation() argument
647 delegation = rcu_dereference(NFS_I(inode)->delegation); in nfs_revoke_delegation()
650 nfs_mark_return_delegation(NFS_SERVER(inode), delegation); in nfs_revoke_delegation()
655 void nfs_remove_bad_delegation(struct inode *inode) in nfs_remove_bad_delegation() argument
659 nfs_revoke_delegation(inode); in nfs_remove_bad_delegation()
660 delegation = nfs_inode_detach_delegation(inode); in nfs_remove_bad_delegation()
662 nfs_inode_find_state_and_recover(inode, &delegation->stateid); in nfs_remove_bad_delegation()
715 int nfs_async_inode_return_delegation(struct inode *inode, in nfs_async_inode_return_delegation() argument
718 struct nfs_server *server = NFS_SERVER(inode); in nfs_async_inode_return_delegation()
722 filemap_flush(inode->i_mapping); 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()