Skip to content

Commit

Permalink
Revert "btrfs: convert to multigrain timestamps"
Browse files Browse the repository at this point in the history
This reverts commit 50e9cee.

Users reported regressions due to enabling multi-grained timestamps
unconditionally. As no clear consensus on a solution has come up and the
discussion has gone back to the drawing board revert the infrastructure
changes for. If it isn't code that's here to stay, make it go away.

Message-ID: <20230920-keine-eile-c9755b5825db@brauner>
Acked-by: Jan Kara <jack@suse.cz>
Acked-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
  • Loading branch information
Christian Brauner committed Sep 20, 2023
1 parent 50ec1d7 commit efd34f0
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
24 changes: 20 additions & 4 deletions fs/btrfs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1106,6 +1106,25 @@ void btrfs_check_nocow_unlock(struct btrfs_inode *inode)
btrfs_drew_write_unlock(&inode->root->snapshot_lock);
}

static void update_time_for_write(struct inode *inode)
{
struct timespec64 now, ctime;

if (IS_NOCMTIME(inode))
return;

now = current_time(inode);
if (!timespec64_equal(&inode->i_mtime, &now))
inode->i_mtime = now;

ctime = inode_get_ctime(inode);
if (!timespec64_equal(&ctime, &now))
inode_set_ctime_to_ts(inode, now);

if (IS_I_VERSION(inode))
inode_inc_iversion(inode);
}

static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from,
size_t count)
{
Expand Down Expand Up @@ -1137,10 +1156,7 @@ static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from,
* need to start yet another transaction to update the inode as we will
* update the inode when we finish writing whatever data we write.
*/
if (!IS_NOCMTIME(inode)) {
inode->i_mtime = inode_set_ctime_current(inode);
inode_inc_iversion(inode);
}
update_time_for_write(inode);

start_pos = round_down(pos, fs_info->sectorsize);
oldsize = i_size_read(inode);
Expand Down
5 changes: 2 additions & 3 deletions fs/btrfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -2150,16 +2150,15 @@ static struct file_system_type btrfs_fs_type = {
.name = "btrfs",
.mount = btrfs_mount,
.kill_sb = btrfs_kill_super,
.fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | FS_MGTIME,
.fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA,
};

static struct file_system_type btrfs_root_fs_type = {
.owner = THIS_MODULE,
.name = "btrfs",
.mount = btrfs_mount_root,
.kill_sb = btrfs_kill_super,
.fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA |
FS_ALLOW_IDMAP | FS_MGTIME,
.fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | FS_ALLOW_IDMAP,
};

MODULE_ALIAS_FS("btrfs");
Expand Down

0 comments on commit efd34f0

Please sign in to comment.