]> Git Repo - linux.git/commitdiff
nfsd: make sure data is on disk before calling ->fsync
authorChristoph Hellwig <[email protected]>
Fri, 25 Dec 2009 16:44:45 +0000 (17:44 +0100)
committerJ. Bruce Fields <[email protected]>
Wed, 6 Jan 2010 22:37:26 +0000 (17:37 -0500)
nfsd is not using vfs_fsync, so I missed it when changing the calling
convention during the 2.6.32 window.  This patch fixes it to not only
start the data writeout, but also wait for it to complete before calling
into ->fsync.

Signed-off-by: Christoph Hellwig <[email protected]>
Cc: [email protected]
Signed-off-by: J. Bruce Fields <[email protected]>
fs/nfsd/vfs.c

index e3ef3ec0efd0675c6c8d5d5a4a154ec0cca6b80c..d5fe17cb07e3f6f7717574dbd151146a5fb25c97 100644 (file)
@@ -782,12 +782,9 @@ static inline int nfsd_dosync(struct file *filp, struct dentry *dp,
        int (*fsync) (struct file *, struct dentry *, int);
        int err;
 
-       err = filemap_fdatawrite(inode->i_mapping);
+       err = filemap_write_and_wait(inode->i_mapping);
        if (err == 0 && fop && (fsync = fop->fsync))
                err = fsync(filp, dp, 0);
-       if (err == 0)
-               err = filemap_fdatawait(inode->i_mapping);
-
        return err;
 }
 
This page took 0.056923 seconds and 4 git commands to generate.