110 lines · c
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 conditions10** of the GNU General Public License v.2.11**12*******************************************************************************13******************************************************************************/14 15#ifndef _LINUX_DLM_DEVICE_H16#define _LINUX_DLM_DEVICE_H17 18/* This is the device interface for dlm, most users will use a library19 * interface.20 */21 22#include <linux/dlm.h>23#include <linux/types.h>24 25#define DLM_USER_LVB_LEN 3226 27/* Version of the device interface */28#define DLM_DEVICE_VERSION_MAJOR 629#define DLM_DEVICE_VERSION_MINOR 030#define DLM_DEVICE_VERSION_PATCH 231 32/* struct passed to the lock write */33struct 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[];49};50 51struct dlm_lspace_params {52 __u32 flags;53 __u32 minor;54 char name[];55};56 57struct dlm_purge_params {58 __u32 nodeid;59 __u32 pid;60};61 62struct 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 75struct 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 82struct 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 197#define DLM_USER_UNLOCK 298#define DLM_USER_QUERY 399#define DLM_USER_CREATE_LOCKSPACE 4100#define DLM_USER_REMOVE_LOCKSPACE 5101#define DLM_USER_PURGE 6102#define DLM_USER_DEADLOCK 7103 104/* Lockspace flags */105#define DLM_USER_LSFLG_AUTOFREE 1106#define DLM_USER_LSFLG_FORCEFREE 2107 108#endif109 110