| .. | .. |
|---|
| 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); |
|---|