[PATCH] msync(): use do_fsync()
authorAndrew Morton <akpm@osdl.org>
Fri, 24 Mar 2006 11:18:15 +0000 (03:18 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 24 Mar 2006 15:33:27 +0000 (07:33 -0800)
No need to duplicate all that code.

Cc: Hugh Dickins <hugh@veritas.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/msync.c

index d6a50f3..2672b8d 100644 (file)
@@ -9,6 +9,7 @@
  */
 #include <linux/slab.h>
 #include <linux/pagemap.h>
+#include <linux/fs.h>
 #include <linux/mm.h>
 #include <linux/mman.h>
 #include <linux/hugetlb.h>
@@ -214,23 +215,9 @@ asmlinkage long sys_msync(unsigned long start, size_t len, int flags)
                        vma = find_vma(current->mm, start);
                } else if ((flags & MS_SYNC) && file &&
                                (vma->vm_flags & VM_SHARED)) {
-                       struct address_space *mapping;
-                       int err;
-
                        get_file(file);
                        up_read(&current->mm->mmap_sem);
-                       mapping = file->f_mapping;
-                       error = filemap_fdatawrite(mapping);
-                       if (file->f_op && file->f_op->fsync) {
-                               mutex_lock(&mapping->host->i_mutex);
-                               err = file->f_op->fsync(file,file->f_dentry,1);
-                               mutex_unlock(&mapping->host->i_mutex);
-                               if (err && !error)
-                                       error = err;
-                       }
-                       err = filemap_fdatawait(mapping);
-                       if (err && !error)
-                               error = err;
+                       error = do_fsync(file, 0);
                        fput(file);
                        down_read(&current->mm->mmap_sem);
                        if (error)