• Andreas Gruenbacher's avatar
    gfs2: Improve mmap write vs. truncate consistency · b473bc2d
    Andreas Gruenbacher authored
    On filesystems with a block size smaller than PAGE_SIZE, page_mkwrite is
    called for each memory-mapped page before that page can be written to.
    When such a memory-mapped file is truncated down to size x which is not
    a multiple of the page size and then back to a larger size, the page
    straddling size x can end up with a partial block mapping.  In that
    case, make sure to mark that page read-only so that page_mkwrite will be
    called before the page can be written to the next time.
    
    (There is no point in marking the page straddling size x read-only when
    truncating down as writing to memory beyond the end of the file will
    result in SIGBUS instead of growing the file.)
    
    Fixes xfstests generic/029, generic/030 on filesystems with a block size
    smaller than PAGE_SIZE.
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    b473bc2d
bmap.c 64.8 KB