|
@@ -4002,7 +4002,7 @@ static const struct rpc_call_ops nfs4_lock_ops = {
|
|
|
.rpc_release = nfs4_lock_release,
|
|
|
};
|
|
|
|
|
|
-static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int reclaim)
|
|
|
+static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int recovery_type)
|
|
|
{
|
|
|
struct nfs4_lockdata *data;
|
|
|
struct rpc_task *task;
|
|
@@ -4026,8 +4026,8 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
|
|
|
return -ENOMEM;
|
|
|
if (IS_SETLKW(cmd))
|
|
|
data->arg.block = 1;
|
|
|
- if (reclaim != 0)
|
|
|
- data->arg.reclaim = 1;
|
|
|
+ if (recovery_type == NFS_LOCK_RECLAIM)
|
|
|
+ data->arg.reclaim = NFS_LOCK_RECLAIM;
|
|
|
msg.rpc_argp = &data->arg,
|
|
|
msg.rpc_resp = &data->res,
|
|
|
task_setup_data.callback_data = data;
|
|
@@ -4054,7 +4054,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
|
|
|
/* Cache the lock if possible... */
|
|
|
if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
|
|
|
return 0;
|
|
|
- err = _nfs4_do_setlk(state, F_SETLK, request, 1);
|
|
|
+ err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_RECLAIM);
|
|
|
if (err != -NFS4ERR_DELAY)
|
|
|
break;
|
|
|
nfs4_handle_exception(server, err, &exception);
|
|
@@ -4074,7 +4074,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request
|
|
|
do {
|
|
|
if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
|
|
|
return 0;
|
|
|
- err = _nfs4_do_setlk(state, F_SETLK, request, 0);
|
|
|
+ err = _nfs4_do_setlk(state, F_SETLK, request, NFS_LOCK_EXPIRED);
|
|
|
switch (err) {
|
|
|
default:
|
|
|
goto out;
|
|
@@ -4110,7 +4110,7 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock
|
|
|
status = do_vfs_lock(request->fl_file, request);
|
|
|
goto out_unlock;
|
|
|
}
|
|
|
- status = _nfs4_do_setlk(state, cmd, request, 0);
|
|
|
+ status = _nfs4_do_setlk(state, cmd, request, NFS_LOCK_NEW);
|
|
|
if (status != 0)
|
|
|
goto out_unlock;
|
|
|
/* Note: we always want to sleep here! */
|
|
@@ -4193,7 +4193,7 @@ int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
|
|
|
if (err != 0)
|
|
|
goto out;
|
|
|
do {
|
|
|
- err = _nfs4_do_setlk(state, F_SETLK, fl, 0);
|
|
|
+ err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
|
|
|
switch (err) {
|
|
|
default:
|
|
|
printk(KERN_ERR "%s: unhandled error %d.\n",
|