• Andreas Gruenbacher's avatar
    gfs2: Another gfs2_find_jhead fix · eed0f953
    Andreas Gruenbacher authored
    On filesystems with a block size smaller than the page size,
    gfs2_find_jhead can split a page across two bios (for example, when
    blocks are not allocated consecutively).  When that happens, the first
    bio that completes will unlock the page in its bi_end_io handler even
    though the page hasn't been read completely yet.  Fix that by using a
    chained bio for the rest of the page.
    
    While at it, clean up the sector calculation logic in
    gfs2_log_alloc_bio.  In gfs2_find_jhead, simplify the disk block and
    offset calculation logic and fix a variable name.
    
    Fixes: f4686c26 ("gfs2: read journal in large chunks")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    eed0f953
lops.c 27.7 KB