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