1 // SPDX-License-Identifier: GPL-2.0-only
2 /******************************************************************************
3 *******************************************************************************
4 **
5 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
6 **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
7 **
8 **
9 *******************************************************************************
10 ******************************************************************************/
11 
12 #include <linux/module.h>
13 
14 #include "dlm_internal.h"
15 #include "lockspace.h"
16 #include "lock.h"
17 #include "user.h"
18 #include "memory.h"
19 #include "config.h"
20 #include "midcomms.h"
21 
22 #define CREATE_TRACE_POINTS
23 #include <trace/events/dlm.h>
24 
init_dlm(void)25 static int __init init_dlm(void)
26 {
27 	int error;
28 
29 	error = dlm_memory_init();
30 	if (error)
31 		goto out;
32 
33 	dlm_midcomms_init();
34 
35 	error = dlm_lockspace_init();
36 	if (error)
37 		goto out_mem;
38 
39 	error = dlm_config_init();
40 	if (error)
41 		goto out_lockspace;
42 
43 	dlm_register_debugfs();
44 
45 	error = dlm_user_init();
46 	if (error)
47 		goto out_debug;
48 
49 	error = dlm_netlink_init();
50 	if (error)
51 		goto out_user;
52 
53 	error = dlm_plock_init();
54 	if (error)
55 		goto out_netlink;
56 
57 	printk("DLM installed\n");
58 
59 	return 0;
60 
61  out_netlink:
62 	dlm_netlink_exit();
63  out_user:
64 	dlm_user_exit();
65  out_debug:
66 	dlm_unregister_debugfs();
67 	dlm_config_exit();
68  out_lockspace:
69 	dlm_lockspace_exit();
70  out_mem:
71 	dlm_midcomms_exit();
72 	dlm_memory_exit();
73  out:
74 	return error;
75 }
76 
exit_dlm(void)77 static void __exit exit_dlm(void)
78 {
79 	dlm_plock_exit();
80 	dlm_netlink_exit();
81 	dlm_user_exit();
82 	dlm_config_exit();
83 	dlm_memory_exit();
84 	dlm_lockspace_exit();
85 	dlm_midcomms_exit();
86 	dlm_unregister_debugfs();
87 }
88 
89 module_init(init_dlm);
90 module_exit(exit_dlm);
91 
92 MODULE_DESCRIPTION("Distributed Lock Manager");
93 MODULE_AUTHOR("Red Hat, Inc.");
94 MODULE_LICENSE("GPL");
95 
96 EXPORT_SYMBOL_GPL(dlm_new_lockspace);
97 EXPORT_SYMBOL_GPL(dlm_release_lockspace);
98 EXPORT_SYMBOL_GPL(dlm_lock);
99 EXPORT_SYMBOL_GPL(dlm_unlock);
100 
101