cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / linux / dlm_device.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /******************************************************************************
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 **  This copyrighted material is made available to anyone wishing to use,
9 **  modify, copy, or redistribute it subject to the terms and conditions
10 **  of the GNU General Public License v.2.
11 **
12 *******************************************************************************
13 ******************************************************************************/
14
15 #ifndef _LINUX_DLM_DEVICE_H
16 #define _LINUX_DLM_DEVICE_H
17
18 /* This is the device interface for dlm, most users will use a library
19  * interface.
20  */
21
22 #include <linux/dlm.h>
23 #include <linux/types.h>
24
25 #define DLM_USER_LVB_LEN        32
26
27 /* Version of the device interface */
28 #define DLM_DEVICE_VERSION_MAJOR 6
29 #define DLM_DEVICE_VERSION_MINOR 0
30 #define DLM_DEVICE_VERSION_PATCH 2
31
32 /* struct passed to the lock write */
33 struct dlm_lock_params {
34         __u8 mode;
35         __u8 namelen;
36         __u16 unused;
37         __u32 flags;
38         __u32 lkid;
39         __u32 parent;
40         __u64 xid;
41         __u64 timeout;
42         void *castparam;
43         void *castaddr;
44         void *bastparam;
45         void *bastaddr;
46         struct dlm_lksb *lksb;
47         char lvb[DLM_USER_LVB_LEN];
48         char name[0];
49 };
50
51 struct dlm_lspace_params {
52         __u32 flags;
53         __u32 minor;
54         char name[0];
55 };
56
57 struct dlm_purge_params {
58         __u32 nodeid;
59         __u32 pid;
60 };
61
62 struct dlm_write_request {
63         __u32 version[3];
64         __u8 cmd;
65         __u8 is64bit;
66         __u8 unused[2];
67
68         union  {
69                 struct dlm_lock_params   lock;
70                 struct dlm_lspace_params lspace;
71                 struct dlm_purge_params  purge;
72         } i;
73 };
74
75 struct dlm_device_version {
76         __u32 version[3];
77 };
78
79 /* struct read from the "device" fd,
80    consists mainly of userspace pointers for the library to use */
81
82 struct dlm_lock_result {
83         __u32 version[3];
84         __u32 length;
85         void * user_astaddr;
86         void * user_astparam;
87         struct dlm_lksb * user_lksb;
88         struct dlm_lksb lksb;
89         __u8 bast_mode;
90         __u8 unused[3];
91         /* Offsets may be zero if no data is present */
92         __u32 lvb_offset;
93 };
94
95 /* Commands passed to the device */
96 #define DLM_USER_LOCK         1
97 #define DLM_USER_UNLOCK       2
98 #define DLM_USER_QUERY        3
99 #define DLM_USER_CREATE_LOCKSPACE  4
100 #define DLM_USER_REMOVE_LOCKSPACE  5
101 #define DLM_USER_PURGE        6
102 #define DLM_USER_DEADLOCK     7
103
104 /* Lockspace flags */
105 #define DLM_USER_LSFLG_AUTOFREE   1
106 #define DLM_USER_LSFLG_FORCEFREE  2
107
108 #endif
109