• Eric Sandeen's avatar
    xfs: fix corruption case for block size < page size · 3d9b02e3
    Eric Sandeen authored
    xfstests 194 first truncats a file back and then extends it again by
    truncating it to a larger size.  This causes discard_buffer to drop
    the mapped, but not the uptodate bit and thus creates something that
    xfs_page_state_convert takes for unmapped space created by mmap because
    it doesn't check for the dirty bit, which also gets cleared by
    discard_buffer and checked by other ->writepage implementations like
    block_write_full_page.  Handle this kind of buffers early, and unlike
    Eric's first version of the patch simply ASSERT that the buffers is
    dirty, given that the mmap write case can't happen anymore since the
    introduction of ->page_mkwrite.  The now dead code dealing with that
    will be deleted in a follow on patch.
    Signed-off-by: default avatarEric Sandeen <sandeen@sandeen.net>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    3d9b02e3
xfs_aops.c 43.3 KB