From: David Sterba <dsterba@suse.cz>
To: Jeff Layton <jlayton@kernel.org>
Cc: Christian Brauner <brauner@kernel.org>, Chris Mason <clm@fb.com>,
Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>,
Al Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 16/79] btrfs: switch to new ctime accessors
Date: Thu, 22 Jun 2023 13:42:09 +0200 [thread overview]
Message-ID: <20230622114209.GT16168@suse.cz> (raw)
In-Reply-To: <20230621144735.55953-15-jlayton@kernel.org>
On Wed, Jun 21, 2023 at 10:45:29AM -0400, Jeff Layton wrote:
> In later patches, we're going to change how the ctime.tv_nsec field is
> utilized. Switch to using accessor functions instead of raw accesses of
> inode->i_ctime.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
> ---
> fs/btrfs/delayed-inode.c | 10 +++---
> fs/btrfs/file.c | 24 +++++----------
> fs/btrfs/inode.c | 66 ++++++++++++++++------------------------
> fs/btrfs/ioctl.c | 2 +-
> fs/btrfs/reflink.c | 7 ++---
> fs/btrfs/transaction.c | 3 +-
> fs/btrfs/tree-log.c | 4 +--
> fs/btrfs/xattr.c | 4 +--
> 8 files changed, 48 insertions(+), 72 deletions(-)
>
> diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
> index c0a6a1784697..ae493a4dc206 100644
> --- a/fs/btrfs/delayed-inode.c
> +++ b/fs/btrfs/delayed-inode.c
> @@ -1808,9 +1808,9 @@ static void fill_stack_inode_item(struct btrfs_trans_handle *trans,
> inode->i_mtime.tv_nsec);
>
> btrfs_set_stack_timespec_sec(&inode_item->ctime,
> - inode->i_ctime.tv_sec);
> + inode_ctime_peek(inode).tv_sec);
> btrfs_set_stack_timespec_nsec(&inode_item->ctime,
> - inode->i_ctime.tv_nsec);
> + inode_ctime_peek(inode).tv_nsec);
>
> btrfs_set_stack_timespec_sec(&inode_item->otime,
> BTRFS_I(inode)->i_otime.tv_sec);
> @@ -1861,8 +1861,10 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)
> inode->i_mtime.tv_sec = btrfs_stack_timespec_sec(&inode_item->mtime);
> inode->i_mtime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->mtime);
>
> - inode->i_ctime.tv_sec = btrfs_stack_timespec_sec(&inode_item->ctime);
> - inode->i_ctime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->ctime);
> + inode_ctime_set_sec(inode,
> + btrfs_stack_timespec_sec(&inode_item->ctime));
> + inode_ctime_set_nsec(inode,
> + btrfs_stack_timespec_nsec(&inode_item->ctime));
>
> BTRFS_I(inode)->i_otime.tv_sec =
> btrfs_stack_timespec_sec(&inode_item->otime);
> diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
> index fd03e689a6be..b4082b322b41 100644
> --- a/fs/btrfs/file.c
> +++ b/fs/btrfs/file.c
> @@ -1108,17 +1108,10 @@ void btrfs_check_nocow_unlock(struct btrfs_inode *inode)
>
> static void update_time_for_write(struct inode *inode)
> {
> - struct timespec64 now;
> -
> if (IS_NOCMTIME(inode))
> return;
>
> - now = current_time(inode);
> - if (!timespec64_equal(&inode->i_mtime, &now))
> - inode->i_mtime = now;
> -
> - if (!timespec64_equal(&inode->i_ctime, &now))
> - inode->i_ctime = now;
> + inode->i_mtime = inode_ctime_set_current(inode);
>
> if (IS_I_VERSION(inode))
> inode_inc_iversion(inode);
> @@ -2460,8 +2453,9 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
> inode_inc_iversion(&inode->vfs_inode);
>
> if (!extent_info || extent_info->update_times) {
> - inode->vfs_inode.i_mtime = current_time(&inode->vfs_inode);
> - inode->vfs_inode.i_ctime = inode->vfs_inode.i_mtime;
> + struct inode *vinode = &inode->vfs_inode;
Please use vfs_inode for the variable name.
> +
> + vinode->i_mtime = inode_ctime_set_current(vinode);
> }
>
> ret = btrfs_update_inode(trans, root, inode);
> @@ -2703,8 +2697,7 @@ static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len)
>
> ASSERT(trans != NULL);
> inode_inc_iversion(inode);
> - inode->i_mtime = current_time(inode);
> - inode->i_ctime = inode->i_mtime;
> + inode->i_mtime = inode_ctime_set_current(inode);
> ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
> updated_inode = true;
> btrfs_end_transaction(trans);
> @@ -2721,11 +2714,8 @@ static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len)
> * for detecting, at fsync time, if the inode isn't yet in the
> * log tree or it's there but not up to date.
> */
> - struct timespec64 now = current_time(inode);
> -
> inode_inc_iversion(inode);
> - inode->i_mtime = now;
> - inode->i_ctime = now;
> + inode->i_mtime = inode_ctime_set_current(inode);
> trans = btrfs_start_transaction(root, 1);
> if (IS_ERR(trans)) {
> ret = PTR_ERR(trans);
> @@ -2796,7 +2786,7 @@ static int btrfs_fallocate_update_isize(struct inode *inode,
> if (IS_ERR(trans))
> return PTR_ERR(trans);
>
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> i_size_write(inode, end);
> btrfs_inode_safe_disk_i_size_write(BTRFS_I(inode), 0);
> ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 601fdc956484..4bbb6c6a7516 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -3901,8 +3901,10 @@ static int btrfs_read_locked_inode(struct inode *inode,
> inode->i_mtime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->mtime);
> inode->i_mtime.tv_nsec = btrfs_timespec_nsec(leaf, &inode_item->mtime);
>
> - inode->i_ctime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->ctime);
> - inode->i_ctime.tv_nsec = btrfs_timespec_nsec(leaf, &inode_item->ctime);
> + inode_ctime_set_sec(inode,
> + btrfs_timespec_sec(leaf, &inode_item->ctime));
> + inode_ctime_set_nsec(inode,
> + btrfs_timespec_nsec(leaf, &inode_item->ctime));
>
> BTRFS_I(inode)->i_otime.tv_sec =
> btrfs_timespec_sec(leaf, &inode_item->otime);
> @@ -4073,9 +4075,9 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,
> inode->i_mtime.tv_nsec);
>
> btrfs_set_token_timespec_sec(&token, &item->ctime,
> - inode->i_ctime.tv_sec);
> + inode_ctime_peek(inode).tv_sec);
> btrfs_set_token_timespec_nsec(&token, &item->ctime,
> - inode->i_ctime.tv_nsec);
> + inode_ctime_peek(inode).tv_nsec);
>
> btrfs_set_token_timespec_sec(&token, &item->otime,
> BTRFS_I(inode)->i_otime.tv_sec);
> @@ -4273,9 +4275,8 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans,
> btrfs_i_size_write(dir, dir->vfs_inode.i_size - name->len * 2);
> inode_inc_iversion(&inode->vfs_inode);
> inode_inc_iversion(&dir->vfs_inode);
> - inode->vfs_inode.i_ctime = current_time(&inode->vfs_inode);
> - dir->vfs_inode.i_mtime = inode->vfs_inode.i_ctime;
> - dir->vfs_inode.i_ctime = inode->vfs_inode.i_ctime;
> + inode_ctime_set_current(&inode->vfs_inode);
> + dir->vfs_inode.i_mtime = inode_ctime_set_current(&dir->vfs_inode);
> ret = btrfs_update_inode(trans, root, dir);
> out:
> return ret;
> @@ -4448,8 +4449,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
>
> btrfs_i_size_write(dir, dir->vfs_inode.i_size - fname.disk_name.len * 2);
> inode_inc_iversion(&dir->vfs_inode);
> - dir->vfs_inode.i_mtime = current_time(&dir->vfs_inode);
> - dir->vfs_inode.i_ctime = dir->vfs_inode.i_mtime;
> + dir->vfs_inode.i_mtime = inode_ctime_set_current(&dir->vfs_inode);
> ret = btrfs_update_inode_fallback(trans, root, dir);
> if (ret)
> btrfs_abort_transaction(trans, ret);
> @@ -5090,10 +5090,8 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
> */
> if (newsize != oldsize) {
> inode_inc_iversion(inode);
> - if (!(mask & (ATTR_CTIME | ATTR_MTIME))) {
> - inode->i_mtime = current_time(inode);
> - inode->i_ctime = inode->i_mtime;
> - }
> + if (!(mask & (ATTR_CTIME | ATTR_MTIME)))
> + inode->i_mtime = inode_ctime_set_current(inode);
> }
>
> if (newsize > oldsize) {
> @@ -5736,9 +5734,7 @@ static struct inode *new_simple_dir(struct super_block *s,
> inode->i_opflags &= ~IOP_XATTR;
> inode->i_fop = &simple_dir_operations;
> inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO;
> - inode->i_mtime = current_time(inode);
> - inode->i_atime = inode->i_mtime;
> - inode->i_ctime = inode->i_mtime;
> + inode->i_atime = inode->i_mtime = inode_ctime_set_current(inode);
Please don't use chained assignments in btrfs code.
inode->i_mtime = inode_ctime_set_current(inode);
inode->i_atime = inode->i_mtime;
> BTRFS_I(inode)->i_otime = inode->i_mtime;
>
> return inode;
> @@ -6075,7 +6071,7 @@ static int btrfs_update_time(struct inode *inode, struct timespec64 *now,
> if (flags & S_VERSION)
> dirty |= inode_maybe_inc_iversion(inode, dirty);
> if (flags & S_CTIME)
> - inode->i_ctime = *now;
> + inode_ctime_set(inode, *now);
> if (flags & S_MTIME)
> inode->i_mtime = *now;
> if (flags & S_ATIME)
> @@ -6378,9 +6374,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
> goto discard;
> }
>
> - inode->i_mtime = current_time(inode);
> - inode->i_atime = inode->i_mtime;
> - inode->i_ctime = inode->i_mtime;
> + inode->i_atime = inode->i_mtime = inode_ctime_set_current(inode);
inode->i_mtime = inode_ctime_set_current(inode);
inode->i_atime = inode->i_mtime;
> BTRFS_I(inode)->i_otime = inode->i_mtime;
>
> /*
> @@ -6545,12 +6539,9 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
> * 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);
> + if (!test_bit(BTRFS_FS_LOG_RECOVERING, &root->fs_info->flags))
> + parent_inode->vfs_inode.i_mtime = inode_ctime_set_current(&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);
> if (ret)
> btrfs_abort_transaction(trans, ret);
> @@ -6690,7 +6681,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
> BTRFS_I(inode)->dir_index = 0ULL;
> inc_nlink(inode);
> inode_inc_iversion(inode);
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> ihold(inode);
> set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags);
>
> @@ -8778,7 +8769,6 @@ static int btrfs_rename_exchange(struct inode *old_dir,
> struct btrfs_root *dest = BTRFS_I(new_dir)->root;
> struct inode *new_inode = new_dentry->d_inode;
> struct inode *old_inode = old_dentry->d_inode;
> - struct timespec64 ctime = current_time(old_inode);
> struct btrfs_rename_ctx old_rename_ctx;
> struct btrfs_rename_ctx new_rename_ctx;
> u64 old_ino = btrfs_ino(BTRFS_I(old_inode));
> @@ -8909,12 +8899,10 @@ static int btrfs_rename_exchange(struct inode *old_dir,
> inode_inc_iversion(new_dir);
> inode_inc_iversion(old_inode);
> inode_inc_iversion(new_inode);
> - old_dir->i_mtime = ctime;
> - old_dir->i_ctime = ctime;
> - new_dir->i_mtime = ctime;
> - new_dir->i_ctime = ctime;
> - old_inode->i_ctime = ctime;
> - new_inode->i_ctime = ctime;
> + old_dir->i_mtime = inode_ctime_set_current(old_dir);
> + new_dir->i_mtime = inode_ctime_set_current(new_dir);
> + inode_ctime_set_current(old_inode);
> + inode_ctime_set_current(new_inode);
>
> if (old_dentry->d_parent != new_dentry->d_parent) {
> btrfs_record_unlink_dir(trans, BTRFS_I(old_dir),
> @@ -9178,11 +9166,9 @@ static int btrfs_rename(struct mnt_idmap *idmap,
> inode_inc_iversion(old_dir);
> inode_inc_iversion(new_dir);
> inode_inc_iversion(old_inode);
> - old_dir->i_mtime = current_time(old_dir);
> - old_dir->i_ctime = old_dir->i_mtime;
> - new_dir->i_mtime = old_dir->i_mtime;
> - new_dir->i_ctime = old_dir->i_mtime;
> - old_inode->i_ctime = old_dir->i_mtime;
> + old_dir->i_mtime = inode_ctime_set_current(old_dir);
> + new_dir->i_mtime = inode_ctime_set_current(new_dir);
> + inode_ctime_set_current(old_inode);
>
> if (old_dentry->d_parent != new_dentry->d_parent)
> btrfs_record_unlink_dir(trans, BTRFS_I(old_dir),
> @@ -9204,7 +9190,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
>
> if (new_inode) {
> inode_inc_iversion(new_inode);
> - new_inode->i_ctime = current_time(new_inode);
> + inode_ctime_set_current(new_inode);
> if (unlikely(btrfs_ino(BTRFS_I(new_inode)) ==
> BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) {
> ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
> @@ -9744,7 +9730,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
> *alloc_hint = ins.objectid + ins.offset;
>
> inode_inc_iversion(inode);
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC;
> if (!(mode & FALLOC_FL_KEEP_SIZE) &&
> (actual_len > inode->i_size) &&
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index a895d105464b..3d50bd67ec85 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -384,7 +384,7 @@ int btrfs_fileattr_set(struct mnt_idmap *idmap,
> binode->flags = binode_flags;
> btrfs_sync_inode_flags_to_i_flags(inode);
> inode_inc_iversion(inode);
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
>
> out_end_trans:
> diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
> index 0474bbe39da7..3cf4716dea46 100644
> --- a/fs/btrfs/reflink.c
> +++ b/fs/btrfs/reflink.c
> @@ -29,10 +29,9 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
> int ret;
>
> inode_inc_iversion(inode);
> - if (!no_time_update) {
> - inode->i_mtime = current_time(inode);
> - inode->i_ctime = inode->i_mtime;
> - }
> + if (!no_time_update)
> + inode->i_mtime = inode_ctime_set_current(inode);
> +
> /*
> * We round up to the block size at eof when determining which
> * extents to clone above, but shouldn't round up the file size.
> diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
> index e7cfc992e02a..138f919646e2 100644
> --- a/fs/btrfs/transaction.c
> +++ b/fs/btrfs/transaction.c
> @@ -1831,8 +1831,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
>
> btrfs_i_size_write(BTRFS_I(parent_inode), parent_inode->i_size +
> fname.disk_name.len * 2);
> - parent_inode->i_mtime = current_time(parent_inode);
> - parent_inode->i_ctime = parent_inode->i_mtime;
> + parent_inode->i_mtime = inode_ctime_set_current(parent_inode);
> ret = btrfs_update_inode_fallback(trans, parent_root, BTRFS_I(parent_inode));
> if (ret) {
> btrfs_abort_transaction(trans, ret);
> diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
> index 365a1cc0a3c3..c862d1450365 100644
> --- a/fs/btrfs/tree-log.c
> +++ b/fs/btrfs/tree-log.c
> @@ -4148,9 +4148,9 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,
> inode->i_mtime.tv_nsec);
>
> btrfs_set_token_timespec_sec(&token, &item->ctime,
> - inode->i_ctime.tv_sec);
> + inode_ctime_peek(inode).tv_sec);
> btrfs_set_token_timespec_nsec(&token, &item->ctime,
> - inode->i_ctime.tv_nsec);
> + inode_ctime_peek(inode).tv_nsec);
>
> /*
> * We do not need to set the nbytes field, in fact during a fast fsync
> diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
> index fc4b20c2688a..a2d331436963 100644
> --- a/fs/btrfs/xattr.c
> +++ b/fs/btrfs/xattr.c
> @@ -264,7 +264,7 @@ int btrfs_setxattr_trans(struct inode *inode, const char *name,
> goto out;
>
> inode_inc_iversion(inode);
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
> if (ret)
> btrfs_abort_transaction(trans, ret);
> @@ -407,7 +407,7 @@ static int btrfs_xattr_handler_set_prop(const struct xattr_handler *handler,
> ret = btrfs_set_prop(trans, inode, name, value, size, flags);
> if (!ret) {
> inode_inc_iversion(inode);
> - inode->i_ctime = current_time(inode);
> + inode_ctime_set_current(inode);
> ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
> if (ret)
> btrfs_abort_transaction(trans, ret);
> --
> 2.41.0
>
next prev parent reply other threads:[~2023-06-22 11:48 UTC|newest]
Thread overview: 229+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-21 14:45 [PATCH 00/79] fs: new accessors for inode->i_ctime Jeff Layton
2023-06-21 14:45 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 14:45 ` [f2fs-dev] " Jeff Layton
2023-06-21 14:45 ` [Cluster-devel] " Jeff Layton
2023-06-21 14:45 ` [PATCH 01/79] fs: add ctime accessors infrastructure Jeff Layton
2023-06-21 14:45 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 14:45 ` [f2fs-dev] " Jeff Layton
2023-06-21 14:45 ` [Cluster-devel] " Jeff Layton
2023-06-21 16:34 ` Jan Kara
2023-06-21 16:34 ` Jan Kara
2023-06-21 16:34 ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2023-06-21 16:34 ` [f2fs-dev] " Jan Kara
2023-06-21 16:34 ` Jan Kara
2023-06-21 16:34 ` [Cluster-devel] " Jan Kara
2023-06-21 16:34 ` Jan Kara
2023-06-21 17:29 ` Tom Talpey
2023-06-21 17:29 ` [Ocfs2-devel] " Tom Talpey via Ocfs2-devel
2023-06-21 17:29 ` [f2fs-dev] " Tom Talpey
2023-06-21 17:29 ` [Cluster-devel] " Tom Talpey
2023-06-21 18:01 ` Jeff Layton
2023-06-21 18:01 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 18:01 ` [f2fs-dev] " Jeff Layton
2023-06-21 18:01 ` [Cluster-devel] " Jeff Layton
2023-06-21 18:19 ` Tom Talpey
2023-06-21 18:19 ` [Ocfs2-devel] " Tom Talpey via Ocfs2-devel
2023-06-21 18:19 ` [f2fs-dev] " Tom Talpey
2023-06-21 18:19 ` [Cluster-devel] " Tom Talpey
2023-06-21 18:48 ` Jeff Layton
2023-06-21 18:48 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 18:48 ` [f2fs-dev] " Jeff Layton
2023-06-21 18:48 ` [Cluster-devel] " Jeff Layton
2023-06-22 0:46 ` Damien Le Moal
2023-06-22 0:46 ` [Ocfs2-devel] " Damien Le Moal via Ocfs2-devel
2023-06-22 0:46 ` [f2fs-dev] " Damien Le Moal
2023-06-22 0:46 ` [Cluster-devel] " Damien Le Moal
[not found] ` <99b3c749-23d9-6f09-fb75-6a84f3d1b066-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2023-06-22 10:14 ` Jeff Layton
2023-06-22 10:14 ` Jeff Layton
2023-06-22 10:14 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-22 10:14 ` [f2fs-dev] " Jeff Layton
2023-06-22 10:14 ` [Cluster-devel] " Jeff Layton
2023-06-22 10:14 ` Jeff Layton
2023-06-30 22:12 ` Luis Chamberlain
2023-06-30 22:12 ` Luis Chamberlain
2023-06-30 22:12 ` [f2fs-dev] " Luis Chamberlain
2023-06-30 22:12 ` Luis Chamberlain
2023-06-30 22:12 ` [Cluster-devel] " Luis Chamberlain
2023-06-30 22:12 ` Luis Chamberlain
[not found] ` <20230621144507.55591-2-jlayton-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2023-07-12 15:31 ` Randy Dunlap
2023-07-12 15:31 ` Randy Dunlap
2023-07-12 15:31 ` Randy Dunlap
2023-07-12 15:31 ` Randy Dunlap
2023-07-12 15:31 ` [Cluster-devel] " Randy Dunlap
2023-07-12 15:34 ` Christian Brauner
2023-07-12 15:34 ` Christian Brauner
2023-07-12 15:31 ` Randy Dunlap
2023-06-21 14:45 ` [PATCH 02/79] spufs: switch to new ctime accessors Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 03/79] s390: " Jeff Layton
2023-06-21 16:34 ` Jan Kara
2023-06-22 17:35 ` Alexander Gordeev
2023-06-22 17:51 ` Jeff Layton
2023-06-22 18:22 ` Alexander Gordeev
2023-06-22 18:46 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 04/79] binderfs: " Jeff Layton
2023-06-21 15:29 ` Greg Kroah-Hartman
2023-06-21 16:35 ` Jan Kara
2023-06-21 14:45 ` [PATCH 05/79] qib_fs: " Jeff Layton
2023-06-21 16:35 ` Jan Kara
2023-06-21 19:37 ` Dennis Dalessandro
2023-06-21 14:45 ` [PATCH 06/79] ibm: " Jeff Layton
2023-06-21 15:29 ` Greg Kroah-Hartman
2023-06-21 16:35 ` Jan Kara
2023-06-21 14:45 ` [PATCH 07/79] usb: " Jeff Layton
2023-06-21 15:29 ` Greg Kroah-Hartman
2023-06-21 16:36 ` Jan Kara
2023-06-21 14:45 ` [PATCH 08/79] 9p: " Jeff Layton
2023-06-21 16:37 ` Jan Kara
2023-06-21 14:45 ` [PATCH 09/79] adfs: " Jeff Layton
2023-06-21 16:38 ` Jan Kara
2023-06-21 14:45 ` [PATCH 10/79] affs: " Jeff Layton
2023-06-21 16:39 ` Jan Kara
2023-06-22 11:37 ` David Sterba
2023-06-21 14:45 ` [PATCH 11/79] afs: " Jeff Layton
2023-06-21 16:43 ` Jan Kara
2023-06-21 14:45 ` [PATCH 12/79] fs: " Jeff Layton
2023-06-21 16:42 ` Jan Kara
2023-06-21 14:45 ` [PATCH 13/79] autofs: " Jeff Layton
2023-06-21 16:43 ` Jan Kara
2023-06-27 1:48 ` Ian Kent
2023-06-21 14:45 ` [PATCH 14/79] befs: " Jeff Layton
2023-06-21 16:44 ` Jan Kara
2023-06-21 14:45 ` [PATCH 15/79] bfs: " Jeff Layton
2023-06-21 16:48 ` Jan Kara
2023-06-21 16:57 ` Jeff Layton
2023-06-22 12:30 ` Jan Kara
2023-06-22 12:51 ` Jeff Layton
2023-06-22 14:57 ` Jan Kara
2023-06-23 12:33 ` Christian Brauner
2023-07-03 10:12 ` Christian Brauner
2023-07-03 10:46 ` Jeff Layton
2023-07-03 10:57 ` Christian Brauner
2023-06-21 14:45 ` [PATCH 16/79] btrfs: " Jeff Layton
2023-06-22 11:42 ` David Sterba [this message]
2023-06-21 14:45 ` [PATCH 17/79] ceph: " Jeff Layton
2023-06-26 0:56 ` Xiubo Li
2023-06-21 14:45 ` [PATCH 18/79] coda: " Jeff Layton
2023-06-21 14:45 ` [PATCH 19/79] configfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 20/79] cramfs: " Jeff Layton
2023-06-21 15:29 ` Nicolas Pitre
2023-06-21 14:45 ` [PATCH 21/79] debugfs: " Jeff Layton
2023-06-21 15:29 ` Greg Kroah-Hartman
2023-06-21 14:45 ` [PATCH 22/79] devpts: " Jeff Layton
2023-06-21 14:45 ` [PATCH 23/79] ecryptfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 24/79] efivarfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 25/79] efs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 26/79] erofs: " Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-22 4:01 ` Gao Xiang
2023-06-22 4:01 ` Gao Xiang
2023-06-21 14:45 ` [PATCH 27/79] exfat: " Jeff Layton
2023-06-21 14:45 ` [PATCH 28/79] ext2: " Jeff Layton
2023-06-21 14:45 ` [PATCH 29/79] ext4: " Jeff Layton
2023-06-21 14:45 ` [f2fs-dev] [PATCH 30/79] f2fs: " Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 31/79] fat: " Jeff Layton
2023-06-21 14:45 ` [PATCH 32/79] freevxfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 33/79] fuse: " Jeff Layton
2023-06-21 14:45 ` [Cluster-devel] [PATCH 34/79] gfs2: " Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 35/79] hfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 36/79] hfsplus: " Jeff Layton
2023-06-21 14:45 ` [PATCH 37/79] hostfs: " Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 38/79] hpfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 39/79] hugetlbfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 40/79] isofs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 41/79] jffs2: " Jeff Layton
2023-06-21 14:45 ` Jeff Layton
2023-06-21 14:45 ` [PATCH 42/79] jfs: " Jeff Layton
2023-06-21 17:47 ` Dave Kleikamp
2023-06-21 14:45 ` [PATCH 43/79] kernfs: " Jeff Layton
2023-06-21 15:30 ` Greg Kroah-Hartman
2023-06-21 14:45 ` [PATCH 44/79] minix: " Jeff Layton
2023-06-21 14:45 ` [PATCH 45/79] nfs: " Jeff Layton
2023-06-21 14:45 ` [PATCH 46/79] nfsd: " Jeff Layton
2023-06-21 17:36 ` Chuck Lever
[not found] ` <20230621144735.55953-1-jlayton-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2023-06-21 14:46 ` [PATCH 47/79] nilfs2: " Jeff Layton
2023-06-21 14:46 ` Jeff Layton
[not found] ` <20230621144735.55953-46-jlayton-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2023-06-26 15:26 ` Ryusuke Konishi
2023-06-26 15:26 ` Ryusuke Konishi
2023-06-21 14:46 ` [PATCH 48/79] ntfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 49/79] ntfs3: " Jeff Layton
2023-06-21 14:46 ` [Ocfs2-devel] [PATCH 50/79] ocfs2: " Jeff Layton via Ocfs2-devel
2023-06-21 14:46 ` Jeff Layton
2023-06-21 14:46 ` [PATCH 51/79] omfs: " Jeff Layton
2023-06-23 12:12 ` Bob Copeland
2023-06-21 14:46 ` [PATCH 52/79] openpromfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 53/79] orangefs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 54/79] overlayfs: " Jeff Layton
2023-06-22 6:44 ` Amir Goldstein
2023-06-21 14:46 ` [PATCH 55/79] proc: " Jeff Layton
2023-06-30 22:13 ` Luis Chamberlain
2023-06-21 14:46 ` [PATCH 56/79] pstore: " Jeff Layton
2023-06-21 17:50 ` Kees Cook
2023-06-21 14:46 ` [PATCH 57/79] qnx4: " Jeff Layton
2023-06-23 14:26 ` Anders Larsen
2023-06-21 14:46 ` [PATCH 58/79] qnx6: " Jeff Layton
2023-06-21 14:46 ` [PATCH 59/79] ramfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 60/79] reiserfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 61/79] romfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 62/79] smb: " Jeff Layton
2023-06-21 17:45 ` Tom Talpey
2023-06-23 5:03 ` Sergey Senozhatsky
2023-06-21 14:46 ` [PATCH 63/79] squashfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 64/79] sysv: " Jeff Layton
2023-06-21 14:46 ` [PATCH 65/79] tracefs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 66/79] ubifs: " Jeff Layton
2023-06-21 14:46 ` Jeff Layton
2023-06-21 14:46 ` [PATCH 67/79] udf: " Jeff Layton
2023-06-21 14:46 ` [PATCH 68/79] ufs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 69/79] vboxsf: " Jeff Layton
2023-06-21 14:46 ` [PATCH 70/79] xfs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 71/79] zonefs: " Jeff Layton
2023-06-22 0:48 ` Damien Le Moal
2023-06-21 14:46 ` [PATCH 72/79] mqueue: " Jeff Layton
2023-06-21 14:46 ` [PATCH 73/79] bpf: " Jeff Layton
2023-06-21 14:46 ` [PATCH 74/79] shmem: " Jeff Layton
2023-06-21 14:46 ` [PATCH 75/79] rpc_pipefs: " Jeff Layton
2023-06-21 14:46 ` [PATCH 76/79] apparmor: " Jeff Layton
2023-06-22 9:04 ` John Johansen
2023-06-21 14:46 ` [PATCH 77/79] security: " Jeff Layton
2023-06-23 14:15 ` Paul Moore
2023-06-21 14:46 ` [PATCH 78/79] selinux: " Jeff Layton
2023-06-23 14:17 ` Paul Moore
2023-06-21 16:34 ` [PATCH 02/79] spufs: " Jan Kara
2023-06-21 16:34 ` Jan Kara
2023-06-22 0:19 ` Jeremy Kerr
2023-06-22 0:19 ` Jeremy Kerr
2023-06-21 14:49 ` [PATCH 79/79] fs: rename i_ctime field to __i_ctime Jeff Layton
2023-06-21 14:49 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 14:49 ` [f2fs-dev] " Jeff Layton
2023-06-21 14:49 ` [Cluster-devel] " Jeff Layton
2023-06-21 19:21 ` [PATCH 00/79] fs: new accessors for inode->i_ctime Steven Rostedt
2023-06-21 19:21 ` Steven Rostedt
2023-06-21 19:21 ` [Ocfs2-devel] " Steven Rostedt via Ocfs2-devel
2023-06-21 19:21 ` [f2fs-dev] " Steven Rostedt
2023-06-21 19:21 ` Steven Rostedt
2023-06-21 19:21 ` [Cluster-devel] " Steven Rostedt
2023-06-21 19:21 ` Steven Rostedt
2023-06-21 19:52 ` Jeff Layton
2023-06-21 19:52 ` Jeff Layton
2023-06-21 19:52 ` [Ocfs2-devel] " Jeff Layton via Ocfs2-devel
2023-06-21 19:52 ` [f2fs-dev] " Jeff Layton
2023-06-21 19:52 ` Jeff Layton
2023-06-21 19:52 ` [Cluster-devel] " Jeff Layton
2023-06-21 19:52 ` Jeff Layton
2023-06-23 12:41 ` Christian Brauner
2023-06-23 12:41 ` Christian Brauner
2023-06-23 12:41 ` [Ocfs2-devel] " Christian Brauner via Ocfs2-devel
2023-06-23 12:41 ` [f2fs-dev] " Christian Brauner
2023-06-23 12:41 ` Christian Brauner
2023-06-23 12:41 ` [Cluster-devel] " Christian Brauner
2023-06-23 12:41 ` Christian Brauner
2023-06-30 22:11 ` Luis Chamberlain
2023-06-30 22:11 ` Luis Chamberlain
2023-06-30 22:11 ` [f2fs-dev] " Luis Chamberlain
2023-06-30 22:11 ` Luis Chamberlain
2023-06-30 22:11 ` [Cluster-devel] " Luis Chamberlain
2023-06-30 22:11 ` Luis Chamberlain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230622114209.GT16168@suse.cz \
--to=dsterba@suse.cz \
--cc=brauner@kernel.org \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.