diff options
| -rw-r--r-- | fs/ext3/namei.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c index 4db4ffa1edad..ab98a66ab8c7 100644 --- a/fs/ext3/namei.c +++ b/fs/ext3/namei.c | |||
| @@ -2265,7 +2265,7 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, | |||
| 2265 | struct inode * old_inode, * new_inode; | 2265 | struct inode * old_inode, * new_inode; |
| 2266 | struct buffer_head * old_bh, * new_bh, * dir_bh; | 2266 | struct buffer_head * old_bh, * new_bh, * dir_bh; |
| 2267 | struct ext3_dir_entry_2 * old_de, * new_de; | 2267 | struct ext3_dir_entry_2 * old_de, * new_de; |
| 2268 | int retval; | 2268 | int retval, flush_file = 0; |
| 2269 | 2269 | ||
| 2270 | old_bh = new_bh = dir_bh = NULL; | 2270 | old_bh = new_bh = dir_bh = NULL; |
| 2271 | 2271 | ||
| @@ -2401,6 +2401,8 @@ static int ext3_rename (struct inode * old_dir, struct dentry *old_dentry, | |||
| 2401 | ext3_mark_inode_dirty(handle, new_inode); | 2401 | ext3_mark_inode_dirty(handle, new_inode); |
| 2402 | if (!new_inode->i_nlink) | 2402 | if (!new_inode->i_nlink) |
| 2403 | ext3_orphan_add(handle, new_inode); | 2403 | ext3_orphan_add(handle, new_inode); |
| 2404 | if (ext3_should_writeback_data(new_inode)) | ||
| 2405 | flush_file = 1; | ||
| 2404 | } | 2406 | } |
| 2405 | retval = 0; | 2407 | retval = 0; |
| 2406 | 2408 | ||
| @@ -2409,6 +2411,8 @@ end_rename: | |||
| 2409 | brelse (old_bh); | 2411 | brelse (old_bh); |
| 2410 | brelse (new_bh); | 2412 | brelse (new_bh); |
| 2411 | ext3_journal_stop(handle); | 2413 | ext3_journal_stop(handle); |
| 2414 | if (retval == 0 && flush_file) | ||
| 2415 | filemap_flush(old_inode->i_mapping); | ||
| 2412 | return retval; | 2416 | return retval; |
| 2413 | } | 2417 | } |
| 2414 | 2418 | ||
