Re: [PATCH 09/11] fs: refactor file_update_time_flags
Jeff Layton <[email protected]>
| Newsgroups | dev.linux.lists.gfs2,org.infradead.lists.linux-mtd,org.kernel.vger.io-uring,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2026-01-06 at 08:50 +0100, Christoph Hellwig wrote: > 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 <[email protected]> > --- > fs/inode.c | 31 +++++++++++++++---------------- > 1 file changed, 15 insertions(+), 16 deletions(-) > > diff --git a/fs/inode.c b/fs/inode.c > index 01e4f6b9b46e..d2bfe302e647 100644 > --- a/fs/inode.c > +++ b/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; Nice cleanup. Reviewed-by: Jeff Layton <[email protected]>