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