On Thu, Jun 11, 2020 at 10:11:54AM +0200, Jan Kara wrote: > When we are processing writeback for sync(2), move_expired_inodes() > didn't set any inode expiry value (older_than_this). This can result in > writeback never completing if there's steady stream of inodes added to > b_dirty_time list as writeback rechecks dirty lists after each writeback > round whether there's more work to be done. Fix the problem by using > sync(2) start time is inode expiry value when processing b_dirty_time > list similarly as for ordinarily dirtied inodes. This requires some > refactoring of older_than_this handling which simplifies the code > noticeably as a bonus. Looks good, Reviewed-by: Christoph Hellwig <hch@xxxxxx>