Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/fs/dlm/main.c
26282 views
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
25
struct workqueue_struct *dlm_wq;
26
27
static int __init init_dlm(void)
28
{
29
int error;
30
31
error = dlm_memory_init();
32
if (error)
33
goto out;
34
35
dlm_midcomms_init();
36
37
error = dlm_lockspace_init();
38
if (error)
39
goto out_mem;
40
41
error = dlm_config_init();
42
if (error)
43
goto out_lockspace;
44
45
dlm_register_debugfs();
46
47
error = dlm_user_init();
48
if (error)
49
goto out_debug;
50
51
error = dlm_plock_init();
52
if (error)
53
goto out_user;
54
55
dlm_wq = alloc_workqueue("dlm_wq", 0, 0);
56
if (!dlm_wq) {
57
error = -ENOMEM;
58
goto out_plock;
59
}
60
61
printk("DLM installed\n");
62
63
return 0;
64
65
out_plock:
66
dlm_plock_exit();
67
out_user:
68
dlm_user_exit();
69
out_debug:
70
dlm_unregister_debugfs();
71
dlm_config_exit();
72
out_lockspace:
73
dlm_lockspace_exit();
74
out_mem:
75
dlm_midcomms_exit();
76
dlm_memory_exit();
77
out:
78
return error;
79
}
80
81
static void __exit exit_dlm(void)
82
{
83
/* be sure every pending work e.g. freeing is done */
84
destroy_workqueue(dlm_wq);
85
dlm_plock_exit();
86
dlm_user_exit();
87
dlm_config_exit();
88
dlm_lockspace_exit();
89
dlm_midcomms_exit();
90
dlm_unregister_debugfs();
91
dlm_memory_exit();
92
}
93
94
module_init(init_dlm);
95
module_exit(exit_dlm);
96
97
MODULE_DESCRIPTION("Distributed Lock Manager");
98
MODULE_AUTHOR("Red Hat, Inc.");
99
MODULE_LICENSE("GPL");
100
101
EXPORT_SYMBOL_GPL(dlm_new_lockspace);
102
EXPORT_SYMBOL_GPL(dlm_release_lockspace);
103
EXPORT_SYMBOL_GPL(dlm_lock);
104
EXPORT_SYMBOL_GPL(dlm_unlock);
105
106
107