On Mon, Aug 27, 2012 at 03:51:51PM -0400, Brian Foster wrote:
> Create a delayed_work to enable background scanning and freeing
> of EOFBLOCKS inodes. The scanner kicks in once speculative
> preallocation occurs and stops requeueing itself when no EOFBLOCKS
> inodes exist.
> Scans are queued on the existing syncd workqueue and the interval
> is tied to the syncd interval, which is a default of 30s. The
> minimum file size for a background scan is hardcoded to 100MB.
I'd set it to be much longer than the xfs_syncd_centisecs period.
The data may not be written back for a long while, and a file that
is open, written and closed repeatedly (NFS write patterns for large
and/or slowly written files) should not have it's preallocation
truncated every 30s.
I'd suggest that a 5 minute sweep is probably sufficiently frequent
to avoid most fragmentation issues and long term buildup of speculative
preallocation whilst not perturbing large/slow writers too much....
Apart from that, there isn't anything wrong with the code, except
I'll note again that it conflicts with my syncd removal patchset....