Hi! On Fri 08-01-21 23:58:51, Eric Biggers wrote: > Hello, > > Patch 1 fixes a bug in how __writeback_single_inode() handles lazytime > expirations. I originally reported this last year > (https://lore.kernel.org/r/20200306004555.GB225345@xxxxxxxxx) because it > causes the FS_IOC_REMOVE_ENCRYPTION_KEY ioctl to not work properly, as > the bug causes inodes to remain dirty after a sync. > > It also turns out that lazytime on XFS is partially broken because it > doesn't actually write timestamps to disk after a sync() or after > dirtytime_expire_interval. This is fixed by the same fix. > > This supersedes previously proposed fixes, including > https://lore.kernel.org/r/20200307020043.60118-1-tytso@xxxxxxx and > https://lore.kernel.org/r/20200325122825.1086872-3-hch@xxxxxx from last > year (which had some issues and didn't fix the XFS bug), and v1 of this > patchset which took a different approach > (https://lore.kernel.org/r/20210105005452.92521-1-ebiggers@xxxxxxxxxx). > > Patches 2-12 then clean up various things related to lazytime and > writeback, such as clarifying the semantics of ->dirty_inode() and the > inode dirty flags, and improving comments. Most of these patches could > be applied independently if needed. > > This patchset applies to v5.11-rc2. The series look good to me. How do you plan to merge it (after resolving Christoph's remarks)? I guess either Ted can take it through the ext4 tree or I can take it through my tree... Honza > > Changed since v1: > - Switched to the fix suggested by Jan Kara, and dropped the > patches which introduced ->lazytime_expired(). > - Fixed bugs in the fat and ext4 patches. > - Added patch "fs: improve comments for writeback_single_inode()". > - Reordered the patches a bit. > - Added Reviewed-by's. > > Eric Biggers (12): > fs: fix lazytime expiration handling in __writeback_single_inode() > fs: correctly document the inode dirty flags > fs: only specify I_DIRTY_TIME when needed in generic_update_time() > fat: only specify I_DIRTY_TIME when needed in fat_update_time() > fs: don't call ->dirty_inode for lazytime timestamp updates > fs: pass only I_DIRTY_INODE flags to ->dirty_inode > fs: clean up __mark_inode_dirty() a bit > fs: drop redundant check from __writeback_single_inode() > fs: improve comments for writeback_single_inode() > gfs2: don't worry about I_DIRTY_TIME in gfs2_fsync() > ext4: simplify i_state checks in __ext4_update_other_inode_time() > xfs: remove a stale comment from xfs_file_aio_write_checks() > > Documentation/filesystems/vfs.rst | 5 +- > fs/ext4/inode.c | 20 +---- > fs/f2fs/super.c | 3 - > fs/fat/misc.c | 23 +++--- > fs/fs-writeback.c | 132 +++++++++++++++++------------- > fs/gfs2/file.c | 4 +- > fs/gfs2/super.c | 2 - > fs/inode.c | 38 +++++---- > fs/xfs/xfs_file.c | 6 -- > include/linux/fs.h | 18 ++-- > 10 files changed, 132 insertions(+), 119 deletions(-) > > > base-commit: e71ba9452f0b5b2e8dc8aa5445198cd9214a6a62 > -- > 2.30.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR