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