[CIFS] Fix to problem with getattr caused by invalidate simplification patch
Steve French [Fri, 20 May 2011 17:00:01 +0000 (17:00 +0000)]
Fix to earlier "Simplify invalidate part (try #6)" patch
That patch caused problems with connectathon test 5.

Reviewed-by: Jeff Layton <jlayton@samba.org>
Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <sfrench@us.ibm.com>

fs/cifs/cifsfs.c
fs/cifs/inode.c

index ed92c7d..493b74c 100644 (file)
@@ -617,8 +617,10 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin)
                if (!CIFS_I(inode)->clientCanCacheRead && inode->i_mapping &&
                    inode->i_mapping->nrpages != 0) {
                        rc = filemap_fdatawait(inode->i_mapping);
-                       mapping_set_error(inode->i_mapping, rc);
-                       return rc;
+                       if (rc) {
+                               mapping_set_error(inode->i_mapping, rc);
+                               return rc;
+                       }
                }
                /*
                 * Some applications poll for the file length in this strange
index 0cc7edd..de02ed5 100644 (file)
@@ -1805,8 +1805,10 @@ int cifs_getattr(struct vfsmount *mnt, struct dentry *dentry,
        if (!CIFS_I(inode)->clientCanCacheRead && inode->i_mapping &&
            inode->i_mapping->nrpages != 0) {
                rc = filemap_fdatawait(inode->i_mapping);
-               mapping_set_error(inode->i_mapping, rc);
-               return rc;
+               if (rc) {
+                       mapping_set_error(inode->i_mapping, rc);
+                       return rc;
+               }
        }
 
        rc = cifs_revalidate_dentry_attr(dentry);