From f8399d2c75012e2081d5e0f5f2035fc670a1cbca Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 3 Apr 2009 01:34:49 -0400 Subject: [PATCH] --- yaml --- r: 140273 b: refs/heads/master c: e7c8f5079ed9ec9e6eb1abe3defc5fb4ebfdf1cb h: refs/heads/master i: 140271: a426269fcb1be9c9aac24baddf905d809ace1b91 v: v3 --- [refs] | 2 +- trunk/fs/ext3/namei.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 164a2635873b..a0fb3516e985 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7ab34ea723ed304b19698efca85d6f40cecd99b +refs/heads/master: e7c8f5079ed9ec9e6eb1abe3defc5fb4ebfdf1cb diff --git a/trunk/fs/ext3/namei.c b/trunk/fs/ext3/namei.c index 4db4ffa1edad..ab98a66ab8c7 100644 --- a/trunk/fs/ext3/namei.c +++ b/trunk/fs/ext3/namei.c @@ -2265,7 +2265,7 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, struct inode * old_inode, * new_inode; struct buffer_head * old_bh, * new_bh, * dir_bh; struct ext3_dir_entry_2 * old_de, * new_de; - int retval; + int retval, flush_file = 0; old_bh = new_bh = dir_bh = NULL; @@ -2401,6 +2401,8 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, ext3_mark_inode_dirty(handle, new_inode); if (!new_inode->i_nlink) ext3_orphan_add(handle, new_inode); + if (ext3_should_writeback_data(new_inode)) + flush_file = 1; } retval = 0; @@ -2409,6 +2411,8 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, brelse (old_bh); brelse (new_bh); ext3_journal_stop(handle); + if (retval == 0 && flush_file) + filemap_flush(old_inode->i_mapping); return retval; }