• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 __DLMCONSTANTS_DOT_H__
15  #define __DLMCONSTANTS_DOT_H__
16  
17  /*
18   * Constants used by DLM interface.
19   */
20  
21  #define DLM_LOCKSPACE_LEN       64
22  #define DLM_RESNAME_MAXLEN      64
23  
24  
25  /*
26   * Lock Modes
27   */
28  
29  #define DLM_LOCK_IV		(-1)	/* invalid */
30  #define DLM_LOCK_NL		0	/* null */
31  #define DLM_LOCK_CR		1	/* concurrent read */
32  #define DLM_LOCK_CW		2	/* concurrent write */
33  #define DLM_LOCK_PR		3	/* protected read */
34  #define DLM_LOCK_PW		4	/* protected write */
35  #define DLM_LOCK_EX		5	/* exclusive */
36  
37  
38  /*
39   * Flags to dlm_lock
40   *
41   * DLM_LKF_NOQUEUE
42   *
43   * Do not queue the lock request on the wait queue if it cannot be granted
44   * immediately.  If the lock cannot be granted because of this flag, DLM will
45   * either return -EAGAIN from the dlm_lock call or will return 0 from
46   * dlm_lock and -EAGAIN in the lock status block when the AST is executed.
47   *
48   * DLM_LKF_CANCEL
49   *
50   * Used to cancel a pending lock request or conversion.  A converting lock is
51   * returned to its previously granted mode.
52   *
53   * DLM_LKF_CONVERT
54   *
55   * Indicates a lock conversion request.  For conversions the name and namelen
56   * are ignored and the lock ID in the LKSB is used to identify the lock.
57   *
58   * DLM_LKF_VALBLK
59   *
60   * Requests DLM to return the current contents of the lock value block in the
61   * lock status block.  When this flag is set in a lock conversion from PW or EX
62   * modes, DLM assigns the value specified in the lock status block to the lock
63   * value block of the lock resource.  The LVB is a DLM_LVB_LEN size array
64   * containing application-specific information.
65   *
66   * DLM_LKF_QUECVT
67   *
68   * Force a conversion request to be queued, even if it is compatible with
69   * the granted modes of other locks on the same resource.
70   *
71   * DLM_LKF_IVVALBLK
72   *
73   * Invalidate the lock value block.
74   *
75   * DLM_LKF_CONVDEADLK
76   *
77   * Allows the dlm to resolve conversion deadlocks internally by demoting the
78   * granted mode of a converting lock to NL.  The DLM_SBF_DEMOTED flag is
79   * returned for a conversion that's been effected by this.
80   *
81   * DLM_LKF_PERSISTENT
82   *
83   * Only relevant to locks originating in userspace.  A persistent lock will not
84   * be removed if the process holding the lock exits.
85   *
86   * DLM_LKF_NODLCKWT
87   *
88   * Do not cancel the lock if it gets into conversion deadlock.
89   * Exclude this lock from being monitored due to DLM_LSFL_TIMEWARN.
90   *
91   * DLM_LKF_NODLCKBLK
92   *
93   * net yet implemented
94   *
95   * DLM_LKF_EXPEDITE
96   *
97   * Used only with new requests for NL mode locks.  Tells the lock manager
98   * to grant the lock, ignoring other locks in convert and wait queues.
99   *
100   * DLM_LKF_NOQUEUEBAST
101   *
102   * Send blocking AST's before returning -EAGAIN to the caller.  It is only
103   * used along with the NOQUEUE flag.  Blocking AST's are not sent for failed
104   * NOQUEUE requests otherwise.
105   *
106   * DLM_LKF_HEADQUE
107   *
108   * Add a lock to the head of the convert or wait queue rather than the tail.
109   *
110   * DLM_LKF_NOORDER
111   *
112   * Disregard the standard grant order rules and grant a lock as soon as it
113   * is compatible with other granted locks.
114   *
115   * DLM_LKF_ORPHAN
116   *
117   * not yet implemented
118   *
119   * DLM_LKF_ALTPR
120   *
121   * If the requested mode cannot be granted immediately, try to grant the lock
122   * in PR mode instead.  If this alternate mode is granted instead of the
123   * requested mode, DLM_SBF_ALTMODE is returned in the lksb.
124   *
125   * DLM_LKF_ALTCW
126   *
127   * The same as ALTPR, but the alternate mode is CW.
128   *
129   * DLM_LKF_FORCEUNLOCK
130   *
131   * Unlock the lock even if it is converting or waiting or has sublocks.
132   * Only really for use by the userland device.c code.
133   *
134   */
135  
136  #define DLM_LKF_NOQUEUE		0x00000001
137  #define DLM_LKF_CANCEL		0x00000002
138  #define DLM_LKF_CONVERT		0x00000004
139  #define DLM_LKF_VALBLK		0x00000008
140  #define DLM_LKF_QUECVT		0x00000010
141  #define DLM_LKF_IVVALBLK	0x00000020
142  #define DLM_LKF_CONVDEADLK	0x00000040
143  #define DLM_LKF_PERSISTENT	0x00000080
144  #define DLM_LKF_NODLCKWT	0x00000100
145  #define DLM_LKF_NODLCKBLK	0x00000200
146  #define DLM_LKF_EXPEDITE	0x00000400
147  #define DLM_LKF_NOQUEUEBAST	0x00000800
148  #define DLM_LKF_HEADQUE		0x00001000
149  #define DLM_LKF_NOORDER		0x00002000
150  #define DLM_LKF_ORPHAN		0x00004000
151  #define DLM_LKF_ALTPR		0x00008000
152  #define DLM_LKF_ALTCW		0x00010000
153  #define DLM_LKF_FORCEUNLOCK	0x00020000
154  #define DLM_LKF_TIMEOUT		0x00040000
155  
156  /*
157   * Some return codes that are not in errno.h
158   */
159  
160  #define DLM_ECANCEL		0x10001
161  #define DLM_EUNLOCK		0x10002
162  
163  #endif  /* __DLMCONSTANTS_DOT_H__ */
164