mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge tag 'lazytime_for_v5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull lazytime updates from Jan Kara: "Cleanups of the lazytime handling in the writeback code making rules for calling ->dirty_inode() filesystem handlers saner" * tag 'lazytime_for_v5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: ext4: simplify i_state checks in __ext4_update_other_inode_time() gfs2: don't worry about I_DIRTY_TIME in gfs2_fsync() fs: improve comments for writeback_single_inode() fs: drop redundant check from __writeback_single_inode() fs: clean up __mark_inode_dirty() a bit fs: pass only I_DIRTY_INODE flags to ->dirty_inode fs: don't call ->dirty_inode for lazytime timestamp updates fat: only specify I_DIRTY_TIME when needed in fat_update_time() fs: only specify I_DIRTY_TIME when needed in generic_update_time() fs: correctly document the inode dirty flags
This commit is contained in:
34
fs/inode.c
34
fs/inode.c
@@ -1743,24 +1743,26 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
|
||||
|
||||
int generic_update_time(struct inode *inode, struct timespec64 *time, int flags)
|
||||
{
|
||||
int iflags = I_DIRTY_TIME;
|
||||
bool dirty = false;
|
||||
int dirty_flags = 0;
|
||||
|
||||
if (flags & S_ATIME)
|
||||
inode->i_atime = *time;
|
||||
if (flags & S_VERSION)
|
||||
dirty = inode_maybe_inc_iversion(inode, false);
|
||||
if (flags & S_CTIME)
|
||||
inode->i_ctime = *time;
|
||||
if (flags & S_MTIME)
|
||||
inode->i_mtime = *time;
|
||||
if ((flags & (S_ATIME | S_CTIME | S_MTIME)) &&
|
||||
!(inode->i_sb->s_flags & SB_LAZYTIME))
|
||||
dirty = true;
|
||||
if (flags & (S_ATIME | S_CTIME | S_MTIME)) {
|
||||
if (flags & S_ATIME)
|
||||
inode->i_atime = *time;
|
||||
if (flags & S_CTIME)
|
||||
inode->i_ctime = *time;
|
||||
if (flags & S_MTIME)
|
||||
inode->i_mtime = *time;
|
||||
|
||||
if (dirty)
|
||||
iflags |= I_DIRTY_SYNC;
|
||||
__mark_inode_dirty(inode, iflags);
|
||||
if (inode->i_sb->s_flags & SB_LAZYTIME)
|
||||
dirty_flags |= I_DIRTY_TIME;
|
||||
else
|
||||
dirty_flags |= I_DIRTY_SYNC;
|
||||
}
|
||||
|
||||
if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
|
||||
dirty_flags |= I_DIRTY_SYNC;
|
||||
|
||||
__mark_inode_dirty(inode, dirty_flags);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(generic_update_time);
|
||||
|
Reference in New Issue
Block a user