• Bob Peterson's avatar
    gfs2: Don't freeze the file system during unmount · f39e7d3a
    Bob Peterson authored
    GFS2's freeze/thaw mechanism uses a special freeze glock to control its
    operation. It does this with a sync glock operation (glops.c) called
    freeze_go_sync. When the freeze glock is demoted (glock's do_xmote) the
    glops function causes the file system to be frozen. This is intended. However,
    GFS2's mount and unmount processes also hold the freeze glock to prevent other
    processes, perhaps on different cluster nodes, from mounting the frozen file
    system in read-write mode.
    
    Before this patch, there was no check in freeze_go_sync for whether a freeze
    in intended or whether the glock demote was caused by a normal unmount.
    So it was trying to freeze the file system it's trying to unmount, which
    ends up in a deadlock.
    
    This patch adds an additional check to freeze_go_sync so that demotes of the
    freeze glock are ignored if they come from the unmount process.
    
    Fixes: 20b32912 ("gfs2: Fix regression in freeze_go_sync")
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    f39e7d3a
glops.c 21.8 KB