summaryrefslogtreecommitdiffstats
path: root/fs/file.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2010-11-30 15:16:02 +1100
committerAlex Elder <aelder@sgi.com>2010-12-01 07:40:20 -0600
commit309c848002052edbec650075a1eb098b17c17f35 (patch)
tree7e3e38c9ebcfa539716298c0f8a0000b45cffd8e /fs/file.c
parent90810b9e82a36c3c57c1aeb8b2918b242a130b26 (diff)
xfs: delayed alloc blocks beyond EOF are valid after writeback
There is an assumption in the parts of XFS that flushing a dirty file will make all the delayed allocation blocks disappear from an inode. That is, that after calling xfs_flush_pages() then ip->i_delayed_blks will be zero. This is an invalid assumption as we may have specualtive preallocation beyond EOF and they are recorded in ip->i_delayed_blks. A flush of the dirty pages of an inode will not change the state of these blocks beyond EOF, so a non-zero deeelalloc block count after a flush is valid. The bmap code has an invalid ASSERT() that needs to be removed, and the swapext code has a bug in that while it swaps the data forks around, it fails to swap the i_delayed_blks counter associated with the fork and hence can get the block accounting wrong. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/file.c')
0 files changed, 0 insertions, 0 deletions