[Top] [All Lists]

Re: [PATCH 3/4] vfs: don't let the dirty time inodes get more than a day

To: Theodore Ts'o <tytso@xxxxxxx>
Subject: Re: [PATCH 3/4] vfs: don't let the dirty time inodes get more than a day stale
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Thu, 27 Nov 2014 09:39:01 +1100
Cc: linux-fsdevel@xxxxxxxxxxxxxxx, Ext4 Developers List <linux-ext4@xxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, linux-btrfs@xxxxxxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20141126102017.GJ28449@xxxxxxxxx>
References: <1416599964-21892-1-git-send-email-tytso@xxxxxxx> <1416599964-21892-4-git-send-email-tytso@xxxxxxx> <20141125015332.GE27262@dastard> <20141125044508.GG31339@xxxxxxxxx> <20141125234851.GB9561@dastard> <20141126102017.GJ28449@xxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
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:
> > 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

> 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...


Dave Chinner

<Prev in Thread] Current Thread [Next in Thread>