• Junxiao Bi's avatar
    ocfs2: update inode size after zeroing the hole · c7d2cbc3
    Junxiao Bi authored
    fs-writeback will release the dirty pages without page lock whose offset
    are over inode size, the release happens at
    block_write_full_page_endio().  If not update, dirty pages in file holes
    may be released before flushed to the disk, then file holes will contain
    some non-zero data, this will cause sparse file md5sum error.
    
    To reproduce the bug, find a big sparse file with many holes, like vm
    image file, its actual size should be bigger than available mem size to
    make writeback work more frequently, tar it with -S option, then keep
    untar it and check its md5sum again and again until you get a wrong
    md5sum.
    Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
    Cc: Younger Liu <younger.liu@huawei.com>
    Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c7d2cbc3
file.c 66.5 KB