fs: dlm: avoid comms shutdown delay in release_lockspace
authorAlexander Aring <aahringo@redhat.com>
Thu, 26 Aug 2021 14:06:31 +0000 (10:06 -0400)
committerDavid Teigland <teigland@redhat.com>
Wed, 1 Sep 2021 16:29:14 +0000 (11:29 -0500)
When dlm_release_lockspace does active shutdown on connections to
other nodes, the active shutdown will wait for any exisitng passive
shutdowns to be resolved.  But, the sequence of operations during
dlm_release_lockspace can prevent the normal resolution of passive
shutdowns (processed normally by way of lockspace recovery.)
This disruption of passive shutdown handling can cause the active
shutdown to wait for a full timeout period, delaying the completion
of dlm_release_lockspace.

To fix this, make dlm_release_lockspace resolve existing passive
shutdowns (by calling dlm_clear_members earlier), before it does
active shutdowns.  The active shutdowns will not find any passive
shutdowns to wait for, and will not be delayed.

Reported-by: Chris Mackowski <cmackows@redhat.com>
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/lockspace.c

index 23c2d73..10eddfa 100644 (file)
@@ -793,6 +793,7 @@ static int release_lockspace(struct dlm_ls *ls, int force)
 
        if (ls_count == 1) {
                dlm_scand_stop();
+               dlm_clear_members(ls);
                dlm_midcomms_shutdown();
        }