xref: /openbmc/linux/fs/dlm/main.c (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
12522fe45SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2e7fd4179SDavid Teigland /******************************************************************************
3e7fd4179SDavid Teigland *******************************************************************************
4e7fd4179SDavid Teigland **
5e7fd4179SDavid Teigland **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
63ae1acf9SDavid Teigland **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
7e7fd4179SDavid Teigland **
8e7fd4179SDavid Teigland **
9e7fd4179SDavid Teigland *******************************************************************************
10e7fd4179SDavid Teigland ******************************************************************************/
11e7fd4179SDavid Teigland 
127963b8a5SPaul Gortmaker #include <linux/module.h>
137963b8a5SPaul Gortmaker 
14e7fd4179SDavid Teigland #include "dlm_internal.h"
15e7fd4179SDavid Teigland #include "lockspace.h"
16e7fd4179SDavid Teigland #include "lock.h"
17597d0caeSDavid Teigland #include "user.h"
18e7fd4179SDavid Teigland #include "memory.h"
19e7fd4179SDavid Teigland #include "config.h"
208b0188b0SAlexander Aring #include "midcomms.h"
21e7fd4179SDavid Teigland 
22f1d3b8f9SAlexander Aring #define CREATE_TRACE_POINTS
23f1d3b8f9SAlexander Aring #include <trace/events/dlm.h>
24f1d3b8f9SAlexander Aring 
init_dlm(void)25e7fd4179SDavid Teigland static int __init init_dlm(void)
26e7fd4179SDavid Teigland {
27e7fd4179SDavid Teigland 	int error;
28e7fd4179SDavid Teigland 
29e7fd4179SDavid Teigland 	error = dlm_memory_init();
30e7fd4179SDavid Teigland 	if (error)
31e7fd4179SDavid Teigland 		goto out;
32e7fd4179SDavid Teigland 
338b0188b0SAlexander Aring 	dlm_midcomms_init();
348b0188b0SAlexander Aring 
35e7fd4179SDavid Teigland 	error = dlm_lockspace_init();
36e7fd4179SDavid Teigland 	if (error)
37e7fd4179SDavid Teigland 		goto out_mem;
38e7fd4179SDavid Teigland 
39e7fd4179SDavid Teigland 	error = dlm_config_init();
40e7fd4179SDavid Teigland 	if (error)
41e7fd4179SDavid Teigland 		goto out_lockspace;
42e7fd4179SDavid Teigland 
43a48f9721SGreg Kroah-Hartman 	dlm_register_debugfs();
44e7fd4179SDavid Teigland 
45597d0caeSDavid Teigland 	error = dlm_user_init();
46597d0caeSDavid Teigland 	if (error)
47ac33d071SPatrick Caulfield 		goto out_debug;
48597d0caeSDavid Teigland 
492402211aSDavid Teigland 	error = dlm_plock_init();
502402211aSDavid Teigland 	if (error)
51*01c7a597SAlexander Aring 		goto out_user;
522402211aSDavid Teigland 
5375ce481eSMichal Marek 	printk("DLM installed\n");
54e7fd4179SDavid Teigland 
55e7fd4179SDavid Teigland 	return 0;
56e7fd4179SDavid Teigland 
573ae1acf9SDavid Teigland  out_user:
583ae1acf9SDavid Teigland 	dlm_user_exit();
59e7fd4179SDavid Teigland  out_debug:
60e7fd4179SDavid Teigland 	dlm_unregister_debugfs();
61e7fd4179SDavid Teigland 	dlm_config_exit();
62e7fd4179SDavid Teigland  out_lockspace:
63e7fd4179SDavid Teigland 	dlm_lockspace_exit();
64e7fd4179SDavid Teigland  out_mem:
658b0188b0SAlexander Aring 	dlm_midcomms_exit();
66e7fd4179SDavid Teigland 	dlm_memory_exit();
67e7fd4179SDavid Teigland  out:
68e7fd4179SDavid Teigland 	return error;
69e7fd4179SDavid Teigland }
70e7fd4179SDavid Teigland 
exit_dlm(void)71e7fd4179SDavid Teigland static void __exit exit_dlm(void)
72e7fd4179SDavid Teigland {
732402211aSDavid Teigland 	dlm_plock_exit();
74597d0caeSDavid Teigland 	dlm_user_exit();
75e7fd4179SDavid Teigland 	dlm_config_exit();
76e7fd4179SDavid Teigland 	dlm_lockspace_exit();
77e7fd4179SDavid Teigland 	dlm_midcomms_exit();
788b0188b0SAlexander Aring 	dlm_unregister_debugfs();
79e7fd4179SDavid Teigland 	dlm_memory_exit();
80e7fd4179SDavid Teigland }
81e7fd4179SDavid Teigland 
82e7fd4179SDavid Teigland module_init(init_dlm);
83e7fd4179SDavid Teigland module_exit(exit_dlm);
84e7fd4179SDavid Teigland 
85e7fd4179SDavid Teigland MODULE_DESCRIPTION("Distributed Lock Manager");
86e7fd4179SDavid Teigland MODULE_AUTHOR("Red Hat, Inc.");
87e7fd4179SDavid Teigland MODULE_LICENSE("GPL");
88e7fd4179SDavid Teigland 
89e7fd4179SDavid Teigland EXPORT_SYMBOL_GPL(dlm_new_lockspace);
90e7fd4179SDavid Teigland EXPORT_SYMBOL_GPL(dlm_release_lockspace);
91e7fd4179SDavid Teigland EXPORT_SYMBOL_GPL(dlm_lock);
92e7fd4179SDavid Teigland EXPORT_SYMBOL_GPL(dlm_unlock);
93e7fd4179SDavid Teigland 
94