Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6d34ac199a4af5c678a3a8f3275aeb2586b72da3
Commit:     6d34ac199a4af5c678a3a8f3275aeb2586b72da3
Parent:     370f6599e8bc03fd9fc6d1a1be00ae0c6373ca59
Author:     J. Bruce Fields <[EMAIL PROTECTED]>
AuthorDate: Fri May 11 16:09:32 2007 -0400
Committer:  J. Bruce Fields <[EMAIL PROTECTED]>
CommitDate: Wed Jul 18 19:17:19 2007 -0400

    locks: make posix_test_lock() interface more consistent
    
    Since posix_test_lock(), like fcntl() and ->lock(), indicates absence or
    presence of a conflict lock by setting fl_type to, respectively, F_UNLCK
    or something other than F_UNLCK, the return value is no longer needed.
    
    Signed-off-by: "J. Bruce Fields" <[EMAIL PROTECTED]>
---
 fs/locks.c         |   10 ++++------
 fs/nfs/file.c      |    4 +++-
 include/linux/fs.h |    2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/fs/locks.c b/fs/locks.c
index 4c73b85..4a80727 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -659,7 +659,7 @@ static int locks_block_on_timeout(struct file_lock 
*blocker, struct file_lock *w
        return result;
 }
 
-int
+void
 posix_test_lock(struct file *filp, struct file_lock *fl)
 {
        struct file_lock *cfl;
@@ -671,14 +671,12 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
                if (posix_locks_conflict(cfl, fl))
                        break;
        }
-       if (cfl) {
+       if (cfl)
                __locks_copy_lock(fl, cfl);
-               unlock_kernel();
-               return 1;
-       } else
+       else
                fl->fl_type = F_UNLCK;
        unlock_kernel();
-       return 0;
+       return;
 }
 
 EXPORT_SYMBOL(posix_test_lock);
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 13ac6fa..c87dc71 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -402,7 +402,9 @@ static int do_getlk(struct file *filp, int cmd, struct 
file_lock *fl)
 
        lock_kernel();
        /* Try local locking first */
-       if (posix_test_lock(filp, fl)) {
+       posix_test_lock(filp, fl);
+       if (fl->fl_type != F_UNLCK) {
+               /* found a conflict */
                goto out;
        }
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index b188c2e..80deaaf 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -862,7 +862,7 @@ extern void locks_init_lock(struct file_lock *);
 extern void locks_copy_lock(struct file_lock *, struct file_lock *);
 extern void locks_remove_posix(struct file *, fl_owner_t);
 extern void locks_remove_flock(struct file *);
-extern int posix_test_lock(struct file *, struct file_lock *);
+extern void posix_test_lock(struct file *, struct file_lock *);
 extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock 
*);
 extern int posix_lock_file_wait(struct file *, struct file_lock *);
 extern int posix_unblock_lock(struct file *, struct file_lock *);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to