aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
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/ext4
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/ext4')
-rw-r--r--fs/ext4/ext4.h2
-rw-r--r--fs/ext4/inode.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 6e5787a29b90..bf938cf7c5f0 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1446,7 +1446,7 @@ int ext4_get_block(struct inode *inode, sector_t iblock,
1446 struct buffer_head *bh_result, int create); 1446 struct buffer_head *bh_result, int create);
1447 1447
1448extern struct inode *ext4_iget(struct super_block *, unsigned long); 1448extern struct inode *ext4_iget(struct super_block *, unsigned long);
1449extern int ext4_write_inode(struct inode *, int); 1449extern int ext4_write_inode(struct inode *, struct writeback_control *);
1450extern int ext4_setattr(struct dentry *, struct iattr *); 1450extern int ext4_setattr(struct dentry *, struct iattr *);
1451extern int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry, 1451extern int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry,
1452 struct kstat *stat); 1452 struct kstat *stat);
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index f55df7192b95..f977aade0d1b 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -5348,7 +5348,7 @@ out_brelse:
5348 * `stuff()' is running, and the new i_size will be lost. Plus the inode 5348 * `stuff()' is running, and the new i_size will be lost. Plus the inode
5349 * will no longer be on the superblock's dirty inode list. 5349 * will no longer be on the superblock's dirty inode list.
5350 */ 5350 */
5351int ext4_write_inode(struct inode *inode, int wait) 5351int ext4_write_inode(struct inode *inode, struct writeback_control *wbc)
5352{ 5352{
5353 int err; 5353 int err;
5354 5354
@@ -5362,7 +5362,7 @@ int ext4_write_inode(struct inode *inode, int wait)
5362 return -EIO; 5362 return -EIO;
5363 } 5363 }
5364 5364
5365 if (!wait) 5365 if (wbc->sync_mode != WB_SYNC_ALL)
5366 return 0; 5366 return 0;
5367 5367
5368 err = ext4_force_commit(inode->i_sb); 5368 err = ext4_force_commit(inode->i_sb);
@@ -5372,7 +5372,7 @@ int ext4_write_inode(struct inode *inode, int wait)
5372 err = ext4_get_inode_loc(inode, &iloc); 5372 err = ext4_get_inode_loc(inode, &iloc);
5373 if (err) 5373 if (err)
5374 return err; 5374 return err;
5375 if (wait) 5375 if (wbc->sync_mode == WB_SYNC_ALL)
5376 sync_dirty_buffer(iloc.bh); 5376 sync_dirty_buffer(iloc.bh);
5377 if (buffer_req(iloc.bh) && !buffer_uptodate(iloc.bh)) { 5377 if (buffer_req(iloc.bh) && !buffer_uptodate(iloc.bh)) {
5378 ext4_error(inode->i_sb, "IO error syncing inode, " 5378 ext4_error(inode->i_sb, "IO error syncing inode, "