Home | History | Annotate | Download | only in linux
      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 */
     32 struct 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 *castparam;
     42 	void *castaddr;
     43 	void *bastparam;
     44 	void *bastaddr;
     45 	struct dlm_lksb *lksb;
     46 	char lvb[DLM_USER_LVB_LEN];
     47 	char name[0];
     48 };
     49 
     50 struct dlm_lspace_params {
     51 	__u32 flags;
     52 	__u32 minor;
     53 	char name[0];
     54 };
     55 
     56 struct dlm_purge_params {
     57 	__u32 nodeid;
     58 	__u32 pid;
     59 };
     60 
     61 struct 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 
     74 struct 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 
     81 struct dlm_lock_result {
     82 	__u32 version[3];
     83 	__u32 length;
     84 	void * user_astaddr;
     85 	void * user_astparam;
     86 	struct dlm_lksb * 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