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 Teiglandstatic 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 Teiglandstatic 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