at master 2.1 kB view raw
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 25struct workqueue_struct *dlm_wq; 26 27static 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", WQ_PERCPU, 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 81static 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 94module_init(init_dlm); 95module_exit(exit_dlm); 96 97MODULE_DESCRIPTION("Distributed Lock Manager"); 98MODULE_AUTHOR("Red Hat, Inc."); 99MODULE_LICENSE("GPL"); 100 101EXPORT_SYMBOL_GPL(dlm_new_lockspace); 102EXPORT_SYMBOL_GPL(dlm_release_lockspace); 103EXPORT_SYMBOL_GPL(dlm_lock); 104EXPORT_SYMBOL_GPL(dlm_unlock); 105