| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| /****************************************************************************** | |
| ******************************************************************************* | |
| ** | |
| ** 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 2 | |
| /* 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[]; | |
| }; | |
| struct dlm_lspace_params { | |
| __u32 flags; | |
| __u32 minor; | |
| char name[]; | |
| }; | |
| 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 | |