aboutsummaryrefslogtreecommitdiffstats
path: root/fs/lockd/svclock.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2008-02-06 13:59:23 -0500
committerJ. Bruce Fields <bfields@citi.umich.edu>2008-10-03 16:19:19 -0400
commitb2b5028905226f85075a408b1118857c9aa48bb3 (patch)
tree79d4e32fe7b0f4f12282282f0b0147ca2b438171 /fs/lockd/svclock.c
parentaf558e33bedab672f5cfd3260bce7445e353fe21 (diff)
lockd: move grace period checks to common code
Do all the grace period checks in svclock.c. This simplifies the code a bit, and will ease some later changes. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs/lockd/svclock.c')
-rw-r--r--fs/lockd/svclock.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c
index cf0d5c2c318d..808d246ada4d 100644
--- a/fs/lockd/svclock.c
+++ b/fs/lockd/svclock.c
@@ -360,7 +360,7 @@ nlmsvc_defer_lock_rqst(struct svc_rqst *rqstp, struct nlm_block *block)
360__be32 360__be32
361nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, 361nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file,
362 struct nlm_host *host, struct nlm_lock *lock, int wait, 362 struct nlm_host *host, struct nlm_lock *lock, int wait,
363 struct nlm_cookie *cookie) 363 struct nlm_cookie *cookie, int reclaim)
364{ 364{
365 struct nlm_block *block = NULL; 365 struct nlm_block *block = NULL;
366 int error; 366 int error;
@@ -406,6 +406,11 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file,
406 goto out; 406 goto out;
407 } 407 }
408 408
409 if (locks_in_grace() && !reclaim) {
410 ret = nlm_lck_denied_grace_period;
411 goto out;
412 }
413
409 if (!wait) 414 if (!wait)
410 lock->fl.fl_flags &= ~FL_SLEEP; 415 lock->fl.fl_flags &= ~FL_SLEEP;
411 error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL); 416 error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL);
@@ -502,6 +507,10 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file,
502 goto out; 507 goto out;
503 } 508 }
504 509
510 if (locks_in_grace()) {
511 ret = nlm_lck_denied_grace_period;
512 goto out;
513 }
505 error = vfs_test_lock(file->f_file, &lock->fl); 514 error = vfs_test_lock(file->f_file, &lock->fl);
506 if (error == FILE_LOCK_DEFERRED) { 515 if (error == FILE_LOCK_DEFERRED) {
507 ret = nlmsvc_defer_lock_rqst(rqstp, block); 516 ret = nlmsvc_defer_lock_rqst(rqstp, block);
@@ -582,6 +591,9 @@ nlmsvc_cancel_blocked(struct nlm_file *file, struct nlm_lock *lock)
582 (long long)lock->fl.fl_start, 591 (long long)lock->fl.fl_start,
583 (long long)lock->fl.fl_end); 592 (long long)lock->fl.fl_end);
584 593
594 if (locks_in_grace())
595 return nlm_lck_denied_grace_period;
596
585 mutex_lock(&file->f_mutex); 597 mutex_lock(&file->f_mutex);
586 block = nlmsvc_lookup_block(file, lock); 598 block = nlmsvc_lookup_block(file, lock);
587 mutex_unlock(&file->f_mutex); 599 mutex_unlock(&file->f_mutex);