]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
CIFS: Fix the VFS brlock cache usage in posix locking case
authorPavel Shilovsky <piastry@etersoft.ru>
Sat, 29 Oct 2011 13:17:57 +0000 (17:17 +0400)
committerSteve French <smfrench@gmail.com>
Sun, 30 Oct 2011 03:03:14 +0000 (22:03 -0500)
Request to the cache in FL_POSIX case only.

Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <smfrench@gmail.com>
fs/cifs/file.c

index 91e05f2f0acfb3bb58797472d09fe60d19f29120..c1f063cd1b0cf2cd5d8d957a4a65f75b61a4c42a 100644 (file)
@@ -793,6 +793,9 @@ cifs_posix_lock_test(struct file *file, struct file_lock *flock)
        struct cifsInodeInfo *cinode = CIFS_I(file->f_path.dentry->d_inode);
        unsigned char saved_type = flock->fl_type;
 
+       if ((flock->fl_flags & FL_POSIX) == 0)
+               return 1;
+
        mutex_lock(&cinode->lock_mutex);
        posix_test_lock(file, flock);
 
@@ -809,12 +812,15 @@ static int
 cifs_posix_lock_set(struct file *file, struct file_lock *flock)
 {
        struct cifsInodeInfo *cinode = CIFS_I(file->f_path.dentry->d_inode);
-       int rc;
+       int rc = 1;
+
+       if ((flock->fl_flags & FL_POSIX) == 0)
+               return rc;
 
        mutex_lock(&cinode->lock_mutex);
        if (!cinode->can_cache_brlcks) {
                mutex_unlock(&cinode->lock_mutex);
-               return 1;
+               return rc;
        }
        rc = posix_lock_file_wait(file, flock);
        mutex_unlock(&cinode->lock_mutex);