and simplify the error handling.

Signed-off-by: Pavel Shilovsky <[email protected]>
---
 fs/cifs/file.c |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index a43856a..6bf14ed 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -920,6 +920,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);
 
@@ -936,12 +939,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);
@@ -1371,7 +1377,18 @@ cifs_setlk(struct file *file,  struct file_lock *flock, 
__u8 type,
                rc = CIFSSMBPosixLock(xid, tcon, netfid, current->tgid,
                                      0 /* set */, length, flock,
                                      posix_lock_type, wait_flag);
-               goto out;
+               if (rc)
+                       return rc;
+
+               if (flock->fl_flags & FL_POSIX) {
+                       rc = posix_lock_file_wait(file, flock);
+                       if (rc)
+                               cERROR(1, "Error occurs in posix_lock_file_wait"
+                                         " after we send the request to the "
+                                         "server");
+               }
+
+               return rc;
        }
 
        if (lock) {
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to