summary refs log tree commit diff
path: root/fs/lockd
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2009-02-09 12:30:43 -0500
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-03-18 17:30:50 -0400
commite33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450 (patch)
treebbf0b7e86ac3860df9c1906711ad379bcc5681ed /fs/lockd
parente37da04ed145d45c2a698d7cb373a7e1191fbe86 (diff)
downloadlinux-e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450.tar.gz
lockd: clean up blocking lock cases of nlsmvc_lock()
No change in behavior, just rearranging the switch so that we break out
of the switch if and only if we're in the wait case.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs/lockd')
-rw-r--r--fs/lockd/svclock.c13
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,
 			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 */