mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
fs: refactor file_update_time_flags
Split all the inode timestamp flags into a helper. This not only makes the code a bit more readable, but also optimizes away the further checks as soon as know we need an update. Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://patch.msgid.link/20260108141934.2052404-10-hch@lst.de Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
85c871a02b
commit
2d72003ba2
31
fs/inode.c
31
fs/inode.c
|
|
@ -2378,31 +2378,30 @@ struct timespec64 current_time(struct inode *inode)
|
|||
}
|
||||
EXPORT_SYMBOL(current_time);
|
||||
|
||||
static inline bool need_cmtime_update(struct inode *inode)
|
||||
{
|
||||
struct timespec64 now = current_time(inode), ts;
|
||||
|
||||
ts = inode_get_mtime(inode);
|
||||
if (!timespec64_equal(&ts, &now))
|
||||
return true;
|
||||
ts = inode_get_ctime(inode);
|
||||
if (!timespec64_equal(&ts, &now))
|
||||
return true;
|
||||
return IS_I_VERSION(inode) && inode_iversion_need_inc(inode);
|
||||
}
|
||||
|
||||
static int file_update_time_flags(struct file *file, unsigned int flags)
|
||||
{
|
||||
struct inode *inode = file_inode(file);
|
||||
struct timespec64 now, ts;
|
||||
bool need_update = false;
|
||||
int ret = 0;
|
||||
int ret;
|
||||
|
||||
/* First try to exhaust all avenues to not sync */
|
||||
if (IS_NOCMTIME(inode))
|
||||
return 0;
|
||||
if (unlikely(file->f_mode & FMODE_NOCMTIME))
|
||||
return 0;
|
||||
|
||||
now = current_time(inode);
|
||||
|
||||
ts = inode_get_mtime(inode);
|
||||
if (!timespec64_equal(&ts, &now))
|
||||
need_update = true;
|
||||
ts = inode_get_ctime(inode);
|
||||
if (!timespec64_equal(&ts, &now))
|
||||
need_update = true;
|
||||
if (IS_I_VERSION(inode) && inode_iversion_need_inc(inode))
|
||||
need_update = true;
|
||||
|
||||
if (!need_update)
|
||||
if (!need_cmtime_update(inode))
|
||||
return 0;
|
||||
|
||||
flags &= IOCB_NOWAIT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user