• Allison Henderson's avatar
    ext4: fix xfstests 75, 112, 127 punch hole failure · ba06208a
    Allison Henderson authored
    This patch addresses a bug found by xfstests 75, 112, 127
    when blocksize = 1k
    
    This bug happens because the punch hole code only zeros
    out non block aligned regions of the page.  This means that if the
    blocks are smaller than a page, then the block aligned regions of
    the page inside the hole are left un-zeroed, and their buffer heads
    are still mapped.  This bug is corrected by using
    ext4_discard_partial_page_buffers to properly zero the partial page
    at the head and tail of the hole, and unmap the corresponding buffer
    heads
    
    This patch also addresses a bug reported by Lukas while working on a
    new patch to add discard support for loop devices using punch hole.
    The bug happened because of the first and last block number
    needed to be cast to a larger data type before calculating the
    byte offset, but since now we only need the byte offsets of the
    pages, we no longer even need to be calculating the byte offsets
    of the blocks.  The code to do the block offset calculations is
    removed in this patch.
    Signed-off-by: default avatarAllison Henderson <achender@linux.vnet.ibm.com>
    ba06208a
extents.c 113 KB