X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flinux%2Flustre_idl.h;h=15a8c7746320d84839b9e02ff39dea0dd7c90311;hb=6ec7020ec578a881fc619e3ed1751c0d58d19c83;hp=dba18090e861fc1f7be96aad4dbd996ce5626185;hpb=8a6e1551ccd24d53d1002731620670351d8734c8;p=fs%2Flustre-release.git diff --git a/lustre/include/linux/lustre_idl.h b/lustre/include/linux/lustre_idl.h index dba1809..15a8c77 100644 --- a/lustre/include/linux/lustre_idl.h +++ b/lustre/include/linux/lustre_idl.h @@ -21,32 +21,118 @@ * (Un)packing of OST requests */ -#ifndef __LUSTRE_IDL_H__ -#define __LUSTRE_IDL_H__ +#ifndef _LUSTRE_IDL_H_ +#define _LUSTRE_IDL_H_ + #ifdef __KERNEL__ -#include -#include - -#include -#else -#define __KERNEL__ -#include -#undef __KERNEL__ -#include +# include +# include +# include +# include +#else +# define __KERNEL__ +# include +# undef __KERNEL__ +# include #endif -/* +/* * this file contains all data structures used in Lustre interfaces: * - obdo and obd_request records * - mds_request records + * - ldlm data * - ioctl's - */ + */ +/* + * GENERAL STUFF + */ +typedef __u8 uuid_t[37]; -/* +/* FOO_REQUEST_PORTAL is for incoming requests on the FOO + * FOO_REPLY_PORTAL is for incoming replies on the FOO + * FOO_BULK_PORTAL is for incoming bulk on the FOO + */ + +#define CONNMGR_REQUEST_PORTAL 1 +#define CONNMGR_REPLY_PORTAL 2 +#define OSC_REQUEST_PORTAL 3 +#define OSC_REPLY_PORTAL 4 +#define OSC_BULK_PORTAL 5 +#define OST_REQUEST_PORTAL 6 +#define OST_REPLY_PORTAL 7 +#define OST_BULK_PORTAL 8 +#define MDC_REQUEST_PORTAL 9 +#define MDC_REPLY_PORTAL 10 +#define MDC_BULK_PORTAL 11 +#define MDS_REQUEST_PORTAL 12 +#define MDS_REPLY_PORTAL 13 +#define MDS_BULK_PORTAL 14 +#define LDLM_REQUEST_PORTAL 15 +#define LDLM_REPLY_PORTAL 16 +#define LDLM_CLI_REQUEST_PORTAL 17 +#define LDLM_CLI_REPLY_PORTAL 18 + +#define SVC_KILLED 1 +#define SVC_EVENT 2 +#define SVC_SIGNAL 4 +#define SVC_RUNNING 8 +#define SVC_STOPPING 16 +#define SVC_STOPPED 32 + +#define RECOVD_STOPPING 1 /* how cleanup tells recovd to quit */ +#define RECOVD_IDLE 2 /* normal state */ +#define RECOVD_STOPPED 4 /* after recovd has stopped */ +#define RECOVD_FAIL 8 /* RPC timeout: wakeup recovd, sets flag */ +#define RECOVD_TIMEOUT 16 /* set when recovd detects a timeout */ +#define RECOVD_UPCALL_WAIT 32 /* an upcall has been placed */ +#define RECOVD_UPCALL_ANSWER 64 /* an upcall has been answered */ + +#define LUSTRE_CONN_NEW 1 +#define LUSTRE_CONN_CON 2 +#define LUSTRE_CONN_RECOVD 3 +#define LUSTRE_CONN_FULL 4 + +/* packet types */ +#define PTL_RPC_MSG_REQUEST 4711 +#define PTL_RPC_MSG_ERR 4712 +#define PTL_RPC_MSG_OK 0 + +#define PTL_RPC_TYPE_REQUEST 2 +#define PTL_RPC_TYPE_REPLY 3 + +#define PTLRPC_MSG_MAGIC (cpu_to_le32(0x0BD00BD0)) +#define PTLRPC_MSG_VERSION (cpu_to_le32(0x00040001)) + +struct lustre_handle { + __u64 addr; + __u64 cookie; +}; + +/* we depend on this structure to be 8-byte aligned */ +struct lustre_msg { + __u64 addr; + __u64 cookie; /* security token */ + __u32 magic; + __u32 version; + __u64 last_rcvd; + __u64 last_committed; + __u64 transno; + __u32 opc; + __u32 status; + __u32 type; + __u32 bufcount; + __u32 buflens[0]; +}; + +#define CONNMGR_REPLY 0 +#define CONNMGR_CONNECT 1 + +/* * OST requests: OBDO & OBD request records */ /* opcodes */ +#define OST_REPLY 0 /* reply ? */ #define OST_GETATTR 1 #define OST_SETATTR 2 #define OST_BRW 3 @@ -55,25 +141,11 @@ #define OST_GET_INFO 6 #define OST_CONNECT 7 #define OST_DISCONNECT 8 +#define OST_PUNCH 9 +#define OST_OPEN 10 +#define OST_CLOSE 11 +#define OST_STATFS 12 -/* packet types */ -#define OST_TYPE_REQ 1 -#define OST_TYPE_REP 2 -#define OST_TYPE_ERR 3 - -struct ptlreq_hdr { - __u32 opc; - __u64 seqno; - __u32 status; - __u32 type; -}; - -struct ptlrep_hdr { - __u32 opc; - __u64 seqno; - __u32 status; - __u32 type; -}; typedef uint64_t obd_id; typedef uint64_t obd_gr; @@ -89,8 +161,9 @@ typedef uint32_t obd_rdev; typedef uint32_t obd_flag; typedef uint32_t obd_count; -#define OBD_FL_INLINEDATA (0x00000001UL) -#define OBD_FL_OBDMDEXISTS (0x00000002UL) +#define OBD_FL_INLINEDATA (0x00000001) +#define OBD_FL_OBDMDEXISTS (0x00000002) +#define OBD_FL_CREATEONOPEN (0x00000004) #define OBD_INLINESZ 60 #define OBD_OBDMDSZ 60 @@ -108,443 +181,281 @@ struct obdo { obd_uid o_uid; obd_gid o_gid; obd_flag o_flags; - obd_flag o_obdflags; obd_count o_nlink; obd_count o_generation; + obd_rdev o_rdev; obd_flag o_valid; /* hot fields in this obdo */ + obd_flag o_obdflags; char o_inline[OBD_INLINESZ]; - char o_obdmd[OBD_OBDMDSZ]; - struct list_head o_list; - struct obd_ops *o_op; }; -#define OBD_MD_FLALL (~0UL) -#define OBD_MD_FLID (0x00000001UL) -#define OBD_MD_FLATIME (0x00000002UL) -#define OBD_MD_FLMTIME (0x00000004UL) -#define OBD_MD_FLCTIME (0x00000008UL) -#define OBD_MD_FLSIZE (0x00000010UL) -#define OBD_MD_FLBLOCKS (0x00000020UL) -#define OBD_MD_FLBLKSZ (0x00000040UL) -#define OBD_MD_FLMODE (0x00000080UL) -#define OBD_MD_FLTYPE (0x00000100UL) -#define OBD_MD_FLUID (0x00000200UL) -#define OBD_MD_FLGID (0x00000400UL) -#define OBD_MD_FLFLAGS (0x00000800UL) -#define OBD_MD_FLOBDFLG (0x00001000UL) -#define OBD_MD_FLNLINK (0x00002000UL) -#define OBD_MD_FLGENER (0x00004000UL) -#define OBD_MD_FLINLINE (0x00008000UL) -#define OBD_MD_FLOBDMD (0x00010000UL) -#define OBD_MD_FLOBJID (0x00020000UL) -#define OBD_MD_FLNOTOBD (~(OBD_MD_FLOBDMD | OBD_MD_FLOBDFLG | OBD_MD_FLBLOCKS)) - -/* request structure for OST's */ - -#define OST_REQ_HAS_OA1 0x1 - -struct ost_req { - __u32 connid; - __u32 cmd; - struct obdo oa; - __u32 buflen1; - __u32 buflen2; +#define OBD_MD_FLALL (0xffffffff) +#define OBD_MD_FLID (0x00000001) +#define OBD_MD_FLATIME (0x00000002) +#define OBD_MD_FLMTIME (0x00000004) +#define OBD_MD_FLCTIME (0x00000008) +#define OBD_MD_FLSIZE (0x00000010) +#define OBD_MD_FLBLOCKS (0x00000020) +#define OBD_MD_FLBLKSZ (0x00000040) +#define OBD_MD_FLMODE (0x00000080) +#define OBD_MD_FLTYPE (0x00000100) +#define OBD_MD_FLUID (0x00000200) +#define OBD_MD_FLGID (0x00000400) +#define OBD_MD_FLFLAGS (0x00000800) +#define OBD_MD_FLOBDFLG (0x00001000) +#define OBD_MD_FLNLINK (0x00002000) +#define OBD_MD_FLGENER (0x00004000) +#define OBD_MD_FLINLINE (0x00008000) +#define OBD_MD_FLOBDMD (0x00010000) +#define OBD_MD_FLOBJID (0x00020000) +#define OBD_MD_LINKNAME (0x00040000) +#define OBD_MD_FLNOTOBD (~(OBD_MD_FLOBDMD | OBD_MD_FLOBDFLG | OBD_MD_FLBLOCKS |\ + OBD_MD_LINKNAME)) + +struct obd_statfs { + __u64 os_type; + __u64 os_blocks; + __u64 os_bfree; + __u64 os_bavail; + __u64 os_files; + __u64 os_ffree; + __u64 os_fsid; + __u32 os_bsize; + __u32 os_namelen; + __u32 os_spare[12]; }; -struct ost_rep { - __u32 result; - __u32 connid; - struct obdo oa; - __u32 buflen1; - __u32 buflen2; -}; +/* ost_body.data values for OST_BRW */ -struct obd_ioobj { +#define OBD_BRW_READ 0x1 +#define OBD_BRW_WRITE 0x2 +#define OBD_BRW_RWMASK (OBD_BRW_READ | OBD_BRW_WRITE) +#define OBD_BRW_CREATE 0x4 + +struct obd_ioobj { obd_id ioo_id; obd_gr ioo_gr; __u32 ioo_type; __u32 ioo_bufcnt; }; +struct niobuf_remote { + __u64 offset; + __u32 len; + __u32 xid; + __u32 flags; +}; + +#define CONNMGR_REPLY 0 +#define CONNMGR_CONNECT 1 -/* - * MDS REQ RECORDS - */ +struct connmgr_body { + __u64 conn; + __u64 conn_token; + __u32 generation; + __u8 conn_uuid[37]; +}; +/* request structure for OST's */ -#define MDS_TYPE_REQ 1 -#define MDS_TYPE_REP 2 -#define MDS_TYPE_ERR 3 +#define OST_REQ_HAS_OA1 0x1 -#define MDS_GETATTR 1 -#define MDS_REINT 2 -#define MDS_READPAGE 3 +struct ost_body { + __u32 connid; + __u32 data; + struct obdo oa; +}; -#define REINT_SETATTR 0 -#define REINT_CREATE 1 -#define REINT_LINK 2 -#define REINT_UNLINK 3 -#define REINT_RENAME 4 -#define REINT_MAX 4 +/* + * MDS REQ RECORDS + */ -struct ll_fid { - __u64 id; - __u32 generation; - __u32 f_type; +/* opcodes */ +#define MDS_GETATTR 1 +#define MDS_OPEN 2 +#define MDS_CLOSE 3 +#define MDS_REINT 4 +#define MDS_READPAGE 6 +#define MDS_CONNECT 7 +#define MDS_DISCONNECT 8 +#define MDS_GETSTATUS 9 +#define MDS_STATFS 10 +#define MDS_LOVINFO 11 + +#define REINT_SETATTR 1 +#define REINT_CREATE 2 +#define REINT_LINK 3 +#define REINT_UNLINK 4 +#define REINT_RENAME 5 +#define REINT_RECREATE 6 +#define REINT_MAX 6 + +struct ll_fid { + __u64 id; + __u32 generation; + __u32 f_type; }; -struct niobuf { - __u64 addr; - __u64 offset; - __u32 len; - __u32 flags; - void *page; + +#define MDS_STATUS_CONN 1 +#define MDS_STATUS_LOV 2 + +struct mds_status_req { + __u32 flags; + __u32 repbuf; }; -struct mds_req { - struct ll_fid fid1; - struct ll_fid fid2; - __u32 namelen; - __u32 tgtlen; - __u32 opcode; - __u32 valid; - __u32 mode; - __u32 uid; - __u32 gid; - __u64 size; - __u32 mtime; - __u32 ctime; - __u32 atime; - __u32 flags; - __u32 major; - __u32 minor; - __u32 ino; - __u32 nlink; - __u32 generation; - __u64 objid; +struct mds_conn_status { + struct ll_fid rootfid; + __u64 xid; + __u64 last_committed; + __u64 last_rcvd; + /* XXX preallocated quota & obj fields here */ }; -struct mds_rep { - struct ll_fid fid1; - struct ll_fid fid2; - __u32 namelen; - __u32 tgtlen; - __u32 valid; - __u32 mode; - __u32 uid; - __u32 gid; - __u64 size; - __u32 mtime; - __u32 ctime; - __u32 atime; - __u32 flags; - __u32 major; - __u32 minor; - __u32 ino; - __u32 nlink; - __u32 generation; - __u64 objid; +struct mds_body { + struct ll_fid fid1; + struct ll_fid fid2; + __u64 size; + __u64 extra; + __u32 valid; + __u32 mode; + __u32 uid; + __u32 gid; + __u32 mtime; + __u32 ctime; + __u32 atime; + __u32 flags; + __u32 major; + __u32 minor; + __u32 ino; + __u32 nlink; + __u32 generation; + __u32 last_xid; }; -/* MDS update records */ -struct mds_update_record_hdr { - __u32 ur_reclen; +/* MDS update records */ +struct mds_update_record_hdr { __u32 ur_opcode; }; -struct mds_rec_setattr { - __u32 sa_reclen; +struct mds_rec_setattr { __u32 sa_opcode; - struct ll_fid sa_fid; - __u32 sa_valid; - __u32 sa_mode; - __u32 sa_uid; - __u32 sa_gid; - __u64 sa_size; - __u64 sa_atime; - __u64 sa_mtime; - __u64 sa_ctime; - __u32 sa_attr_flags; + struct ll_fid sa_fid; + __u32 sa_valid; + __u32 sa_mode; + __u32 sa_uid; + __u32 sa_gid; + __u64 sa_size; + __u64 sa_atime; + __u64 sa_mtime; + __u64 sa_ctime; + __u32 sa_attr_flags; }; -struct mds_rec_create { - __u32 cr_reclen; +struct mds_rec_create { __u32 cr_opcode; - struct ll_fid cr_fid; + struct ll_fid cr_fid; __u32 cr_uid; __u32 cr_gid; __u64 cr_time; - __u32 cr_mode; - /* overloaded: id for create, tgtlen for symlink, rdev for mknod */ - __u64 cr_id; - __u32 cr_namelen; - __u32 cr_tgtlen; - /* name here */ - /* symlink target here */ + __u32 cr_mode; + __u64 cr_rdev; }; -struct mds_rec_link { - __u32 lk_reclen; +struct mds_rec_link { __u32 lk_opcode; - struct ll_fid lk_fid1; - struct ll_fid lk_fid2; - __u32 lk_namelen; + struct ll_fid lk_fid1; + struct ll_fid lk_fid2; }; -struct mds_rec_unlink { - __u32 ul_reclen; +struct mds_rec_unlink { __u32 ul_opcode; - struct ll_fid ul_fid1; - __u32 ul_namelen; + struct ll_fid ul_fid1; + struct ll_fid ul_fid2; }; -struct mds_rec_rename { - __u32 rn_reclen; +struct mds_rec_rename { __u32 rn_opcode; - struct ll_fid rn_fid1; - struct ll_fid rn_fid2; - __u32 rn_namelen; - __u32 rn_tgtlen; + struct ll_fid rn_fid1; + struct ll_fid rn_fid2; }; -#ifdef __KERNEL__ - -static inline void ll_ino2fid(struct ll_fid *fid, ino_t ino, __u32 generation, int type) -{ - fid->id = HTON__u64((__u64)ino); - fid->generation = HTON__u32(generation); - fid->f_type = HTON__u32(type); -} - -static inline void ll_inode2fid(struct ll_fid *fid, struct inode *inode) -{ - fid->id = HTON__u64((__u64)inode->i_ino); - fid->generation = HTON__u32(inode->i_generation); - fid->f_type = HTON__u32(inode->i_mode & S_IFMT); -} - -#endif /* - * OBD IOCTLS + * LOV data structures */ +#define LOV_RAID0 0 +struct lov_desc { + __u32 ld_tgt_count; /* how many OBD's */ + __u32 ld_default_stripecount; + __u32 ld_default_stripesize; /* in bytes */ + __u32 ld_pattern; /* RAID 0,1 etc */ + uuid_t ld_uuid; +}; + +/* + * LDLM requests: + */ -#define OBD_IOCTL_VERSION 0x00010001 - -struct obd_ioctl_data { - uint32_t ioc_len; - uint32_t ioc_version; - uint32_t ioc_conn1; - uint32_t ioc_conn2; - struct obdo ioc_obdo1; - struct obdo ioc_obdo2; - obd_size ioc_count; - obd_off ioc_offset; - uint32_t ioc_dev; - - /* buffers the kernel will treat as user pointers */ - uint32_t ioc_plen1; - char *ioc_pbuf1; - uint32_t ioc_plen2; - char *ioc_pbuf2; - - /* two inline buffers */ - uint32_t ioc_inllen1; - char *ioc_inlbuf1; - uint32_t ioc_inllen2; - char *ioc_inlbuf2; - - char ioc_bulk[0]; +/* opcodes */ +#define LDLM_REPLY 0 +#define LDLM_ENQUEUE 1 +#define LDLM_CONVERT 2 +#define LDLM_CANCEL 3 +#define LDLM_CALLBACK 4 + +#define RES_NAME_SIZE 3 +#define RES_VERSION_SIZE 4 + +/* lock types */ +typedef enum { + LCK_EX = 1, + LCK_PW, + LCK_PR, + LCK_CW, + LCK_CR, + LCK_NL +} ldlm_mode_t; + +struct ldlm_extent { + __u64 start; + __u64 end; }; -struct obd_ioctl_hdr { - uint32_t ioc_len; - uint32_t ioc_version; +struct ldlm_intent { + __u64 opc; }; -static inline int obd_ioctl_packlen(struct obd_ioctl_data *data) -{ - int len = sizeof(struct obd_ioctl_data); - len += size_round(data->ioc_inllen1); - len += size_round(data->ioc_inllen2); - return len; -} - -static inline int obd_ioctl_is_invalid(struct obd_ioctl_data *data) -{ - if (data->ioc_len > (1<<30)) { - printk("OBD ioctl: ioc_len larger than 1<<30\n"); - return 1; - } - if (data->ioc_inllen1 > (1<<30)) { - printk("OBD ioctl: ioc_inllen1 larger than 1<<30\n"); - return 1; - } - if (data->ioc_inllen2 > (1<<30)) { - printk("OBD ioctl: ioc_inllen2 larger than 1<<30\n"); - return 1; - } - if (data->ioc_inlbuf1 && !data->ioc_inllen1) { - printk("OBD ioctl: inlbuf1 pointer but 0 length\n"); - return 1; - } - if (data->ioc_inlbuf2 && !data->ioc_inllen2) { - printk("OBD ioctl: inlbuf2 pointer but 0 length\n"); - return 1; - } - if (data->ioc_pbuf1 && !data->ioc_plen1) { - printk("OBD ioctl: pbuf1 pointer but 0 length\n"); - return 1; - } - if (data->ioc_pbuf2 && !data->ioc_plen2) { - printk("OBD ioctl: pbuf2 pointer but 0 length\n"); - return 1; - } - if (obd_ioctl_packlen(data) != data->ioc_len ) { - printk("OBD ioctl: packlen exceeds ioc_len\n"); - return 1; - } - if (data->ioc_inllen1 && - data->ioc_bulk[data->ioc_inllen1 - 1] != '\0') { - printk("OBD ioctl: inlbuf1 not 0 terminated\n"); - return 1; - } - if (data->ioc_inllen2 && - data->ioc_bulk[size_round(data->ioc_inllen1) + data->ioc_inllen2 - 1] != '\0') { - printk("OBD ioctl: inlbuf2 not 0 terminated\n"); - return 1; - } - return 0; -} - -#ifndef __KERNEL__ -static inline int obd_ioctl_pack(struct obd_ioctl_data *data, char **pbuf, int max) -{ - char *ptr; - struct obd_ioctl_data *overlay; - data->ioc_len = obd_ioctl_packlen(data); - data->ioc_version = OBD_IOCTL_VERSION; - - if (*pbuf && obd_ioctl_packlen(data) > max) - return 1; - if (*pbuf == NULL) { - *pbuf = malloc(data->ioc_len); - } - if (!*pbuf) - return 1; - overlay = (struct obd_ioctl_data *)*pbuf; - memcpy(*pbuf, data, sizeof(*data)); - - ptr = overlay->ioc_bulk; - if (data->ioc_inlbuf1) - LOGL(data->ioc_inlbuf1, data->ioc_inllen1, ptr); - if (data->ioc_inlbuf2) - LOGL(data->ioc_inlbuf2, data->ioc_inllen2, ptr); - if (obd_ioctl_is_invalid(overlay)) - return 1; - - return 0; -} -#else - - -/* buffer MUST be at least the size of obd_ioctl_hdr */ -static inline int obd_ioctl_getdata(char *buf, char *end, void *arg) -{ - struct obd_ioctl_hdr *hdr; - struct obd_ioctl_data *data; - int err; - ENTRY; - - hdr = (struct obd_ioctl_hdr *)buf; - data = (struct obd_ioctl_data *)buf; - - err = copy_from_user(buf, (void *)arg, sizeof(*hdr)); - if ( err ) { - EXIT; - return err; - } - - if (hdr->ioc_version != OBD_IOCTL_VERSION) { - printk("OBD: version mismatch kernel vs application\n"); - return -EINVAL; - } - - if (hdr->ioc_len + buf >= end) { - printk("OBD: user buffer exceeds kernel buffer\n"); - return -EINVAL; - } - - - if (hdr->ioc_len < sizeof(struct obd_ioctl_data)) { - printk("OBD: user buffer too small for ioctl\n"); - return -EINVAL; - } - - err = copy_from_user(buf, (void *)arg, hdr->ioc_len); - if ( err ) { - EXIT; - return err; - } - - if (obd_ioctl_is_invalid(data)) { - printk("OBD: ioctl not correctly formatted\n"); - return -EINVAL; - } - - if (data->ioc_inllen1) { - data->ioc_inlbuf1 = &data->ioc_bulk[0]; - } - - if (data->ioc_inllen2) { - data->ioc_inlbuf2 = &data->ioc_bulk[0] + size_round(data->ioc_inllen1); - } - - EXIT; - return 0; -} -#endif - +struct ldlm_resource_desc { + __u32 lr_type; + __u64 lr_name[RES_NAME_SIZE]; + __u64 lr_version[RES_VERSION_SIZE]; +}; -#define OBD_IOC_CREATE _IOR ('f', 3, long) -#define OBD_IOC_SETUP _IOW ('f', 4, long) -#define OBD_IOC_CLEANUP _IO ('f', 5 ) -#define OBD_IOC_DESTROY _IOW ('f', 6, long) -#define OBD_IOC_PREALLOCATE _IOWR('f', 7, long) -#define OBD_IOC_DEC_USE_COUNT _IO ('f', 8 ) -#define OBD_IOC_SETATTR _IOW ('f', 9, long) -#define OBD_IOC_GETATTR _IOR ('f', 10, long) -#define OBD_IOC_READ _IOWR('f', 11, long) -#define OBD_IOC_WRITE _IOWR('f', 12, long) -#define OBD_IOC_CONNECT _IOR ('f', 13, long) -#define OBD_IOC_DISCONNECT _IOW ('f', 14, long) -#define OBD_IOC_STATFS _IOWR('f', 15, long) -#define OBD_IOC_SYNC _IOR ('f', 16, long) -#define OBD_IOC_READ2 _IOWR('f', 17, long) -#define OBD_IOC_FORMAT _IOWR('f', 18, long) -#define OBD_IOC_PARTITION _IOWR('f', 19, long) -#define OBD_IOC_ATTACH _IOWR('f', 20, long) -#define OBD_IOC_DETACH _IOWR('f', 21, long) -#define OBD_IOC_COPY _IOWR('f', 22, long) -#define OBD_IOC_MIGR _IOWR('f', 23, long) -#define OBD_IOC_PUNCH _IOWR('f', 24, long) -#define OBD_IOC_DEVICE _IOWR('f', 25, long) -#define OBD_IOC_MODULE_DEBUG _IOWR('f', 26, long) - -#define OBD_IOC_DEC_FS_USE_COUNT _IO ('f', 32 ) - - -/* GENERAL THINGS */ -union ptl_rep { - struct mds_rep *mds; - struct ost_rep *ost; +struct ldlm_lock_desc { + struct ldlm_resource_desc l_resource; + ldlm_mode_t l_req_mode; + ldlm_mode_t l_granted_mode; + struct ldlm_extent l_extent; + __u32 l_version[RES_VERSION_SIZE]; }; -union ptl_req { - struct mds_req *mds; - struct ost_req *ost; +struct ldlm_request { + __u32 lock_flags; + struct ldlm_lock_desc lock_desc; + struct lustre_handle lock_handle1; + struct lustre_handle lock_handle2; }; +struct ldlm_reply { + __u32 lock_flags; + __u64 lock_resource_name[3]; + struct lustre_handle lock_handle; + struct ldlm_extent lock_extent; /* XXX make this policy 1 &2 */ + __u64 lock_policy_res1; + __u64 lock_policy_res2; +}; #endif