linux-headers (unknown)

(root)/
include/
linux/
dlm_device.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 _LINUX_DLM_DEVICE_H
      16  #define _LINUX_DLM_DEVICE_H
      17  
      18  /* This is the device interface for dlm, most users will use a library
      19   * interface.
      20   */
      21  
      22  #include <linux/dlm.h>
      23  #include <linux/types.h>
      24  
      25  #define DLM_USER_LVB_LEN	32
      26  
      27  /* Version of the device interface */
      28  #define DLM_DEVICE_VERSION_MAJOR 6
      29  #define DLM_DEVICE_VERSION_MINOR 0
      30  #define DLM_DEVICE_VERSION_PATCH 2
      31  
      32  /* struct passed to the lock write */
      33  struct dlm_lock_params {
      34  	__u8 mode;
      35  	__u8 namelen;
      36  	__u16 unused;
      37  	__u32 flags;
      38  	__u32 lkid;
      39  	__u32 parent;
      40  	__u64 xid;
      41  	__u64 timeout;
      42  	void *castparam;
      43  	void *castaddr;
      44  	void *bastparam;
      45  	void *bastaddr;
      46  	struct dlm_lksb *lksb;
      47  	char lvb[DLM_USER_LVB_LEN];
      48  	char name[];
      49  };
      50  
      51  struct dlm_lspace_params {
      52  	__u32 flags;
      53  	__u32 minor;
      54  	char name[];
      55  };
      56  
      57  struct dlm_purge_params {
      58  	__u32 nodeid;
      59  	__u32 pid;
      60  };
      61  
      62  struct dlm_write_request {
      63  	__u32 version[3];
      64  	__u8 cmd;
      65  	__u8 is64bit;
      66  	__u8 unused[2];
      67  
      68  	union  {
      69  		struct dlm_lock_params   lock;
      70  		struct dlm_lspace_params lspace;
      71  		struct dlm_purge_params  purge;
      72  	} i;
      73  };
      74  
      75  struct dlm_device_version {
      76  	__u32 version[3];
      77  };
      78  
      79  /* struct read from the "device" fd,
      80     consists mainly of userspace pointers for the library to use */
      81  
      82  struct dlm_lock_result {
      83  	__u32 version[3];
      84  	__u32 length;
      85  	void * user_astaddr;
      86  	void * user_astparam;
      87  	struct dlm_lksb * user_lksb;
      88  	struct dlm_lksb lksb;
      89  	__u8 bast_mode;
      90  	__u8 unused[3];
      91  	/* Offsets may be zero if no data is present */
      92  	__u32 lvb_offset;
      93  };
      94  
      95  /* Commands passed to the device */
      96  #define DLM_USER_LOCK         1
      97  #define DLM_USER_UNLOCK       2
      98  #define DLM_USER_QUERY        3
      99  #define DLM_USER_CREATE_LOCKSPACE  4
     100  #define DLM_USER_REMOVE_LOCKSPACE  5
     101  #define DLM_USER_PURGE        6
     102  #define DLM_USER_DEADLOCK     7
     103  
     104  /* Lockspace flags */
     105  #define DLM_USER_LSFLG_AUTOFREE   1
     106  #define DLM_USER_LSFLG_FORCEFREE  2
     107  
     108  #endif
     109