]> Pileus Git - ~andy/linux/blobdiff - fs/exofs/file.c
Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux
[~andy/linux] / fs / exofs / file.c
index 45ca323d8363440b1c0641c6b29302911677eb9d..491c6c078e7f5e0ac420646288452d93cca86ce2 100644 (file)
@@ -42,11 +42,19 @@ static int exofs_release_file(struct inode *inode, struct file *filp)
  *   Note, in exofs all metadata is written as part of inode, regardless.
  *   The writeout is synchronous
  */
-static int exofs_file_fsync(struct file *filp, int datasync)
+static int exofs_file_fsync(struct file *filp, loff_t start, loff_t end,
+                           int datasync)
 {
+       struct inode *inode = filp->f_mapping->host;
        int ret;
 
+       ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
+       if (ret)
+               return ret;
+
+       mutex_lock(&inode->i_mutex);
        ret = sync_inode_metadata(filp->f_mapping->host, 1);
+       mutex_unlock(&inode->i_mutex);
        return ret;
 }