diff options
Diffstat (limited to 'include/uapi/linux/dlm_device.h')
| -rw-r--r-- | include/uapi/linux/dlm_device.h | 108 | 
1 files changed, 108 insertions, 0 deletions
diff --git a/include/uapi/linux/dlm_device.h b/include/uapi/linux/dlm_device.h new file mode 100644 index 00000000000..3060783c419 --- /dev/null +++ b/include/uapi/linux/dlm_device.h @@ -0,0 +1,108 @@ +/****************************************************************************** +******************************************************************************* +** +**  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved. +**  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved. +** +**  This copyrighted material is made available to anyone wishing to use, +**  modify, copy, or redistribute it subject to the terms and conditions +**  of the GNU General Public License v.2. +** +******************************************************************************* +******************************************************************************/ + +#ifndef _LINUX_DLM_DEVICE_H +#define _LINUX_DLM_DEVICE_H + +/* This is the device interface for dlm, most users will use a library + * interface. + */ + +#include <linux/dlm.h> +#include <linux/types.h> + +#define DLM_USER_LVB_LEN	32 + +/* Version of the device interface */ +#define DLM_DEVICE_VERSION_MAJOR 6 +#define DLM_DEVICE_VERSION_MINOR 0 +#define DLM_DEVICE_VERSION_PATCH 1 + +/* struct passed to the lock write */ +struct dlm_lock_params { +	__u8 mode; +	__u8 namelen; +	__u16 unused; +	__u32 flags; +	__u32 lkid; +	__u32 parent; +	__u64 xid; +	__u64 timeout; +	void __user *castparam; +	void __user *castaddr; +	void __user *bastparam; +	void __user *bastaddr; +	struct dlm_lksb __user *lksb; +	char lvb[DLM_USER_LVB_LEN]; +	char name[0]; +}; + +struct dlm_lspace_params { +	__u32 flags; +	__u32 minor; +	char name[0]; +}; + +struct dlm_purge_params { +	__u32 nodeid; +	__u32 pid; +}; + +struct dlm_write_request { +	__u32 version[3]; +	__u8 cmd; +	__u8 is64bit; +	__u8 unused[2]; + +	union  { +		struct dlm_lock_params   lock; +		struct dlm_lspace_params lspace; +		struct dlm_purge_params  purge; +	} i; +}; + +struct dlm_device_version { +	__u32 version[3]; +}; + +/* struct read from the "device" fd, +   consists mainly of userspace pointers for the library to use */ + +struct dlm_lock_result { +	__u32 version[3]; +	__u32 length; +	void __user * user_astaddr; +	void __user * user_astparam; +	struct dlm_lksb __user * user_lksb; +	struct dlm_lksb lksb; +	__u8 bast_mode; +	__u8 unused[3]; +	/* Offsets may be zero if no data is present */ +	__u32 lvb_offset; +}; + +/* Commands passed to the device */ +#define DLM_USER_LOCK         1 +#define DLM_USER_UNLOCK       2 +#define DLM_USER_QUERY        3 +#define DLM_USER_CREATE_LOCKSPACE  4 +#define DLM_USER_REMOVE_LOCKSPACE  5 +#define DLM_USER_PURGE        6 +#define DLM_USER_DEADLOCK     7 + +/* Lockspace flags */ +#define DLM_USER_LSFLG_AUTOFREE   1 +#define DLM_USER_LSFLG_FORCEFREE  2 + +#endif +  |