• Bob Peterson's avatar
    gfs2: fix trans slab error when withdraw occurs inside log_flush · 58e08e8d
    Bob Peterson authored
    Log flush operations (gfs2_log_flush()) can target a specific transaction.
    But if the function encounters errors (e.g. io errors) and withdraws,
    the transaction was only freed it if was queued to one of the ail lists.
    If the withdraw occurred before the transaction was queued to the ail1
    list, function ail_drain never freed it. The result was:
    
    BUG gfs2_trans: Objects remaining in gfs2_trans on __kmem_cache_shutdown()
    
    This patch makes log_flush() add the targeted transaction to the ail1
    list so that function ail_drain() will find and free it properly.
    
    Cc: stable@vger.kernel.org # v5.7+
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    58e08e8d
log.c 33.4 KB