diff options
Diffstat (limited to 'fs/lockd/svclock.c')
-rw-r--r-- | fs/lockd/svclock.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 763b78a6e9de..83ee34203bd7 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c | |||
@@ -426,8 +426,15 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, | |||
426 | ret = nlm_granted; | 426 | ret = nlm_granted; |
427 | goto out; | 427 | goto out; |
428 | case -EAGAIN: | 428 | case -EAGAIN: |
429 | /* | ||
430 | * If this is a blocking request for an | ||
431 | * already pending lock request then we need | ||
432 | * to put it back on lockd's block list | ||
433 | */ | ||
434 | if (wait) | ||
435 | break; | ||
429 | ret = nlm_lck_denied; | 436 | ret = nlm_lck_denied; |
430 | break; | 437 | goto out; |
431 | case FILE_LOCK_DEFERRED: | 438 | case FILE_LOCK_DEFERRED: |
432 | if (wait) | 439 | if (wait) |
433 | break; | 440 | break; |
@@ -443,10 +450,6 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, | |||
443 | goto out; | 450 | goto out; |
444 | } | 451 | } |
445 | 452 | ||
446 | ret = nlm_lck_denied; | ||
447 | if (!wait) | ||
448 | goto out; | ||
449 | |||
450 | ret = nlm_lck_blocked; | 453 | ret = nlm_lck_blocked; |
451 | 454 | ||
452 | /* Append to list of blocked */ | 455 | /* Append to list of blocked */ |