106 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/******************************************************************************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_POINTS23#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", 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 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 106