diff options
Diffstat (limited to 'fs/nfs/delegation.c')
-rw-r--r-- | fs/nfs/delegation.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 071b90a45933..af549d70ec50 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
@@ -53,6 +53,16 @@ nfs4_is_valid_delegation(const struct nfs_delegation *delegation, | |||
53 | return false; | 53 | return false; |
54 | } | 54 | } |
55 | 55 | ||
56 | struct nfs_delegation *nfs4_get_valid_delegation(const struct inode *inode) | ||
57 | { | ||
58 | struct nfs_delegation *delegation; | ||
59 | |||
60 | delegation = rcu_dereference(NFS_I(inode)->delegation); | ||
61 | if (nfs4_is_valid_delegation(delegation, 0)) | ||
62 | return delegation; | ||
63 | return NULL; | ||
64 | } | ||
65 | |||
56 | static int | 66 | static int |
57 | nfs4_do_check_delegation(struct inode *inode, fmode_t flags, bool mark) | 67 | nfs4_do_check_delegation(struct inode *inode, fmode_t flags, bool mark) |
58 | { | 68 | { |
@@ -1181,7 +1191,7 @@ bool nfs4_refresh_delegation_stateid(nfs4_stateid *dst, struct inode *inode) | |||
1181 | if (delegation != NULL && | 1191 | if (delegation != NULL && |
1182 | nfs4_stateid_match_other(dst, &delegation->stateid)) { | 1192 | nfs4_stateid_match_other(dst, &delegation->stateid)) { |
1183 | dst->seqid = delegation->stateid.seqid; | 1193 | dst->seqid = delegation->stateid.seqid; |
1184 | return ret; | 1194 | ret = true; |
1185 | } | 1195 | } |
1186 | rcu_read_unlock(); | 1196 | rcu_read_unlock(); |
1187 | out: | 1197 | out: |