diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 54ff465cf7cf..e6a9322a321f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -3124,6 +3124,24 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request) | |||
3124 | return status; | 3124 | return status; |
3125 | } | 3125 | } |
3126 | 3126 | ||
3127 | int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl) | ||
3128 | { | ||
3129 | struct nfs_server *server = NFS_SERVER(state->inode); | ||
3130 | struct nfs4_exception exception = { }; | ||
3131 | int err; | ||
3132 | |||
3133 | err = nfs4_set_lock_state(state, fl); | ||
3134 | if (err != 0) | ||
3135 | goto out; | ||
3136 | do { | ||
3137 | err = _nfs4_do_setlk(state, F_SETLK, fl, 0); | ||
3138 | if (err != -NFS4ERR_DELAY) | ||
3139 | break; | ||
3140 | err = nfs4_handle_exception(server, err, &exception); | ||
3141 | } while (exception.retry); | ||
3142 | out: | ||
3143 | return err; | ||
3144 | } | ||
3127 | 3145 | ||
3128 | #define XATTR_NAME_NFSV4_ACL "system.nfs4_acl" | 3146 | #define XATTR_NAME_NFSV4_ACL "system.nfs4_acl" |
3129 | 3147 | ||