mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
ext4: convert to new timestamp accessors
Convert to using the new inode timestamp accessor functions. Signed-off-by: Jeff Layton <jlayton@kernel.org> Link: https://lore.kernel.org/r/20231004185347.80880-33-jlayton@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
5cdc59fce6
commit
b898ab2336
@ -891,10 +891,13 @@ do { \
|
||||
(raw_inode)->xtime = cpu_to_le32(clamp_t(int32_t, (ts).tv_sec, S32_MIN, S32_MAX)); \
|
||||
} while (0)
|
||||
|
||||
#define EXT4_INODE_SET_XTIME(xtime, inode, raw_inode) \
|
||||
EXT4_INODE_SET_XTIME_VAL(xtime, inode, raw_inode, (inode)->xtime)
|
||||
#define EXT4_INODE_SET_ATIME(inode, raw_inode) \
|
||||
EXT4_INODE_SET_XTIME_VAL(i_atime, inode, raw_inode, inode_get_atime(inode))
|
||||
|
||||
#define EXT4_INODE_SET_CTIME(inode, raw_inode) \
|
||||
#define EXT4_INODE_SET_MTIME(inode, raw_inode) \
|
||||
EXT4_INODE_SET_XTIME_VAL(i_mtime, inode, raw_inode, inode_get_mtime(inode))
|
||||
|
||||
#define EXT4_INODE_SET_CTIME(inode, raw_inode) \
|
||||
EXT4_INODE_SET_XTIME_VAL(i_ctime, inode, raw_inode, inode_get_ctime(inode))
|
||||
|
||||
#define EXT4_EINODE_SET_XTIME(xtime, einode, raw_inode) \
|
||||
@ -910,9 +913,16 @@ do { \
|
||||
.tv_sec = (signed)le32_to_cpu((raw_inode)->xtime) \
|
||||
})
|
||||
|
||||
#define EXT4_INODE_GET_XTIME(xtime, inode, raw_inode) \
|
||||
#define EXT4_INODE_GET_ATIME(inode, raw_inode) \
|
||||
do { \
|
||||
(inode)->xtime = EXT4_INODE_GET_XTIME_VAL(xtime, inode, raw_inode); \
|
||||
inode_set_atime_to_ts(inode, \
|
||||
EXT4_INODE_GET_XTIME_VAL(i_atime, inode, raw_inode)); \
|
||||
} while (0)
|
||||
|
||||
#define EXT4_INODE_GET_MTIME(inode, raw_inode) \
|
||||
do { \
|
||||
inode_set_mtime_to_ts(inode, \
|
||||
EXT4_INODE_GET_XTIME_VAL(i_mtime, inode, raw_inode)); \
|
||||
} while (0)
|
||||
|
||||
#define EXT4_INODE_GET_CTIME(inode, raw_inode) \
|
||||
|
@ -4481,7 +4481,8 @@ retry:
|
||||
if (epos > new_size)
|
||||
epos = new_size;
|
||||
if (ext4_update_inode_size(inode, epos) & 0x1)
|
||||
inode->i_mtime = inode_get_ctime(inode);
|
||||
inode_set_mtime_to_ts(inode,
|
||||
inode_get_ctime(inode));
|
||||
}
|
||||
ret2 = ext4_mark_inode_dirty(handle, inode);
|
||||
ext4_update_inode_fsync_trans(handle, inode, 1);
|
||||
@ -4617,7 +4618,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,
|
||||
|
||||
/* Now release the pages and zero block aligned part of pages */
|
||||
truncate_pagecache_range(inode, start, end - 1);
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
|
||||
ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size,
|
||||
flags);
|
||||
@ -4642,7 +4643,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,
|
||||
goto out_mutex;
|
||||
}
|
||||
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
if (new_size)
|
||||
ext4_update_inode_size(inode, new_size);
|
||||
ret = ext4_mark_inode_dirty(handle, inode);
|
||||
@ -5378,7 +5379,7 @@ static int ext4_collapse_range(struct file *file, loff_t offset, loff_t len)
|
||||
up_write(&EXT4_I(inode)->i_data_sem);
|
||||
if (IS_SYNC(inode))
|
||||
ext4_handle_sync(handle);
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
ret = ext4_mark_inode_dirty(handle, inode);
|
||||
ext4_update_inode_fsync_trans(handle, inode, 1);
|
||||
|
||||
@ -5488,7 +5489,7 @@ static int ext4_insert_range(struct file *file, loff_t offset, loff_t len)
|
||||
/* Expand file to avoid data loss if there is error while shifting */
|
||||
inode->i_size += len;
|
||||
EXT4_I(inode)->i_disksize += len;
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
ret = ext4_mark_inode_dirty(handle, inode);
|
||||
if (ret)
|
||||
goto out_stop;
|
||||
|
@ -1250,8 +1250,8 @@ got:
|
||||
inode->i_ino = ino + group * EXT4_INODES_PER_GROUP(sb);
|
||||
/* This is the optimal IO size (for stat), not the fs block size */
|
||||
inode->i_blocks = 0;
|
||||
inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
|
||||
ei->i_crtime = inode->i_mtime;
|
||||
simple_inode_init_ts(inode);
|
||||
ei->i_crtime = inode_get_mtime(inode);
|
||||
|
||||
memset(ei->i_data, 0, sizeof(ei->i_data));
|
||||
ei->i_dir_start_lookup = 0;
|
||||
|
@ -1037,7 +1037,7 @@ static int ext4_add_dirent_to_inline(handle_t *handle,
|
||||
* happen is that the times are slightly out of date
|
||||
* and/or different from the directory change time.
|
||||
*/
|
||||
dir->i_mtime = inode_set_ctime_current(dir);
|
||||
inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
|
||||
ext4_update_dx_flag(dir);
|
||||
inode_inc_iversion(dir);
|
||||
return 1;
|
||||
@ -1991,7 +1991,7 @@ out:
|
||||
ext4_orphan_del(handle, inode);
|
||||
|
||||
if (err == 0) {
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
err = ext4_mark_inode_dirty(handle, inode);
|
||||
if (IS_SYNC(inode))
|
||||
ext4_handle_sync(handle);
|
||||
|
@ -4020,7 +4020,7 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length)
|
||||
if (IS_SYNC(inode))
|
||||
ext4_handle_sync(handle);
|
||||
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
ret2 = ext4_mark_inode_dirty(handle, inode);
|
||||
if (unlikely(ret2))
|
||||
ret = ret2;
|
||||
@ -4180,7 +4180,7 @@ out_stop:
|
||||
if (inode->i_nlink)
|
||||
ext4_orphan_del(handle, inode);
|
||||
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
err2 = ext4_mark_inode_dirty(handle, inode);
|
||||
if (unlikely(err2 && !err))
|
||||
err = err2;
|
||||
@ -4284,8 +4284,8 @@ static int ext4_fill_raw_inode(struct inode *inode, struct ext4_inode *raw_inode
|
||||
raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
|
||||
|
||||
EXT4_INODE_SET_CTIME(inode, raw_inode);
|
||||
EXT4_INODE_SET_XTIME(i_mtime, inode, raw_inode);
|
||||
EXT4_INODE_SET_XTIME(i_atime, inode, raw_inode);
|
||||
EXT4_INODE_SET_MTIME(inode, raw_inode);
|
||||
EXT4_INODE_SET_ATIME(inode, raw_inode);
|
||||
EXT4_EINODE_SET_XTIME(i_crtime, ei, raw_inode);
|
||||
|
||||
raw_inode->i_dtime = cpu_to_le32(ei->i_dtime);
|
||||
@ -4893,8 +4893,8 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
|
||||
}
|
||||
|
||||
EXT4_INODE_GET_CTIME(inode, raw_inode);
|
||||
EXT4_INODE_GET_XTIME(i_mtime, inode, raw_inode);
|
||||
EXT4_INODE_GET_XTIME(i_atime, inode, raw_inode);
|
||||
EXT4_INODE_GET_ATIME(inode, raw_inode);
|
||||
EXT4_INODE_GET_MTIME(inode, raw_inode);
|
||||
EXT4_EINODE_GET_XTIME(i_crtime, ei, raw_inode);
|
||||
|
||||
if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) {
|
||||
@ -5019,8 +5019,8 @@ static void __ext4_update_other_inode_time(struct super_block *sb,
|
||||
|
||||
spin_lock(&ei->i_raw_lock);
|
||||
EXT4_INODE_SET_CTIME(inode, raw_inode);
|
||||
EXT4_INODE_SET_XTIME(i_mtime, inode, raw_inode);
|
||||
EXT4_INODE_SET_XTIME(i_atime, inode, raw_inode);
|
||||
EXT4_INODE_SET_MTIME(inode, raw_inode);
|
||||
EXT4_INODE_SET_ATIME(inode, raw_inode);
|
||||
ext4_inode_csum_set(inode, raw_inode, ei);
|
||||
spin_unlock(&ei->i_raw_lock);
|
||||
trace_ext4_other_inode_update_time(inode, orig_ino);
|
||||
@ -5413,7 +5413,8 @@ int ext4_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
|
||||
* update c/mtime in shrink case below
|
||||
*/
|
||||
if (!shrink)
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode,
|
||||
inode_set_ctime_current(inode));
|
||||
|
||||
if (shrink)
|
||||
ext4_fc_track_range(handle, inode,
|
||||
|
@ -312,13 +312,22 @@ static void swap_inode_data(struct inode *inode1, struct inode *inode2)
|
||||
struct ext4_inode_info *ei1;
|
||||
struct ext4_inode_info *ei2;
|
||||
unsigned long tmp;
|
||||
struct timespec64 ts1, ts2;
|
||||
|
||||
ei1 = EXT4_I(inode1);
|
||||
ei2 = EXT4_I(inode2);
|
||||
|
||||
swap(inode1->i_version, inode2->i_version);
|
||||
swap(inode1->i_atime, inode2->i_atime);
|
||||
swap(inode1->i_mtime, inode2->i_mtime);
|
||||
|
||||
ts1 = inode_get_atime(inode1);
|
||||
ts2 = inode_get_atime(inode2);
|
||||
inode_set_atime_to_ts(inode1, ts2);
|
||||
inode_set_atime_to_ts(inode2, ts1);
|
||||
|
||||
ts1 = inode_get_mtime(inode1);
|
||||
ts2 = inode_get_mtime(inode2);
|
||||
inode_set_mtime_to_ts(inode1, ts2);
|
||||
inode_set_mtime_to_ts(inode2, ts1);
|
||||
|
||||
memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data));
|
||||
tmp = ei1->i_flags & EXT4_FL_SHOULD_SWAP;
|
||||
|
@ -2207,7 +2207,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname,
|
||||
* happen is that the times are slightly out of date
|
||||
* and/or different from the directory change time.
|
||||
*/
|
||||
dir->i_mtime = inode_set_ctime_current(dir);
|
||||
inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
|
||||
ext4_update_dx_flag(dir);
|
||||
inode_inc_iversion(dir);
|
||||
err2 = ext4_mark_inode_dirty(handle, dir);
|
||||
@ -3202,7 +3202,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
* recovery. */
|
||||
inode->i_size = 0;
|
||||
ext4_orphan_add(handle, inode);
|
||||
dir->i_mtime = inode_set_ctime_current(dir);
|
||||
inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
|
||||
inode_set_ctime_current(inode);
|
||||
retval = ext4_mark_inode_dirty(handle, inode);
|
||||
if (retval)
|
||||
@ -3277,7 +3277,7 @@ int __ext4_unlink(struct inode *dir, const struct qstr *d_name,
|
||||
retval = ext4_delete_entry(handle, dir, de, bh);
|
||||
if (retval)
|
||||
goto out_handle;
|
||||
dir->i_mtime = inode_set_ctime_current(dir);
|
||||
inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
|
||||
ext4_update_dx_flag(dir);
|
||||
retval = ext4_mark_inode_dirty(handle, dir);
|
||||
if (retval)
|
||||
@ -3648,7 +3648,7 @@ static int ext4_setent(handle_t *handle, struct ext4_renament *ent,
|
||||
if (ext4_has_feature_filetype(ent->dir->i_sb))
|
||||
ent->de->file_type = file_type;
|
||||
inode_inc_iversion(ent->dir);
|
||||
ent->dir->i_mtime = inode_set_ctime_current(ent->dir);
|
||||
inode_set_mtime_to_ts(ent->dir, inode_set_ctime_current(ent->dir));
|
||||
retval = ext4_mark_inode_dirty(handle, ent->dir);
|
||||
BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata");
|
||||
if (!ent->inlined) {
|
||||
@ -3963,7 +3963,7 @@ static int ext4_rename(struct mnt_idmap *idmap, struct inode *old_dir,
|
||||
ext4_dec_count(new.inode);
|
||||
inode_set_ctime_current(new.inode);
|
||||
}
|
||||
old.dir->i_mtime = inode_set_ctime_current(old.dir);
|
||||
inode_set_mtime_to_ts(old.dir, inode_set_ctime_current(old.dir));
|
||||
ext4_update_dx_flag(old.dir);
|
||||
if (old.dir_bh) {
|
||||
retval = ext4_rename_dir_finish(handle, &old, new.dir->i_ino);
|
||||
|
@ -7127,7 +7127,7 @@ static int ext4_quota_off(struct super_block *sb, int type)
|
||||
}
|
||||
EXT4_I(inode)->i_flags &= ~(EXT4_NOATIME_FL | EXT4_IMMUTABLE_FL);
|
||||
inode_set_flags(inode, 0, S_NOATIME | S_IMMUTABLE);
|
||||
inode->i_mtime = inode_set_ctime_current(inode);
|
||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
err = ext4_mark_inode_dirty(handle, inode);
|
||||
ext4_journal_stop(handle);
|
||||
out_unlock:
|
||||
|
@ -356,7 +356,7 @@ ext4_xattr_inode_hash(struct ext4_sb_info *sbi, const void *buffer, size_t size)
|
||||
|
||||
static u64 ext4_xattr_inode_get_ref(struct inode *ea_inode)
|
||||
{
|
||||
return ((u64) inode_get_ctime(ea_inode).tv_sec << 32) |
|
||||
return ((u64) inode_get_ctime_sec(ea_inode) << 32) |
|
||||
(u32) inode_peek_iversion_raw(ea_inode);
|
||||
}
|
||||
|
||||
@ -368,12 +368,12 @@ static void ext4_xattr_inode_set_ref(struct inode *ea_inode, u64 ref_count)
|
||||
|
||||
static u32 ext4_xattr_inode_get_hash(struct inode *ea_inode)
|
||||
{
|
||||
return (u32)ea_inode->i_atime.tv_sec;
|
||||
return (u32) inode_get_atime_sec(ea_inode);
|
||||
}
|
||||
|
||||
static void ext4_xattr_inode_set_hash(struct inode *ea_inode, u32 hash)
|
||||
{
|
||||
ea_inode->i_atime.tv_sec = hash;
|
||||
inode_set_atime(ea_inode, hash, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -418,7 +418,7 @@ free_bhs:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define EXT4_XATTR_INODE_GET_PARENT(inode) ((__u32)(inode)->i_mtime.tv_sec)
|
||||
#define EXT4_XATTR_INODE_GET_PARENT(inode) ((__u32)(inode_get_mtime_sec(inode)))
|
||||
|
||||
static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
|
||||
u32 ea_inode_hash, struct inode **ea_inode)
|
||||
|
Loading…
Reference in New Issue
Block a user