summaryrefslogtreecommitdiffstats
path: root/fs/nfs/delegation.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/delegation.c')
-rw-r--r--fs/nfs/delegation.c12
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
56struct 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
56static int 66static int
57nfs4_do_check_delegation(struct inode *inode, fmode_t flags, bool mark) 67nfs4_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();
1187out: 1197out: