06 Oct, 2016

1 commit

  • Trim CoW reservations made on behalf of a cowextsz hint if they get too
    old or we run low on quota, so long as we don't have dirty data awaiting
    writeback or directio operations in progress.

    Garbage collection of the cowextsize extents are kept separate from
    prealloc extent reaping because setting the CoW prealloc lifetime to a
    (much) higher value than the regular prealloc extent lifetime has been
    useful for combatting CoW fragmentation on VM hosts where the VMs
    experience bursty write behaviors and we can keep the utilization ratios
    low enough that we don't start to run out of space. IOWs, it benefits
    us to keep the CoW fork reservations around for as long as we can unless
    we run out of blocks or hit inode reclaim.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Christoph Hellwig

    Darrick J. Wong
     

09 Sep, 2014

1 commit

  • XFS log recovery has been discovered to have race conditions with
    buffers when I/O errors occur. External tools are available to simulate
    I/O errors to XFS, but this alone is not sufficient for testing log
    recovery. XFS unconditionally resets the inactive region of the log
    prior to log recovery to avoid confusion over processing any partially
    written log records that might have been written before an unclean
    shutdown. Therefore, unconditional write I/O failures at mount time are
    caught by the reset sequence rather than log recovery and hinder the
    ability to test the latter.

    The device-mapper dm-flakey module uses an up/down timer to define a
    cycle for when to fail I/Os. Create a pre log recovery delay tunable
    that can be used to coordinate XFS log recovery with I/O errors
    simulated by dm-flakey. This facilitates coordination in userspace that
    allows the reset of stale log blocks to succeed and writes due to log
    recovery to fail. For example, define a dm-flakey instance with an
    uptime long enough to allow log reset to succeed and a log recovery
    delay long enough to allow the dm-flakey uptime to expire.

    The 'log_recovery_delay' sysfs tunable is exported under
    /sys/fs/xfs/debug and is only enabled for kernels compiled in XFS debug
    mode. The value is exported in units of seconds and allows for a delay
    of up to 60 seconds. Note that this is for XFS debug and test
    instrumentation purposes only and should not be used by applications. No
    delay is enabled by default.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     

09 Nov, 2012

1 commit

  • Create a new mount workqueue and 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.

    The scan interval is based on the new
    'speculative_prealloc_lifetime' tunable (default to 5m). The
    background scanner performs unfiltered, best effort scans (which
    skips inodes under lock contention or with a dirty cache mapping).

    Signed-off-by: Brian Foster
    Reviewed-by: Mark Tinguely
    Reviewed-by: Dave Chinner
    Signed-off-by: Ben Myers

    Brian Foster
     

13 Aug, 2011

1 commit

  • Use the move from Linux 2.6 to Linux 3.x as an excuse to kill the
    annoying subdirectories in the XFS source code. Besides the large
    amount of file rename the only changes are to the Makefile, a few
    files including headers with the subdirectory prefix, and the binary
    sysctl compat code that includes a header under fs/xfs/ from
    kernel/.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Alex Elder

    Christoph Hellwig