On Mon, Oct 01, 2012 at 04:14:40PM -0400, Brian Foster wrote:
> On 09/28/2012 12:44 AM, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> > We don't do any data writeback from XFS any more - the VFS is
> > completely responsible for that, including for freeze. We can
> > replace the remaining caller with the VFS level function that
> > achieves the same thing, but without conflicting with current
> > writeback work - writeback_inodes_sb_if_idle().
> > This means we can remove the flush_work and xfs_flush_inodes() - the
> > VFS functionality completely replaces the internal flush queue for
> > doing this writeback work in a separate context to avoid stack
> > overruns.
> > This does have one complication - it cannot be called with page
> > locks held. Hence move the flushing of delalloc space when ENOSPC
> > occurs back up into xfs_file_aio_buffered_write when we don't hold
> > any locks that will stall writeback.
> > Note that we always need to pass a count of zero to
> > generic_file_buffered_write() as the previously written byte count.
> > We only do this by accident before this patch by the virtue of ret
> > always being zero when there are no errors. Make this explicit
> > rather than needing to specifically zero ret in the ENOSPC retry
> > case.
> > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> Heads up... I was doing some testing against my eofblocks set rebased
> against this patchset and I'm reproducing a new 273 failure. The failure
> bisects down to this patch.
Nice catch Brian!