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