Commit 8f2e9f15 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] msync(): use do_fsync()

No need to duplicate all that code.

Cc: Hugh Dickins <hugh@veritas.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 18e79b40
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/fs.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/mman.h> #include <linux/mman.h>
#include <linux/hugetlb.h> #include <linux/hugetlb.h>
...@@ -214,23 +215,9 @@ asmlinkage long sys_msync(unsigned long start, size_t len, int flags) ...@@ -214,23 +215,9 @@ asmlinkage long sys_msync(unsigned long start, size_t len, int flags)
vma = find_vma(current->mm, start); vma = find_vma(current->mm, start);
} else if ((flags & MS_SYNC) && file && } else if ((flags & MS_SYNC) && file &&
(vma->vm_flags & VM_SHARED)) { (vma->vm_flags & VM_SHARED)) {
struct address_space *mapping;
int err;
get_file(file); get_file(file);
up_read(&current->mm->mmap_sem); up_read(&current->mm->mmap_sem);
mapping = file->f_mapping; error = do_fsync(file, 0);
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;
fput(file); fput(file);
down_read(&current->mm->mmap_sem); down_read(&current->mm->mmap_sem);
if (error) if (error)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment