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