public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix bug at nlmclnt_lock()
@ 2009-11-12  9:40 Mi Jinlong
  0 siblings, 0 replies; only message in thread
From: Mi Jinlong @ 2009-11-12  9:40 UTC (permalink / raw)
  To: Trond.Myklebust; +Cc: NFSv3 list, J. Bruce Fields

When testing NLM, i found a bug.

Test process:
step1: client open file.
step2: keep network partition.
step3: client call fcntl with SETLKW to get lock.
       (it will timeout and return -1)
step4: recover network.
step5: client try to get lock again, but it always fail.

At nlmclnt_lock(), resp->status is set to "nlm_lck_blocked" 
by default before call nlmclnt_call().

So at step3, when nlmclnt_call return error because network partition,
client will think the nlm_lck_blocked was replied from server, and it
just send cancel request not unlock.

Signed-off-by: mijinlong@cn.fujitsu.com
---
 fs/lockd/clntproc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c
index c81249f..a631582 100644
--- a/fs/lockd/clntproc.c
+++ b/fs/lockd/clntproc.c
@@ -535,7 +535,7 @@ again:
 	 * Initialise resp->status to a valid non-zero value,
 	 * since 0 == nlm_lck_granted
 	 */
-	resp->status = nlm_lck_blocked;
+	resp->status = nlm_lck_denied_nolocks;
 	for(;;) {
 		/* Reboot protection */
 		fl->fl_u.nfs_fl.state = host->h_state;
-- 
1.6.2

thanks,
Mi Jinlong


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-11-12  9:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-12  9:40 [PATCH] Fix bug at nlmclnt_lock() Mi Jinlong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox