* [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