2011/10/26 Pavel Shilovsky <piastry@xxxxxxxxxxx>: > and simplify the error handling. > > Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx> > --- > 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; Seems like we haven't return rc from posix_lock_file_wait, because we have already set a lock on the server - will respin this patch. -- Best regards, Pavel Shilovsky. -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html