Blame view
fs/nfs/delegation.h
2.51 KB
1da177e4c
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* * linux/fs/nfs/delegation.h * * Copyright (c) Trond Myklebust * * Definitions pertaining to NFS delegated files */ #ifndef FS_NFS_DELEGATION_H #define FS_NFS_DELEGATION_H #if defined(CONFIG_NFS_V4) /* * NFSv4 delegation */ struct nfs_delegation { struct list_head super_list; struct rpc_cred *cred; struct inode *inode; nfs4_stateid stateid; |
bd7bf9d54
|
20 |
fmode_t type; |
1da177e4c
|
21 |
loff_t maxsize; |
beb2a5ec3
|
22 |
__u64 change_attr; |
15c831bf1
|
23 |
unsigned long flags; |
343104308
|
24 |
spinlock_t lock; |
8383e4602
|
25 |
struct rcu_head rcu; |
1da177e4c
|
26 |
}; |
515d86117
|
27 28 29 |
enum { NFS_DELEGATION_NEED_RECLAIM = 0, NFS_DELEGATION_RETURN, |
b7391f44f
|
30 |
NFS_DELEGATION_REFERENCED, |
515d86117
|
31 |
}; |
1da177e4c
|
32 33 |
int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res); void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res); |
901630278
|
34 |
int nfs_inode_return_delegation(struct inode *inode); |
e047a10c1
|
35 |
int nfs_async_inode_return_delegation(struct inode *inode, const nfs4_stateid *stateid); |
e6f810759
|
36 |
void nfs_inode_return_delegation_noreclaim(struct inode *inode); |
1da177e4c
|
37 |
|
adfa6f980
|
38 |
struct inode *nfs_delegation_find_inode(struct nfs_client *clp, const struct nfs_fh *fhandle); |
515d86117
|
39 |
void nfs_super_return_all_delegations(struct super_block *sb); |
adfa6f980
|
40 |
void nfs_expire_all_delegations(struct nfs_client *clp); |
31f096077
|
41 |
void nfs_expire_all_delegation_types(struct nfs_client *clp, fmode_t flags); |
b7391f44f
|
42 |
void nfs_expire_unreferenced_delegations(struct nfs_client *clp); |
adfa6f980
|
43 |
void nfs_handle_cb_pathdown(struct nfs_client *clp); |
d18cc1fda
|
44 |
int nfs_client_return_marked_delegations(struct nfs_client *clp); |
d3978bb32
|
45 |
int nfs_delegations_present(struct nfs_client *clp); |
1da177e4c
|
46 |
|
adfa6f980
|
47 48 |
void nfs_delegation_mark_reclaim(struct nfs_client *clp); void nfs_delegation_reap_unclaimed(struct nfs_client *clp); |
1da177e4c
|
49 50 |
/* NFSv4 delegation-related procedures */ |
e6f810759
|
51 |
int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync); |
13437e12f
|
52 |
int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid); |
888e694c1
|
53 |
int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl); |
3e4f6290c
|
54 |
int nfs4_copy_delegation_stateid(nfs4_stateid *dst, struct inode *inode); |
1da177e4c
|
55 |
|
b7391f44f
|
56 |
void nfs_mark_delegation_referenced(struct nfs_delegation *delegation); |
bd7bf9d54
|
57 |
int nfs_have_delegation(struct inode *inode, fmode_t flags); |
cae7a073a
|
58 |
|
1da177e4c
|
59 |
#else |
bd7bf9d54
|
60 |
static inline int nfs_have_delegation(struct inode *inode, fmode_t flags) |
1da177e4c
|
61 62 63 |
{ return 0; } |
cae7a073a
|
64 65 66 67 68 |
static inline int nfs_inode_return_delegation(struct inode *inode) { return 0; } |
1da177e4c
|
69 |
#endif |
b4d2314bb
|
70 71 72 73 74 |
static inline int nfs_have_delegated_attributes(struct inode *inode) { return nfs_have_delegation(inode, FMODE_READ) && !(NFS_I(inode)->cache_validity & NFS_INO_REVAL_FORCED); } |
1da177e4c
|
75 |
#endif |