Re: [PATCH 3/4] vfs: don't let the dirty time inodes get more than a day stale
From: Dave Chinner <david@fromorbit.com>
Date: 2014-11-26 22:39:51
Also in:
linux-btrfs, linux-fsdevel, linux-xfs
On Wed, Nov 26, 2014 at 05:20:17AM -0500, Theodore Ts'o wrote:
On Wed, Nov 26, 2014 at 10:48:51AM +1100, Dave Chinner wrote:quoted
No abuse necessary at all. Just a different inode_dirtied_after() check is requires if the inode is on the time dirty list in move_expired_inodes().I'm still not sure what you have in mind here. When would this be checked?
Have you looked at where move_expired_inodes() gets called from? It's called periodically from background writeback by queue_io(), and sync uses the same infrastructure to expire all inodes on the dirty list....
It sounds like you want to set a timeout such that when an inode which had its timestamps updated lazily 24 hours earlier, the inode would get written out. Yes? But that implies something is going to have to scan the list of inodes on the dirty time list periodically. When are you proposing that this take place?
The writeback code already does this for dirty inodes. it does it in move_expired_inodes() to move the inodes with i_dirtied_when is older than 30s. It's *trivial* to add a time dirty inode list and scan that at the same time to pull off inodes that are older than 24hrs.
The various approaches that come to mind all seem more complex than what I have in this patch 3 of 4, and I'm not sure it's worth the complexity.
the "once a day" stuff you've added is a horrible, nasty hack. I wasn't going to say anything about it (i.e. if you can't say anything nice...). The existing dirty inode writeback expiry code does *everything* we need already, we just need to plumb in a new list and add an expiry check of that list to move inodes to the b_io list when they have been timestamp dirty for more than 24 hours... Cheers, Dave. -- Dave Chinner david@fromorbit.com