From: Christoph Hellwig <firstname.lastname@example.org> To: Dave Chinner <email@example.com> Cc: Christoph Hellwig <firstname.lastname@example.org>, Theodore Ts'o <email@example.com>, Jaegeuk Kim <firstname.lastname@example.org>, Chao Yu <email@example.com>, Al Viro <firstname.lastname@example.org>, Richard Weinberger <email@example.com>, firstname.lastname@example.org, Eric Biggers <email@example.com>, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org Subject: Re: [PATCH 2/4] fs: avoid double-writing the inode on a lazytime expiration Date: Thu, 26 Mar 2020 18:01:45 +0100 Message-ID: <20200326170145.GA6387@lst.de> (raw) In-Reply-To: <20200326032212.GN10776@dread.disaster.area> On Thu, Mar 26, 2020 at 02:22:12PM +1100, Dave Chinner wrote: > On Wed, Mar 25, 2020 at 01:28:23PM +0100, Christoph Hellwig wrote: > > In the case that an inode has dirty timestamp for longer than the > > lazytime expiration timeout (or if all such inodes are being flushed > > out due to a sync or syncfs system call), we need to inform the file > > system that the inode is dirty so that the inode's timestamps can be > > copied out to the on-disk data structures. That's because if the file > > system supports lazytime, it will have ignored the dirty_inode(inode, > > I_DIRTY_TIME) notification when the timestamp was modified in memory.q > > Previously, this was accomplished by calling mark_inode_dirty_sync(), > > but that has the unfortunate side effect of also putting the inode the > > writeback list, and that's not necessary in this case, since we will > > immediately call write_inode() afterwards. Replace the call to > > mark_inode_dirty_sync() with a new lazytime_expired method to clearly > > separate out this case. > > > hmmm. Doesn't this cause issues with both iput() and > vfs_fsync_range() because they call mark_inode_dirty_sync() on > I_DIRTY_TIME inodes to move them onto the writeback list so they are > appropriately expired when the inode is written back. True, we'd need to call ->lazytime_expired in the fsync path as well. While looking into this I've also noticed that lazytime is "enabled" unconditionally without a file system opt-in. That means for file systems that don't rely on ->dirty_inode it kinda "just works" except that both Teds original fix and this one break that in one way or another. This series just cleanly disables it, but Ted's two patches would fail to pass I_DIRTY_SYNC to ->write_inode. This whole area is such a mess..
next prev parent reply index Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-25 12:28 lazytime fixes Christoph Hellwig 2020-03-25 12:28 ` [PATCH 1/4] ubifs: remove broken lazytime support Christoph Hellwig 2020-03-25 15:51 ` Sergei Shtylyov 2020-03-25 12:28 ` [PATCH 2/4] fs: avoid double-writing the inode on a lazytime expiration Christoph Hellwig 2020-03-25 15:01 ` Christoph Hellwig 2020-03-26 3:22 ` Dave Chinner 2020-03-26 17:01 ` Christoph Hellwig [this message] 2020-03-25 12:28 ` [PATCH 3/4] fs: don't call ->dirty_inode for lazytime timestamp updates Christoph Hellwig 2020-03-25 12:28 ` [PATCH 4/4] fs: clean up generic_update_time a bit Christoph Hellwig
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200326170145.GA6387@lst.de \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-XFS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-xfs/0 linux-xfs/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-xfs linux-xfs/ https://lore.kernel.org/linux-xfs \ email@example.com public-inbox-index linux-xfs Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-xfs AGPL code for this site: git clone https://public-inbox.org/public-inbox.git