diff mbox

[1/2] ext2: Update also inode on disk when dir is IS_DIRSYNC

Message ID 1231945948-23676-1-git-send-email-jack@suse.cz
State Not Applicable, archived
Headers show

Commit Message

Jan Kara Jan. 14, 2009, 3:12 p.m. UTC
We used to just write changed page for IS_DIRSYNC inodes. But we also have to
update directory inode itself just for the case that we've allocated a new
block and changed i_size.

Thanks to AKPM for spotting a serious bug in the original version of this
patch.

Signed-off-by: Jan Kara <jack@suse.cz>
CC: Pavel Machek <pavel@suse.cz>
---
 fs/ext2/dir.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
index 9a0fc40..2999d72 100644
--- a/fs/ext2/dir.c
+++ b/fs/ext2/dir.c
@@ -95,10 +95,13 @@  static int ext2_commit_chunk(struct page *page, loff_t pos, unsigned len)
 		mark_inode_dirty(dir);
 	}
 
-	if (IS_DIRSYNC(dir))
+	if (IS_DIRSYNC(dir)) {
 		err = write_one_page(page, 1);
-	else
+		if (!err)
+			err = ext2_sync_inode(dir);
+	} else {
 		unlock_page(page);
+	}
 
 	return err;
 }