linux-headers (unknown)

(root)/
include/
linux/
dlmconstants.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 __DLMCONSTANTS_DOT_H__
      16  #define __DLMCONSTANTS_DOT_H__
      17  
      18  /*
      19   * Constants used by DLM interface.
      20   */
      21  
      22  #define DLM_LOCKSPACE_LEN       64
      23  #define DLM_RESNAME_MAXLEN      64
      24  
      25  
      26  /*
      27   * Lock Modes
      28   */
      29  
      30  #define DLM_LOCK_IV		(-1)	/* invalid */
      31  #define DLM_LOCK_NL		0	/* null */
      32  #define DLM_LOCK_CR		1	/* concurrent read */
      33  #define DLM_LOCK_CW		2	/* concurrent write */
      34  #define DLM_LOCK_PR		3	/* protected read */
      35  #define DLM_LOCK_PW		4	/* protected write */
      36  #define DLM_LOCK_EX		5	/* exclusive */
      37  
      38  
      39  /*
      40   * Flags to dlm_lock
      41   *
      42   * DLM_LKF_NOQUEUE
      43   *
      44   * Do not queue the lock request on the wait queue if it cannot be granted
      45   * immediately.  If the lock cannot be granted because of this flag, DLM will
      46   * either return -EAGAIN from the dlm_lock call or will return 0 from
      47   * dlm_lock and -EAGAIN in the lock status block when the AST is executed.
      48   *
      49   * DLM_LKF_CANCEL
      50   *
      51   * Used to cancel a pending lock request or conversion.  A converting lock is
      52   * returned to its previously granted mode.
      53   *
      54   * DLM_LKF_CONVERT
      55   *
      56   * Indicates a lock conversion request.  For conversions the name and namelen
      57   * are ignored and the lock ID in the LKSB is used to identify the lock.
      58   *
      59   * DLM_LKF_VALBLK
      60   *
      61   * Requests DLM to return the current contents of the lock value block in the
      62   * lock status block.  When this flag is set in a lock conversion from PW or EX
      63   * modes, DLM assigns the value specified in the lock status block to the lock
      64   * value block of the lock resource.  The LVB is a DLM_LVB_LEN size array
      65   * containing application-specific information.
      66   *
      67   * DLM_LKF_QUECVT
      68   *
      69   * Force a conversion request to be queued, even if it is compatible with
      70   * the granted modes of other locks on the same resource.
      71   *
      72   * DLM_LKF_IVVALBLK
      73   *
      74   * Invalidate the lock value block.
      75   *
      76   * DLM_LKF_CONVDEADLK
      77   *
      78   * Allows the dlm to resolve conversion deadlocks internally by demoting the
      79   * granted mode of a converting lock to NL.  The DLM_SBF_DEMOTED flag is
      80   * returned for a conversion that's been effected by this.
      81   *
      82   * DLM_LKF_PERSISTENT
      83   *
      84   * Only relevant to locks originating in userspace.  A persistent lock will not
      85   * be removed if the process holding the lock exits.
      86   *
      87   * DLM_LKF_NODLCKWT
      88   *
      89   * Do not cancel the lock if it gets into conversion deadlock.
      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   * Acquire an orphan lock.
     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   * DLM_LKF_TIMEOUT
     135   *
     136   * This value is deprecated and reserved. DO NOT USE!
     137   *
     138   */
     139  
     140  #define DLM_LKF_NOQUEUE		0x00000001
     141  #define DLM_LKF_CANCEL		0x00000002
     142  #define DLM_LKF_CONVERT		0x00000004
     143  #define DLM_LKF_VALBLK		0x00000008
     144  #define DLM_LKF_QUECVT		0x00000010
     145  #define DLM_LKF_IVVALBLK	0x00000020
     146  #define DLM_LKF_CONVDEADLK	0x00000040
     147  #define DLM_LKF_PERSISTENT	0x00000080
     148  #define DLM_LKF_NODLCKWT	0x00000100
     149  #define DLM_LKF_NODLCKBLK	0x00000200
     150  #define DLM_LKF_EXPEDITE	0x00000400
     151  #define DLM_LKF_NOQUEUEBAST	0x00000800
     152  #define DLM_LKF_HEADQUE		0x00001000
     153  #define DLM_LKF_NOORDER		0x00002000
     154  #define DLM_LKF_ORPHAN		0x00004000
     155  #define DLM_LKF_ALTPR		0x00008000
     156  #define DLM_LKF_ALTCW		0x00010000
     157  #define DLM_LKF_FORCEUNLOCK	0x00020000
     158  #define DLM_LKF_TIMEOUT		0x00040000
     159  
     160  /*
     161   * Some return codes that are not in errno.h
     162   */
     163  
     164  #define DLM_ECANCEL		0x10001
     165  #define DLM_EUNLOCK		0x10002
     166  
     167  #endif  /* __DLMCONSTANTS_DOT_H__ */