fs: dlm: add midcomms init/start functions
authorAlexander Aring <aahringo@redhat.com>
Thu, 17 Nov 2022 22:11:46 +0000 (17:11 -0500)
committerDavid Teigland <teigland@redhat.com>
Mon, 21 Nov 2022 15:45:49 +0000 (09:45 -0600)
This patch introduces leftovers of init, start, stop and exit
functionality. The dlm application layer should always call the midcomms
layer which getting aware of such event and redirect it to the lowcomms
layer. Some functionality which is currently handled inside the start
functionality of midcomms and lowcomms should be handled in the init
functionality as it only need to be initialized once when dlm is loaded.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/lockspace.c
fs/dlm/lowcomms.c
fs/dlm/lowcomms.h
fs/dlm/main.c
fs/dlm/midcomms.c
fs/dlm/midcomms.h

index 96fe8f7ca09cd0831af6c66de462161bf626a836..d0b4e2181a5f38a8551bea8ee4f03197923a9a5b 100644 (file)
@@ -17,7 +17,6 @@
 #include "recoverd.h"
 #include "dir.h"
 #include "midcomms.h"
-#include "lowcomms.h"
 #include "config.h"
 #include "memory.h"
 #include "lock.h"
@@ -723,7 +722,7 @@ static int __dlm_new_lockspace(const char *name, const char *cluster,
        if (!ls_count) {
                dlm_scand_stop();
                dlm_midcomms_shutdown();
-               dlm_lowcomms_stop();
+               dlm_midcomms_stop();
        }
  out:
        mutex_unlock(&ls_lock);
@@ -926,7 +925,7 @@ int dlm_release_lockspace(void *lockspace, int force)
        if (!error)
                ls_count--;
        if (!ls_count)
-               dlm_lowcomms_stop();
+               dlm_midcomms_stop();
        mutex_unlock(&ls_lock);
 
        return error;
index b05c6d9b5102c01ded06945d1d7ea7760c38fe25..0dcb69cc456a81b213ac0537320b793ae371b45d 100644 (file)
@@ -1987,10 +1987,6 @@ static const struct dlm_proto_ops dlm_sctp_ops = {
 int dlm_lowcomms_start(void)
 {
        int error = -EINVAL;
-       int i;
-
-       for (i = 0; i < CONN_HASH_SIZE; i++)
-               INIT_HLIST_HEAD(&connection_hash[i]);
 
        init_local();
        if (!dlm_local_count) {
@@ -1999,8 +1995,6 @@ int dlm_lowcomms_start(void)
                goto fail;
        }
 
-       INIT_WORK(&listen_con.rwork, process_listen_recv_socket);
-
        error = work_start();
        if (error)
                goto fail_local;
@@ -2039,6 +2033,16 @@ fail:
        return error;
 }
 
+void dlm_lowcomms_init(void)
+{
+       int i;
+
+       for (i = 0; i < CONN_HASH_SIZE; i++)
+               INIT_HLIST_HEAD(&connection_hash[i]);
+
+       INIT_WORK(&listen_con.rwork, process_listen_recv_socket);
+}
+
 void dlm_lowcomms_exit(void)
 {
        struct dlm_node_addr *na, *safe;
index 29369feea9916846ced5a8c01ccfb462773ffb8a..bbce7a18416dc3cf9b769424cf52f0fb08a1e968 100644 (file)
@@ -35,6 +35,7 @@ extern int dlm_allow_conn;
 int dlm_lowcomms_start(void);
 void dlm_lowcomms_shutdown(void);
 void dlm_lowcomms_stop(void);
+void dlm_lowcomms_init(void);
 void dlm_lowcomms_exit(void);
 int dlm_lowcomms_close(int nodeid);
 struct dlm_msg *dlm_lowcomms_new_msg(int nodeid, int len, gfp_t allocation,
index 1c5be4b70ac1be667e4631dab6891b63cd71459e..a77338be32371447c658bef2cde8582da02d595d 100644 (file)
@@ -17,7 +17,7 @@
 #include "user.h"
 #include "memory.h"
 #include "config.h"
-#include "lowcomms.h"
+#include "midcomms.h"
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/dlm.h>
@@ -30,6 +30,8 @@ static int __init init_dlm(void)
        if (error)
                goto out;
 
+       dlm_midcomms_init();
+
        error = dlm_lockspace_init();
        if (error)
                goto out_mem;
@@ -66,6 +68,7 @@ static int __init init_dlm(void)
  out_lockspace:
        dlm_lockspace_exit();
  out_mem:
+       dlm_midcomms_exit();
        dlm_memory_exit();
  out:
        return error;
@@ -79,7 +82,7 @@ static void __exit exit_dlm(void)
        dlm_config_exit();
        dlm_memory_exit();
        dlm_lockspace_exit();
-       dlm_lowcomms_exit();
+       dlm_midcomms_exit();
        dlm_unregister_debugfs();
 }
 
index 960def5ab53044080d515319efabd2673d0e192c..6b4c72fb017101798ed7dcd50b4def83f5c599f5 100644 (file)
@@ -1205,13 +1205,28 @@ void dlm_midcomms_commit_mhandle(struct dlm_mhandle *mh,
 #endif
 
 int dlm_midcomms_start(void)
+{
+       return dlm_lowcomms_start();
+}
+
+void dlm_midcomms_stop(void)
+{
+       dlm_lowcomms_stop();
+}
+
+void dlm_midcomms_init(void)
 {
        int i;
 
        for (i = 0; i < CONN_HASH_SIZE; i++)
                INIT_HLIST_HEAD(&node_hash[i]);
 
-       return dlm_lowcomms_start();
+       dlm_lowcomms_init();
+}
+
+void dlm_midcomms_exit(void)
+{
+       dlm_lowcomms_exit();
 }
 
 static void dlm_act_fin_ack_rcv(struct midcomms_node *node)
index d6286e80b077aa084517113c8ec419d671ae1a2a..69296552d5add634a83ad8bfd596fa038e6b42d0 100644 (file)
@@ -21,6 +21,9 @@ void dlm_midcomms_commit_mhandle(struct dlm_mhandle *mh, const void *name,
                                 int namelen);
 int dlm_midcomms_close(int nodeid);
 int dlm_midcomms_start(void);
+void dlm_midcomms_stop(void);
+void dlm_midcomms_init(void);
+void dlm_midcomms_exit(void);
 void dlm_midcomms_shutdown(void);
 void dlm_midcomms_add_member(int nodeid);
 void dlm_midcomms_remove_member(int nodeid);