• Luis Henriques's avatar
    ceph: fix end offset in truncate_inode_pages_range call · d31d07b9
    Luis Henriques authored
    Commit e450f4d1 ("ceph: pass inclusive lend parameter to
    filemap_write_and_wait_range()") fixed the end offset parameter used to
    call filemap_write_and_wait_range and invalidate_inode_pages2_range.
    Unfortunately it missed truncate_inode_pages_range, introducing a
    regression that is easily detected by xfstest generic/130.
    
    The problem is that when doing direct IO it is possible that an extra page
    is truncated from the page cache when the end offset is page aligned.
    This can cause data loss if that page hasn't been sync'ed to the OSDs.
    
    While there, change code to use PAGE_ALIGN macro instead.
    
    Cc: stable@vger.kernel.org
    Fixes: e450f4d1 ("ceph: pass inclusive lend parameter to filemap_write_and_wait_range()")
    Signed-off-by: default avatarLuis Henriques <lhenriques@suse.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    d31d07b9
file.c 54.1 KB