• Andreas Gruenbacher's avatar
    gfs2: Fix debugfs glocks dump · ddf25aea
    Andreas Gruenbacher authored
    commit 10201655 upstream.
    
    The switch to rhashtables (commit 88ffbf3e) broke the debugfs glock
    dump (/sys/kernel/debug/gfs2/<device>/glocks) for dumps bigger than a
    single buffer: the right function for restarting an rhashtable iteration
    from the beginning of the hash table is rhashtable_walk_enter;
    rhashtable_walk_stop + rhashtable_walk_start will just resume from the
    current position.
    
    The upstream commit doesn't directly apply to 4.4.y because 4.4.y
    doesn't have rhashtable_walk_enter and the following mainline commits:
    
      92ecd73a  
        gfs2: Deduplicate gfs2_{glocks,glstats}_open
      cc37a627  
        gfs2: Replace rhashtable_walk_init with rhashtable_walk_enter
    
    Other than rhashtable_walk_enter, rhashtable_walk_init can fail.  To
    handle the failure case in gfs2_glock_seq_stop, we check if
    rhashtable_walk_init has initialized iter->walker; if it has not, we
    must not call rhashtable_walk_stop or rhashtable_walk_exit.
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ddf25aea
glock.c 50.7 KB