diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-05 11:53:53 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-05 11:53:53 -0800 |
commit | 9467c4fdd66f6810cecef0f1173330f3c6e67d45 (patch) | |
tree | 5fea180a10127c893b288dff2c8788b72d2eaea3 /fs/nfs | |
parent | 35c2e967d067ff02dc944f2434f024419c2fe83a (diff) | |
parent | a9185b41a4f84971b930c519f0c63bd450c4810d (diff) | |
download | op-kernel-dev-9467c4fdd66f6810cecef0f1173330f3c6e67d45.zip op-kernel-dev-9467c4fdd66f6810cecef0f1173330f3c6e67d45.tar.gz |
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')
-rw-r--r-- | fs/nfs/inode.c | 10 | ||||
-rw-r--r-- | fs/nfs/internal.h | 2 |
2 files changed, 4 insertions, 8 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 7570573..7f9ecc4 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); diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 29e464d..11f82f0 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -211,7 +211,7 @@ extern int nfs_access_cache_shrinker(int nr_to_scan, gfp_t gfp_mask); extern struct workqueue_struct *nfsiod_workqueue; extern struct inode *nfs_alloc_inode(struct super_block *sb); extern void nfs_destroy_inode(struct inode *); -extern int nfs_write_inode(struct inode *,int); +extern int nfs_write_inode(struct inode *, struct writeback_control *); extern void nfs_clear_inode(struct inode *); #ifdef CONFIG_NFS_V4 extern void nfs4_clear_inode(struct inode *); |