nfsd: make sure data is on disk before calling ->fsync
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 <hch@lst.de> Cc: stable@kernel.org Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
f69ac2f5a3
commit
7211a4e859
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue