• David Teigland's avatar
    dlm: fix lvb invalidation conditions · da8c6663
    David Teigland authored
    When a node is removed that held a PW/EX lock, the
    existing master node should invalidate the lvb on the
    resource due to the purged lock.
    
    Previously, the existing master node was invalidating
    the lvb if it found only NL/CR locks on the resource
    during recovery for the removed node.  This could lead
    to cases where it invalidated the lvb and shouldn't
    have, or cases where it should have invalidated and
    didn't.
    
    When recovery selects a *new* master node for a
    resource, and that new master finds only NL/CR locks
    on the resource after lock recovery, it should
    invalidate the lvb.  This case was handled correctly
    (but was incorrectly applied to the existing master
    case also.)
    
    When a process exits while holding a PW/EX lock,
    the lvb on the resource should be invalidated.
    This was not happening.
    
    The lvb contents and VALNOTVALID flag should be
    recovered before granting locks in recovery so that
    the recovered lvb state is provided in the callback.
    The lvb was being recovered after the lock was granted.
    Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
    da8c6663
dlm_internal.h 19.8 KB