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