Home | History | Annotate | Download | only in linux
      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 __user *castparam;
     43 	void __user *castaddr;
     44 	void __user *bastparam;
     45 	void __user *bastaddr;
     46 	struct dlm_lksb __user *lksb;
     47 	char lvb[DLM_USER_LVB_LEN];
     48 	char name[0];
     49 };
     50 
     51 struct dlm_lspace_params {
     52 	__u32 flags;
     53 	__u32 minor;
     54 	char name[0];
     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 * user_astaddr;
     86 	void __user * user_astparam;
     87 	struct dlm_lksb __user * 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 
    110