summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_mount.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2010-03-05 02:00:42 +0000
committerAlex Elder <aelder@sgi.com>2010-03-05 11:01:53 -0600
commit3ed3a4343b79a79d10e31f85f2d1afabcead76c6 (patch)
tree9d3982cfb179bff8071ef99f2e2b36e3872dfa6a /fs/xfs/xfs_mount.c
parent20f6b2c785cf187445f126321638ab8ba7aa7494 (diff)
downloadtalos-op-linux-3ed3a4343b79a79d10e31f85f2d1afabcead76c6.tar.gz
talos-op-linux-3ed3a4343b79a79d10e31f85f2d1afabcead76c6.zip
xfs: truncate delalloc extents when IO fails in writeback
We currently use block_invalidatepage() to clean up pages where I/O fails in ->writepage(). Unfortunately, if the page has delalloc regions on it, we fail to remove the delalloc regions when we invalidate the page. This can result in tripping a BUG() in xfs_get_blocks() later on if a direct IO read is done on that same region - the delalloc extent is returned when none is supposed to be there. Fix this by truncating away the delalloc regions on the page before invalidating it. Because they are delalloc, we can do this without needing a transaction. Indeed - if we get ENOSPC errors, we have to be able to do this truncation without a transaction as there is no space left for block reservation (typically why we see a ENOSPC in writeback). Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_mount.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud