xfs: free cowblocks and retry on buffered write ENOSPC
authorBrian Foster <bfoster@redhat.com>
Tue, 20 Jun 2017 21:36:19 +0000 (14:36 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 28 Jun 2017 01:23:21 +0000 (18:23 -0700)
XFS runs an eofblocks reclaim scan before returning an ENOSPC error to
userspace for buffered writes. This facilitates aggressive speculative
preallocation without causing user visible side effects such as
premature ENOSPC.

Run a cowblocks scan in the same situation to reclaim lingering COW fork
preallocation throughout the filesystem.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_file.c

index 36c129303fcfdc0199b750701702b40cc0e2cd94..8f9a491b25514504e52cb23f07b8028f32118460 100644 (file)
@@ -660,6 +660,7 @@ write_retry:
                xfs_iunlock(ip, iolock);
                eofb.eof_flags = XFS_EOF_FLAGS_SYNC;
                xfs_icache_free_eofblocks(ip->i_mount, &eofb);
+               xfs_icache_free_cowblocks(ip->i_mount, &eofb);
                goto write_retry;
        }