From f19675640cfdb96ca589f9368ee463cf8dbd286b Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Mon, 9 Feb 2009 12:30:43 -0500 Subject: [PATCH] --- yaml --- r: 142147 b: refs/heads/master c: e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450 h: refs/heads/master i: 142145: ede017ca595bb9428c5687713f8996e4cec9e1d3 142143: d887655eaed3881faebb98f4b53735947857bc30 v: v3 --- [refs] | 2 +- trunk/fs/lockd/svclock.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 79f4722193ba..6078bb066f60 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e37da04ed145d45c2a698d7cb373a7e1191fbe86 +refs/heads/master: e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450 diff --git a/trunk/fs/lockd/svclock.c b/trunk/fs/lockd/svclock.c index 763b78a6e9de..83ee34203bd7 100644 --- a/trunk/fs/lockd/svclock.c +++ b/trunk/fs/lockd/svclock.c @@ -426,8 +426,15 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, ret = nlm_granted; goto out; case -EAGAIN: + /* + * If this is a blocking request for an + * already pending lock request then we need + * to put it back on lockd's block list + */ + if (wait) + break; ret = nlm_lck_denied; - break; + goto out; case FILE_LOCK_DEFERRED: if (wait) break; @@ -443,10 +450,6 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, goto out; } - ret = nlm_lck_denied; - if (!wait) - goto out; - ret = nlm_lck_blocked; /* Append to list of blocked */