summaryrefslogtreecommitdiffstats
path: root/fs/dlm/lockspace.c
diff options
context:
space:
mode:
authorAlexander Aring <aahringo@redhat.com>2022-04-04 16:06:46 -0400
committerDavid Teigland <teigland@redhat.com>2022-04-06 14:03:01 -0500
commit2c3fa6ae4d520d59727dac33a3e14d42f3dd36d8 (patch)
treec4ddab6fb85656e2274f910aaf476a151273a8e0 /fs/dlm/lockspace.c
parent401597485cfc702ee75c4dc73345dcfcdb002d04 (diff)
downloadlinux-stable-2c3fa6ae4d520d59727dac33a3e14d42f3dd36d8.tar.gz
linux-stable-2c3fa6ae4d520d59727dac33a3e14d42f3dd36d8.tar.bz2
linux-stable-2c3fa6ae4d520d59727dac33a3e14d42f3dd36d8.zip
dlm: check required context while close
This patch adds a WARN_ON() check to validate the right context while dlm_midcomms_close() is called. Even before commit 489d8e559c65 ("fs: dlm: add reliable connection if reconnect") in this context dlm_lowcomms_close() flushes all ongoing transmission triggered by dlm application stack. If we do that, it's required that no new message will be triggered by the dlm application stack. The function dlm_midcomms_close() is not called often so we can check if all lockspaces are in such context. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/lockspace.c')
-rw-r--r--fs/dlm/lockspace.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
index 0d3833a124a3..19ed41a5da93 100644
--- a/fs/dlm/lockspace.c
+++ b/fs/dlm/lockspace.c
@@ -922,3 +922,15 @@ void dlm_stop_lockspaces(void)
log_print("dlm user daemon left %d lockspaces", count);
}
+void dlm_stop_lockspaces_check(void)
+{
+ struct dlm_ls *ls;
+
+ spin_lock(&lslist_lock);
+ list_for_each_entry(ls, &lslist, ls_list) {
+ if (WARN_ON(!rwsem_is_locked(&ls->ls_in_recovery) ||
+ !dlm_locking_stopped(ls)))
+ break;
+ }
+ spin_unlock(&lslist_lock);
+}