aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/inode.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-03-05 14:53:53 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2010-03-05 14:53:53 -0500
commit9467c4fdd66f6810cecef0f1173330f3c6e67d45 (patch)
tree5fea180a10127c893b288dff2c8788b72d2eaea3 /fs/nfs/inode.c
parent35c2e967d067ff02dc944f2434f024419c2fe83a (diff)
parenta9185b41a4f84971b930c519f0c63bd450c4810d (diff)
Merge branch 'write_inode2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'write_inode2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: pass writeback_control to ->write_inode make sure data is on disk before calling ->write_inode
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r--fs/nfs/inode.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 7570573bdb30..7f9ecc46f3fb 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -97,16 +97,12 @@ u64 nfs_compat_user_ino64(u64 fileid)
97 return ino; 97 return ino;
98} 98}
99 99
100int nfs_write_inode(struct inode *inode, int sync) 100int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)
101{ 101{
102 int ret; 102 int ret;
103 103
104 if (sync) { 104 ret = nfs_commit_inode(inode,
105 ret = filemap_fdatawait(inode->i_mapping); 105 wbc->sync_mode == WB_SYNC_ALL ? FLUSH_SYNC : 0);
106 if (ret == 0)
107 ret = nfs_commit_inode(inode, FLUSH_SYNC);
108 } else
109 ret = nfs_commit_inode(inode, 0);
110 if (ret >= 0) 106 if (ret >= 0)
111 return 0; 107 return 0;
112 __mark_inode_dirty(inode, I_DIRTY_DATASYNC); 108 __mark_inode_dirty(inode, I_DIRTY_DATASYNC);