[PATCH] reiserfs: reiserfs_file_write() will lose error code when a 0-length write...
[sfrench/cifs-2.6.git] / fs / reiserfs / file.c
index be12879bb179ac881134a1c7ed9dc0d577d7b061..044de8be39a7f9875f1a77c2ea952332ec576d45 100644 (file)
@@ -1546,10 +1546,10 @@ static ssize_t reiserfs_file_write(struct file *file,   /* the file we are going t
                }
        }
 
-       if ((file->f_flags & O_SYNC) || IS_SYNC(inode))
-               res =
-                   generic_osync_inode(inode, file->f_mapping,
-                                       OSYNC_METADATA | OSYNC_DATA);
+       if (likely(res >= 0) &&
+           (unlikely((file->f_flags & O_SYNC) || IS_SYNC(inode))))
+               res = generic_osync_inode(inode, file->f_mapping,
+                                         OSYNC_METADATA | OSYNC_DATA);
 
        mutex_unlock(&inode->i_mutex);
        reiserfs_async_progress_wait(inode->i_sb);