提交 afe6c27c 编写于 作者: A Alexandros Batsakis 提交者: Trond Myklebust

nfs: change nfs4_do_setlk params to identify recovery type

Signed-off-by: NAlexandros Batsakis <batsakis@netapp.com>
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 0f7e7206
...@@ -108,6 +108,10 @@ enum { ...@@ -108,6 +108,10 @@ enum {
NFS_OWNER_RECLAIM_NOGRACE NFS_OWNER_RECLAIM_NOGRACE
}; };
#define NFS_LOCK_NEW 0
#define NFS_LOCK_RECLAIM 1
#define NFS_LOCK_EXPIRED 2
/* /*
* struct nfs4_state maintains the client-side state for a given * struct nfs4_state maintains the client-side state for a given
* (state_owner,inode) tuple (OPEN) or state_owner (LOCK). * (state_owner,inode) tuple (OPEN) or state_owner (LOCK).
......
...@@ -4002,7 +4002,7 @@ static const struct rpc_call_ops nfs4_lock_ops = { ...@@ -4002,7 +4002,7 @@ static const struct rpc_call_ops nfs4_lock_ops = {
.rpc_release = nfs4_lock_release, .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 nfs4_lockdata *data;
struct rpc_task *task; struct rpc_task *task;
...@@ -4026,8 +4026,8 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f ...@@ -4026,8 +4026,8 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
return -ENOMEM; return -ENOMEM;
if (IS_SETLKW(cmd)) if (IS_SETLKW(cmd))
data->arg.block = 1; data->arg.block = 1;
if (reclaim != 0) if (recovery_type == NFS_LOCK_RECLAIM)
data->arg.reclaim = 1; data->arg.reclaim = NFS_LOCK_RECLAIM;
msg.rpc_argp = &data->arg, msg.rpc_argp = &data->arg,
msg.rpc_resp = &data->res, msg.rpc_resp = &data->res,
task_setup_data.callback_data = data; task_setup_data.callback_data = data;
...@@ -4054,7 +4054,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request ...@@ -4054,7 +4054,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
/* Cache the lock if possible... */ /* Cache the lock if possible... */
if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
return 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) if (err != -NFS4ERR_DELAY)
break; break;
nfs4_handle_exception(server, err, &exception); nfs4_handle_exception(server, err, &exception);
...@@ -4074,7 +4074,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request ...@@ -4074,7 +4074,7 @@ static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request
do { do {
if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0)
return 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) { switch (err) {
default: default:
goto out; goto out;
...@@ -4110,7 +4110,7 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock ...@@ -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); status = do_vfs_lock(request->fl_file, request);
goto out_unlock; goto out_unlock;
} }
status = _nfs4_do_setlk(state, cmd, request, 0); status = _nfs4_do_setlk(state, cmd, request, NFS_LOCK_NEW);
if (status != 0) if (status != 0)
goto out_unlock; goto out_unlock;
/* Note: we always want to sleep here! */ /* 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,7 +4193,7 @@ int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
if (err != 0) if (err != 0)
goto out; goto out;
do { do {
err = _nfs4_do_setlk(state, F_SETLK, fl, 0); err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
switch (err) { switch (err) {
default: default:
printk(KERN_ERR "%s: unhandled error %d.\n", printk(KERN_ERR "%s: unhandled error %d.\n",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册