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