• Allison Henderson's avatar
    ext4: fix 2nd xfstests 127 punch hole failure · 2be4751b
    Allison Henderson authored
    This patch fixes a second punch hole bug found by xfstests 127.
    
    This bug happens because punch hole needs to flush the pages
    of the hole to avoid race conditions.  But if the end of the
    hole is in the same page as i_size, the buffer heads beyond
    i_size need to be unmapped and the page needs to be zeroed
    after it is flushed.
    
    To correct this, the new ext4_discard_partial_page_buffers
    routine is used to zero and unmap the partial page
    beyond i_size if the end of the hole appears in the same
    page as i_size.
    
    The code has also been optimized to set the end of the hole
    to the page after i_size if the specified hole exceeds i_size,
    and the code that flushes the pages has been simplified.
    Signed-off-by: default avatarAllison Henderson <achender@linux.vnet.ibm.com>
    2be4751b
extents.c 114 KB