18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/******************************************************************************
38c2ecf20Sopenharmony_ci*******************************************************************************
48c2ecf20Sopenharmony_ci**
58c2ecf20Sopenharmony_ci**  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
68c2ecf20Sopenharmony_ci**  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
78c2ecf20Sopenharmony_ci**
88c2ecf20Sopenharmony_ci**
98c2ecf20Sopenharmony_ci*******************************************************************************
108c2ecf20Sopenharmony_ci******************************************************************************/
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <linux/module.h>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include "dlm_internal.h"
158c2ecf20Sopenharmony_ci#include "lockspace.h"
168c2ecf20Sopenharmony_ci#include "lock.h"
178c2ecf20Sopenharmony_ci#include "user.h"
188c2ecf20Sopenharmony_ci#include "memory.h"
198c2ecf20Sopenharmony_ci#include "config.h"
208c2ecf20Sopenharmony_ci#include "lowcomms.h"
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cistatic int __init init_dlm(void)
238c2ecf20Sopenharmony_ci{
248c2ecf20Sopenharmony_ci	int error;
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	error = dlm_memory_init();
278c2ecf20Sopenharmony_ci	if (error)
288c2ecf20Sopenharmony_ci		goto out;
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci	error = dlm_lockspace_init();
318c2ecf20Sopenharmony_ci	if (error)
328c2ecf20Sopenharmony_ci		goto out_mem;
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	error = dlm_config_init();
358c2ecf20Sopenharmony_ci	if (error)
368c2ecf20Sopenharmony_ci		goto out_lockspace;
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	dlm_register_debugfs();
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci	error = dlm_user_init();
418c2ecf20Sopenharmony_ci	if (error)
428c2ecf20Sopenharmony_ci		goto out_debug;
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci	error = dlm_netlink_init();
458c2ecf20Sopenharmony_ci	if (error)
468c2ecf20Sopenharmony_ci		goto out_user;
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci	error = dlm_plock_init();
498c2ecf20Sopenharmony_ci	if (error)
508c2ecf20Sopenharmony_ci		goto out_netlink;
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	printk("DLM installed\n");
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	return 0;
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci out_netlink:
578c2ecf20Sopenharmony_ci	dlm_netlink_exit();
588c2ecf20Sopenharmony_ci out_user:
598c2ecf20Sopenharmony_ci	dlm_user_exit();
608c2ecf20Sopenharmony_ci out_debug:
618c2ecf20Sopenharmony_ci	dlm_unregister_debugfs();
628c2ecf20Sopenharmony_ci	dlm_config_exit();
638c2ecf20Sopenharmony_ci out_lockspace:
648c2ecf20Sopenharmony_ci	dlm_lockspace_exit();
658c2ecf20Sopenharmony_ci out_mem:
668c2ecf20Sopenharmony_ci	dlm_memory_exit();
678c2ecf20Sopenharmony_ci out:
688c2ecf20Sopenharmony_ci	return error;
698c2ecf20Sopenharmony_ci}
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_cistatic void __exit exit_dlm(void)
728c2ecf20Sopenharmony_ci{
738c2ecf20Sopenharmony_ci	dlm_plock_exit();
748c2ecf20Sopenharmony_ci	dlm_netlink_exit();
758c2ecf20Sopenharmony_ci	dlm_user_exit();
768c2ecf20Sopenharmony_ci	dlm_config_exit();
778c2ecf20Sopenharmony_ci	dlm_memory_exit();
788c2ecf20Sopenharmony_ci	dlm_lockspace_exit();
798c2ecf20Sopenharmony_ci	dlm_lowcomms_exit();
808c2ecf20Sopenharmony_ci	dlm_unregister_debugfs();
818c2ecf20Sopenharmony_ci}
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_cimodule_init(init_dlm);
848c2ecf20Sopenharmony_cimodule_exit(exit_dlm);
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Distributed Lock Manager");
878c2ecf20Sopenharmony_ciMODULE_AUTHOR("Red Hat, Inc.");
888c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL");
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(dlm_new_lockspace);
918c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(dlm_release_lockspace);
928c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(dlm_lock);
938c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(dlm_unlock);
948c2ecf20Sopenharmony_ci
95