• Hisashi Hifumi's avatar
    fix invalidate_inode_pages2_range() to not clear ret · 0dd1334f
    Hisashi Hifumi authored
    DIO invalidates page cache through invalidate_inode_pages2_range().
    invalidate_inode_pages2_range() sets ret=-EIO when
    invalidate_complete_page2() fails, but this ret is cleared if
    do_launder_page() succeed on a page of next index.
    
    In this case, dio is carried out even if invalidate_complete_page2() fails
    on some pages.
    
    This can cause inconsistency between memory and blocks on HDD because the
    page cache still exists.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: default avatarHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
    Cc: Badari Pulavarty <pbadari@us.ibm.com>
    Cc: Ken Chen <kenchen@google.com>
    Cc: Zach Brown <zach.brown@oracle.com>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
    Cc: "J. Bruce Fields" <bfields@fieldses.org>
    Cc: Chuck Lever <cel@citi.umich.edu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0dd1334f
truncate.c 13 KB