]> bbs.cooldavid.org Git - net-next-2.6.git/blob - include/linux/dlm_device.h
[DLM] The core of the DLM for GFS2/CLVM
[net-next-2.6.git] / include / linux / dlm_device.h
1 /******************************************************************************
2 *******************************************************************************
3 **
4 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
5 **  Copyright (C) 2004-2005 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 /* This is the device interface for dlm, most users will use a library
15  * interface.
16  */
17
18 #define DLM_USER_LVB_LEN        32
19
20 /* Version of the device interface */
21 #define DLM_DEVICE_VERSION_MAJOR 3
22 #define DLM_DEVICE_VERSION_MINOR 0
23 #define DLM_DEVICE_VERSION_PATCH 0
24
25 /* struct passed to the lock write */
26 struct dlm_lock_params {
27         __u8 mode;
28         __u16 flags;
29         __u32 lkid;
30         __u32 parent;
31         struct dlm_range range;
32         __u8 namelen;
33         void __user *castparam;
34         void __user *castaddr;
35         void __user *bastparam;
36         void __user *bastaddr;
37         struct dlm_lksb __user *lksb;
38         char lvb[DLM_USER_LVB_LEN];
39         char name[1];
40 };
41
42 struct dlm_lspace_params {
43         __u32 flags;
44         __u32 minor;
45         char name[1];
46 };
47
48 struct dlm_write_request {
49         __u32 version[3];
50         __u8 cmd;
51
52         union  {
53                 struct dlm_lock_params   lock;
54                 struct dlm_lspace_params lspace;
55         } i;
56 };
57
58 /* struct read from the "device" fd,
59    consists mainly of userspace pointers for the library to use */
60 struct dlm_lock_result {
61         __u32 length;
62         void __user * user_astaddr;
63         void __user * user_astparam;
64         struct dlm_lksb __user * user_lksb;
65         struct dlm_lksb lksb;
66         __u8 bast_mode;
67         /* Offsets may be zero if no data is present */
68         __u32 lvb_offset;
69 };
70
71 /* Commands passed to the device */
72 #define DLM_USER_LOCK         1
73 #define DLM_USER_UNLOCK       2
74 #define DLM_USER_QUERY        3
75 #define DLM_USER_CREATE_LOCKSPACE  4
76 #define DLM_USER_REMOVE_LOCKSPACE  5
77
78 /* Arbitrary length restriction */
79 #define MAX_LS_NAME_LEN 64
80
81 /* Lockspace flags */
82 #define DLM_USER_LSFLG_AUTOFREE   1
83 #define DLM_USER_LSFLG_FORCEFREE  2
84