diff options
author | Marc Eshel <eshel@almaden.ibm.com> | 2006-11-28 16:27:06 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2007-05-06 20:38:50 -0400 |
commit | 85f3f1b3f7a6197b51a2ab98d927517df730214c (patch) | |
tree | 198465d6798b5483be2540fb6e1c0badc96d9265 /fs | |
parent | 0e4ac9d93515b27fd7635332d73eae3192ed5d4e (diff) |
lockd: pass cookie in nlmsvc_testlock
Change NLM internal interface to pass more information for test lock; we
need this to make sure the cookie information is pushed down to the place
where we do request deferral, which is handled for testlock by the
following patch.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/lockd/svc4proc.c | 2 | ||||
-rw-r--r-- | fs/lockd/svclock.c | 5 | ||||
-rw-r--r-- | fs/lockd/svcproc.c | 2 |
3 files changed, 5 insertions, 4 deletions
diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c index 47a66aa5d55b..a1bccad7ebd3 100644 --- a/fs/lockd/svc4proc.c +++ b/fs/lockd/svc4proc.c | |||
@@ -99,7 +99,7 @@ nlm4svc_proc_test(struct svc_rqst *rqstp, struct nlm_args *argp, | |||
99 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; | 99 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; |
100 | 100 | ||
101 | /* Now check for conflicting locks */ | 101 | /* Now check for conflicting locks */ |
102 | resp->status = nlmsvc_testlock(file, &argp->lock, &resp->lock); | 102 | resp->status = nlmsvc_testlock(rqstp, file, &argp->lock, &resp->lock, &resp->cookie); |
103 | 103 | ||
104 | dprintk("lockd: TEST4 status %d\n", ntohl(resp->status)); | 104 | dprintk("lockd: TEST4 status %d\n", ntohl(resp->status)); |
105 | nlm_release_host(host); | 105 | nlm_release_host(host); |
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 6e748573e0c6..7ab2e60c51f7 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c | |||
@@ -442,8 +442,9 @@ out: | |||
442 | * Test for presence of a conflicting lock. | 442 | * Test for presence of a conflicting lock. |
443 | */ | 443 | */ |
444 | __be32 | 444 | __be32 |
445 | nlmsvc_testlock(struct nlm_file *file, struct nlm_lock *lock, | 445 | nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file, |
446 | struct nlm_lock *conflock) | 446 | struct nlm_lock *lock, struct nlm_lock *conflock, |
447 | struct nlm_cookie *cookie) | ||
447 | { | 448 | { |
448 | dprintk("lockd: nlmsvc_testlock(%s/%ld, ty=%d, %Ld-%Ld)\n", | 449 | dprintk("lockd: nlmsvc_testlock(%s/%ld, ty=%d, %Ld-%Ld)\n", |
449 | file->f_file->f_path.dentry->d_inode->i_sb->s_id, | 450 | file->f_file->f_path.dentry->d_inode->i_sb->s_id, |
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c index 31cb48425733..d13b827dfd34 100644 --- a/fs/lockd/svcproc.c +++ b/fs/lockd/svcproc.c | |||
@@ -127,7 +127,7 @@ nlmsvc_proc_test(struct svc_rqst *rqstp, struct nlm_args *argp, | |||
127 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; | 127 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; |
128 | 128 | ||
129 | /* Now check for conflicting locks */ | 129 | /* Now check for conflicting locks */ |
130 | resp->status = cast_status(nlmsvc_testlock(file, &argp->lock, &resp->lock)); | 130 | resp->status = cast_status(nlmsvc_testlock(rqstp, file, &argp->lock, &resp->lock, &resp->cookie)); |
131 | 131 | ||
132 | dprintk("lockd: TEST status %d vers %d\n", | 132 | dprintk("lockd: TEST status %d vers %d\n", |
133 | ntohl(resp->status), rqstp->rq_vers); | 133 | ntohl(resp->status), rqstp->rq_vers); |