.. | .. |
---|
15 | 15 | */ |
---|
16 | 16 | struct nfs_delegation { |
---|
17 | 17 | struct list_head super_list; |
---|
18 | | - struct rpc_cred *cred; |
---|
| 18 | + const struct cred *cred; |
---|
19 | 19 | struct inode *inode; |
---|
20 | 20 | nfs4_stateid stateid; |
---|
21 | 21 | fmode_t type; |
---|
22 | 22 | unsigned long pagemod_limit; |
---|
23 | 23 | __u64 change_attr; |
---|
24 | 24 | unsigned long flags; |
---|
| 25 | + refcount_t refcount; |
---|
25 | 26 | spinlock_t lock; |
---|
26 | 27 | struct rcu_head rcu; |
---|
27 | 28 | }; |
---|
.. | .. |
---|
35 | 36 | NFS_DELEGATION_REVOKED, |
---|
36 | 37 | NFS_DELEGATION_TEST_EXPIRED, |
---|
37 | 38 | NFS_DELEGATION_INODE_FREEING, |
---|
| 39 | + NFS_DELEGATION_RETURN_DELAYED, |
---|
38 | 40 | }; |
---|
39 | 41 | |
---|
40 | | -int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, |
---|
| 42 | +int nfs_inode_set_delegation(struct inode *inode, const struct cred *cred, |
---|
41 | 43 | fmode_t type, const nfs4_stateid *stateid, unsigned long pagemod_limit); |
---|
42 | | -void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, |
---|
| 44 | +void nfs_inode_reclaim_delegation(struct inode *inode, const struct cred *cred, |
---|
43 | 45 | fmode_t type, const nfs4_stateid *stateid, unsigned long pagemod_limit); |
---|
44 | 46 | int nfs4_inode_return_delegation(struct inode *inode); |
---|
| 47 | +void nfs4_inode_return_delegation_on_close(struct inode *inode); |
---|
45 | 48 | int nfs_async_inode_return_delegation(struct inode *inode, const nfs4_stateid *stateid); |
---|
46 | | -void nfs_inode_return_delegation_noreclaim(struct inode *inode); |
---|
| 49 | +void nfs_inode_evict_delegation(struct inode *inode); |
---|
47 | 50 | |
---|
48 | 51 | struct inode *nfs_delegation_find_inode(struct nfs_client *clp, const struct nfs_fh *fhandle); |
---|
49 | 52 | void nfs_server_return_all_delegations(struct nfs_server *); |
---|
.. | .. |
---|
53 | 56 | int nfs_client_return_marked_delegations(struct nfs_client *clp); |
---|
54 | 57 | int nfs_delegations_present(struct nfs_client *clp); |
---|
55 | 58 | void nfs_remove_bad_delegation(struct inode *inode, const nfs4_stateid *stateid); |
---|
| 59 | +void nfs_delegation_mark_returned(struct inode *inode, const nfs4_stateid *stateid); |
---|
56 | 60 | |
---|
57 | 61 | void nfs_delegation_mark_reclaim(struct nfs_client *clp); |
---|
58 | 62 | void nfs_delegation_reap_unclaimed(struct nfs_client *clp); |
---|
59 | 63 | |
---|
60 | 64 | void nfs_mark_test_expired_all_delegations(struct nfs_client *clp); |
---|
| 65 | +void nfs_test_expired_all_delegations(struct nfs_client *clp); |
---|
61 | 66 | void nfs_reap_expired_delegations(struct nfs_client *clp); |
---|
62 | 67 | |
---|
63 | 68 | /* NFSv4 delegation-related procedures */ |
---|
64 | | -int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync); |
---|
| 69 | +int nfs4_proc_delegreturn(struct inode *inode, const struct cred *cred, const nfs4_stateid *stateid, int issync); |
---|
65 | 70 | int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid); |
---|
66 | 71 | int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state, const nfs4_stateid *stateid); |
---|
67 | | -bool nfs4_copy_delegation_stateid(struct inode *inode, fmode_t flags, nfs4_stateid *dst, struct rpc_cred **cred); |
---|
| 72 | +bool nfs4_copy_delegation_stateid(struct inode *inode, fmode_t flags, nfs4_stateid *dst, const struct cred **cred); |
---|
68 | 73 | bool nfs4_refresh_delegation_stateid(nfs4_stateid *dst, struct inode *inode); |
---|
69 | 74 | |
---|
70 | 75 | struct nfs_delegation *nfs4_get_valid_delegation(const struct inode *inode); |
---|