Skip to content

Commit

Permalink
ext4: Don't update ctime for non-extent-mapped inodes
Browse files Browse the repository at this point in the history
The VFS handles updating ctime, so we don't need to update the inode's
ctime in ext4_splace_branch() to update the direct or indirect blocks.
This was harmless when we did this in ext3, but in ext4, thanks to
delayed allocation, updating the ctime in ext4_splice_branch() can
cause the ctime to mysteriously jump when the blocks are finally
allocated.

Thanks to Björn Steinbrink for pointing out this problem on the git
mailing list.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
  • Loading branch information
Theodore Ts'o committed Jun 15, 2009
1 parent de9a55b commit 4159175
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions fs/ext4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -856,10 +856,6 @@ static int ext4_splice_branch(handle_t *handle, struct inode *inode,
}

/* We are done with atomic stuff, now do the rest of housekeeping */

inode->i_ctime = ext4_current_time(inode);
ext4_mark_inode_dirty(handle, inode);

/* had we spliced it onto indirect block? */
if (where->bh) {
/*
Expand All @@ -878,8 +874,8 @@ static int ext4_splice_branch(handle_t *handle, struct inode *inode,
} else {
/*
* OK, we spliced it into the inode itself on a direct block.
* Inode was dirtied above.
*/
ext4_mark_inode_dirty(handle, inode);
jbd_debug(5, "splicing direct\n");
}
return err;
Expand Down

0 comments on commit 4159175

Please sign in to comment.