• Bob Peterson's avatar
    gfs2: Don't call dlm after protocol is unmounted · d1340f80
    Bob Peterson authored
    In the gfs2 withdraw sequence, the dlm protocol is unmounted with a call
    to lm_unmount. After a withdraw, users are allowed to unmount the
    withdrawn file system. But at that point we may still have glocks left
    over that we need to free via unmount's call to gfs2_gl_hash_clear.
    These glocks may have never been completed because of whatever problem
    caused the withdraw (IO errors or whatever).
    
    Before this patch, function gdlm_put_lock would still try to call into
    dlm to unlock these leftover glocks, which resulted in dlm returning
    -EINVAL because the lock space was abandoned. These glocks were never
    freed because there was no mechanism after that to free them.
    
    This patch adds a check to gdlm_put_lock to see if the locking protocol
    was inactive (DFL_UNMOUNT flag) and if so, free the glock and not
    make the invalid call into dlm.
    
    I could have combined this "if" with the one that follows, related to
    leftover glock LVBs, but I felt the code was more readable with its own
    if clause.
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    d1340f80
lock_dlm.c 40.5 KB