diff options
author | Jonathan Corbet <corbet@lwn.net> | 2019-06-14 14:18:53 -0600 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2019-06-14 14:18:53 -0600 |
commit | 8afecfb0ec961e37e61b2d19c4fa71617a9482de (patch) | |
tree | c43ea51a47b1e76b762caa4c1b0c356249e5e874 /fs/btrfs/inode.c | |
parent | ce1a5ea18ef9bf4c62c75abe7c540a29264ec988 (diff) | |
parent | d1fdb6d8f6a4109a4263176c84b899076a5f8008 (diff) |
Merge tag 'v5.2-rc4' into mauro
We need to pick up post-rc1 changes to various document files so they don't
get lost in Mauro's massive RST conversion push.
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 9aba9660efe5..a2aabdb85226 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6433,8 +6433,18 @@ int btrfs_add_link(struct btrfs_trans_handle *trans, btrfs_i_size_write(parent_inode, parent_inode->vfs_inode.i_size + name_len * 2); inode_inc_iversion(&parent_inode->vfs_inode); - parent_inode->vfs_inode.i_mtime = parent_inode->vfs_inode.i_ctime = - current_time(&parent_inode->vfs_inode); + /* + * If we are replaying a log tree, we do not want to update the mtime + * and ctime of the parent directory with the current time, since the + * log replay procedure is responsible for setting them to their correct + * values (the ones it had when the fsync was done). + */ + if (!test_bit(BTRFS_FS_LOG_RECOVERING, &root->fs_info->flags)) { + struct timespec64 now = current_time(&parent_inode->vfs_inode); + + parent_inode->vfs_inode.i_mtime = now; + parent_inode->vfs_inode.i_ctime = now; + } ret = btrfs_update_inode(trans, root, &parent_inode->vfs_inode); if (ret) btrfs_abort_transaction(trans, ret); |