aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/nfs4_fs.h4
-rw-r--r--fs/nfs/nfs4proc.c14
2 files changed, 11 insertions, 7 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 7e57b04e4014..e8791d5a2f7a 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -108,6 +108,10 @@ enum {
108 NFS_OWNER_RECLAIM_NOGRACE 108 NFS_OWNER_RECLAIM_NOGRACE
109}; 109};
110 110
111#define NFS_LOCK_NEW 0
112#define NFS_LOCK_RECLAIM 1
113#define NFS_LOCK_EXPIRED 2
114
111/* 115/*
112 * struct nfs4_state maintains the client-side state for a given 116 * struct nfs4_state maintains the client-side state for a given
113 * (state_owner,inode) tuple (OPEN) or state_owner (LOCK). 117 * (state_owner,inode) tuple (OPEN) or state_owner (LOCK).
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 297e23310efd..d44f1071930f 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4002,7 +4002,7 @@ static const struct rpc_call_ops nfs4_lock_ops = {
4002 .rpc_release = nfs4_lock_release, 4002 .rpc_release = nfs4_lock_release,
4003}; 4003};
4004 4004
4005static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int reclaim) 4005static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int recovery_type)
4006{ 4006{
4007 struct nfs4_lockdata *data; 4007 struct nfs4_lockdata *data;
4008 struct rpc_task *task; 4008 struct rpc_task *task;
@@ -4026,8 +4026,8 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
4026 return -ENOMEM; 4026 return -ENOMEM;
4027 if (IS_SETLKW(cmd)) 4027 if (IS_SETLKW(cmd))
4028 data->arg.block = 1; 4028 data->arg.block = 1;
4029 if (reclaim != 0) 4029 if (recovery_type == NFS_LOCK_RECLAIM)
4030 data->arg.reclaim = 1; 4030 data->arg.reclaim = NFS_LOCK_RECLAIM;
4031 msg.rpc_argp = &data->arg, 4031 msg.rpc_argp = &data->arg,
4032 msg.rpc_resp = &data->res, 4032 msg.rpc_resp = &data->res,
4033 task_setup_data.callback_data = data; 4033 task_setup_data.callback_data = data;
@@ -4054,7 +4054,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
4054 /* Cache the lock if possible... */ 4054 /* Cache the lock if possible... */
4055 if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) 4055 if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
4056 return 0; 4056 return 0;
4057 err = _nfs4_do_setlk(state, F_SETLK, request, 1); 4057 err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM);
4058 if (err != -NFS4ERR_DELAY) 4058 if (err != -NFS4ERR_DELAY)
4059 break; 4059 break;
4060 nfs4_handle_exception(server, err, &exception); 4060 nfs4_handle_exception(server, err, &exception);
@@ -4074,7 +4074,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request
4074 do { 4074 do {
4075 if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) 4075 if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
4076 return 0; 4076 return 0;
4077 err = _nfs4_do_setlk(state, F_SETLK, request, 0); 4077 err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED);
4078 switch (err) { 4078 switch (err) {
4079 default: 4079 default:
4080 goto out; 4080 goto out;
@@ -4110,7 +4110,7 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock
4110 status = do_vfs_lock(request->fl_file, request); 4110 status = do_vfs_lock(request->fl_file, request);
4111 goto out_unlock; 4111 goto out_unlock;
4112 } 4112 }
4113 status = _nfs4_do_setlk(state, cmd, request, 0); 4113 status = _nfs4_do_setlk(state, cmd, request, NFS_LOCK_NEW);
4114 if (status != 0) 4114 if (status != 0)
4115 goto out_unlock; 4115 goto out_unlock;
4116 /* Note: we always want to sleep here! */ 4116 /* Note: we always want to sleep here! */
@@ -4193,7 +4193,7 @@ int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
4193 if (err != 0) 4193 if (err != 0)
4194 goto out; 4194 goto out;
4195 do { 4195 do {
4196 err = _nfs4_do_setlk(state, F_SETLK, fl, 0); 4196 err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
4197 switch (err) { 4197 switch (err) {
4198 default: 4198 default:
4199 printk(KERN_ERR "%s: unhandled error %d.\n", 4199 printk(KERN_ERR "%s: unhandled error %d.\n",