#include <linux/module.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/highmem.h>
#include <linux/init.h>
#include <linux/sysctl.h>
#include <linux/random.h>
#include <linux/blkdev.h>
#include <linux/socket.h>
#include <linux/inet.h>
#include <linux/timer.h>
#include <linux/kthread.h>
#include <linux/delay.h>
#include "../cluster/heartbeat.h"
#include "../cluster/nodemanager.h"
#include "../cluster/tcp.h"
#include "dlmapi.h"
#include "dlmcommon.h"
#include "dlmdomain.h"
#define MLOG_MASK_PREFIX …
#include "../cluster/masklog.h"
static int dlm_thread(void *data);
static void dlm_flush_asts(struct dlm_ctxt *dlm);
void __dlm_wait_on_lockres_flags(struct dlm_lock_resource *res, int flags)
{ … }
int __dlm_lockres_has_locks(struct dlm_lock_resource *res)
{ … }
int __dlm_lockres_unused(struct dlm_lock_resource *res)
{ … }
void __dlm_lockres_calc_usage(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res)
{ … }
void dlm_lockres_calc_usage(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res)
{ … }
void __dlm_do_purge_lockres(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res)
{ … }
static void dlm_purge_lockres(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res)
{ … }
static void dlm_run_purge_list(struct dlm_ctxt *dlm,
int purge_now)
{ … }
static void dlm_shuffle_lists(struct dlm_ctxt *dlm,
struct dlm_lock_resource *res)
{ … }
void dlm_kick_thread(struct dlm_ctxt *dlm, struct dlm_lock_resource *res)
{ … }
void __dlm_dirty_lockres(struct dlm_ctxt *dlm, struct dlm_lock_resource *res)
{ … }
int dlm_launch_thread(struct dlm_ctxt *dlm)
{ … }
void dlm_complete_thread(struct dlm_ctxt *dlm)
{ … }
static int dlm_dirty_list_empty(struct dlm_ctxt *dlm)
{ … }
static void dlm_flush_asts(struct dlm_ctxt *dlm)
{ … }
#define DLM_THREAD_TIMEOUT_MS …
#define DLM_THREAD_MAX_DIRTY …
static int dlm_thread(void *data)
{ … }