diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-05 20:53:53 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-05 20:53:53 +0100 |
commit | 9467c4fdd66f6810cecef0f1173330f3c6e67d45 (patch) | |
tree | 5fea180a10127c893b288dff2c8788b72d2eaea3 /fs/nfs/inode.c | |
parent | Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vir... (diff) | |
parent | pass writeback_control to ->write_inode (diff) | |
download | linux-9467c4fdd66f6810cecef0f1173330f3c6e67d45.tar.xz linux-9467c4fdd66f6810cecef0f1173330f3c6e67d45.zip |
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.c | 10 |
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) return ino; } -int nfs_write_inode(struct inode *inode, int sync) +int nfs_write_inode(struct inode *inode, struct writeback_control *wbc) { int ret; - if (sync) { - ret = filemap_fdatawait(inode->i_mapping); - if (ret == 0) - ret = nfs_commit_inode(inode, FLUSH_SYNC); - } else - ret = nfs_commit_inode(inode, 0); + ret = nfs_commit_inode(inode, + wbc->sync_mode == WB_SYNC_ALL ? FLUSH_SYNC : 0); if (ret >= 0) return 0; __mark_inode_dirty(inode, I_DIRTY_DATASYNC); |