linux/include/uapi/linux/dlm_device.h
<<
>>
Prefs
   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 */
  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         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