* (Un)packing of OST requests
*/
-#ifndef __LUSTRE_IDL_H__
-#define __LUSTRE_IDL_H__
-#ifdef __KERNEL__
-#include <linux/ioctl.h>
-#include <asm/types.h>
+#ifndef _LUSTRE_IDL_H_
+#define _LUSTRE_IDL_H_
-#include <linux/types.h>
+#ifdef __KERNEL__
+# include <linux/ioctl.h>
+# include <asm/types.h>
+# include <linux/types.h>
+# include <linux/list.h>
#else
-#define __KERNEL__
-#include <linux/list.h>
-#undef __KERNEL__
-#include <stdint.h>
+# define __KERNEL__
+# include <asm/types.h>
+# include <linux/list.h>
+# undef __KERNEL__
+# include <stdint.h>
#endif
/*
* this file contains all data structures used in Lustre interfaces:
* - 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
-struct lustre_msg {
- __u64 conn;
- __u64 token;
+#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 type;
+ __u32 version;
__u32 opc;
- __u32 xid;
+ __u64 last_xid;
+ __u64 last_committed;
+ __u64 transno;
__u32 status;
- __u32 type;
- __u32 connid;
- __u32 bufcount;
- __u32 buflens[0];
+ __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
-#define OST_CREATE 4
-#define OST_DESTROY 5
-#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_READ 3
+#define OST_WRITE 4
+#define OST_CREATE 5
+#define OST_DESTROY 6
+#define OST_GET_INFO 7
+#define OST_CONNECT 8
+#define OST_DISCONNECT 9
+#define OST_PUNCH 10
+#define OST_OPEN 11
+#define OST_CLOSE 12
+#define OST_STATFS 13
typedef uint64_t obd_id;
typedef uint32_t obd_mode;
typedef uint32_t obd_uid;
typedef uint32_t obd_gid;
-typedef uint32_t obd_rdev;
+typedef uint64_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_INLINESZ 60
-#define OBD_OBDMDSZ 60
+
/* Note: 64-bit types are 64-bit aligned in structure */
struct obdo {
obd_id o_id;
obd_time o_ctime;
obd_size o_size;
obd_blocks o_blocks;
+ obd_rdev o_rdev;
obd_blksize o_blksize;
obd_mode o_mode;
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_flag o_valid; /* hot fields in this obdo */
+ obd_flag o_obdflags;
+ __u32 o_easize;
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 */
+struct lov_object_id { /* per-child structure */
+ __u64 l_object_id;
+};
-#define OST_REQ_HAS_OA1 0x1
+#define LOV_MAGIC 0x0BD00BD0
+
+struct lov_stripe_md {
+ __u32 lmd_magic;
+ __u32 lmd_easize; /* packed size of extended */
+ __u64 lmd_object_id; /* lov object id */
+ __u64 lmd_stripe_offset; /* offset of the stripe */
+ __u64 lmd_stripe_size; /* size of the stripe */
+ __u32 lmd_stripe_count; /* how many objects are being striped */
+ __u32 lmd_stripe_pattern; /* per-lov object stripe pattern */
+ struct lov_object_id lmd_objects[0];
+};
-struct ost_body {
- __u32 connid;
- __u32 data;
- struct obdo oa;
+#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_FLRDEV (0x00010000)
+#define OBD_MD_FLEASIZE (0x00020000)
+#define OBD_MD_LINKNAME (0x00040000)
+#define OBD_MD_FLNOTOBD (~(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;
+ __u8 os_fsid[40];
+ __u32 os_bsize;
+ __u32 os_namelen;
+ __u32 os_spare[12];
};
+/* ost_body.data values for OST_BRW */
+
+#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_bufcnt;
};
+struct niobuf_remote {
+ __u64 offset;
+ __u32 len;
+ __u32 xid;
+ __u32 flags;
+};
+
+#define CONNMGR_REPLY 0
+#define CONNMGR_CONNECT 1
+
+struct connmgr_body {
+ __u64 conn;
+ __u64 conn_token;
+ __u32 generation;
+ __u8 conn_uuid[37];
+};
+
+/* request structure for OST's */
+
+#define OST_REQ_HAS_OA1 0x1
+
+struct ost_body {
+ struct obdo oa;
+};
+
/*
* MDS REQ RECORDS
*/
/* opcodes */
-#define MDS_GETATTR 1
-#define MDS_OPEN 2
-#define MDS_CLOSE 3
-#define MDS_REINT 4
-#define MDS_READPAGE 5
-#define MDS_CONNECT 6
-
-#define REINT_SETATTR 1
-#define REINT_CREATE 2
-#define REINT_LINK 3
-#define REINT_UNLINK 4
-#define REINT_RENAME 5
-#define REINT_MAX 5
+#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_GETLOVINFO 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 f_type;
};
-struct niobuf {
- __u64 addr;
- __u64 offset;
- __u32 len;
- __u32 flags;
- __u32 xid;
- void *page;
+
+#define MDS_STATUS_CONN 1
+#define MDS_STATUS_LOV 2
+
+struct mds_status_req {
+ __u32 flags;
+ __u32 repbuf;
+};
+
+struct mds_fileh_body {
+ struct ll_fid f_fid;
+ struct lustre_handle f_handle;
+};
+
+struct mds_conn_status {
+ struct ll_fid rootfid;
+ __u64 xid;
+ __u64 last_committed;
+ __u64 last_rcvd;
+ /* XXX preallocated quota & obj fields here */
};
struct mds_body {
struct ll_fid fid1;
struct ll_fid fid2;
- __u64 objid;
__u64 size;
+ __u64 extra;
__u32 valid;
__u32 mode;
__u32 uid;
__u32 ino;
__u32 nlink;
__u32 generation;
+ __u32 last_xidnomore;
};
/* MDS update records */
-struct mds_update_record_hdr {
- __u32 ur_opcode;
-};
+
+
+//struct mds_update_record_hdr {
+// __u32 ur_opcode;
+//};
struct mds_rec_setattr {
__u32 sa_opcode;
- struct ll_fid sa_fid;
__u32 sa_valid;
+ struct ll_fid sa_fid;
__u32 sa_mode;
__u32 sa_uid;
__u32 sa_gid;
+ __u32 sa_attr_flags;
__u64 sa_size;
__u64 sa_atime;
__u64 sa_mtime;
__u64 sa_ctime;
- __u32 sa_attr_flags;
};
struct mds_rec_create {
__u32 cr_opcode;
+ __u32 cr_mode;
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;
+ __u64 cr_rdev;
};
struct mds_rec_link {
__u32 lk_opcode;
+ __u32 lk_reserved;
struct ll_fid lk_fid1;
struct ll_fid lk_fid2;
};
struct mds_rec_unlink {
__u32 ul_opcode;
+ __u32 ul_mode;
struct ll_fid ul_fid1;
struct ll_fid ul_fid2;
};
struct mds_rec_rename {
__u32 rn_opcode;
+ __u32 rn_reserved;
struct ll_fid rn_fid1;
struct ll_fid rn_fid2;
};
+/*
+ * LOV data structures
+ */
+
+#define LOV_RAID0 0
+#define LOV_RAIDRR 1
+
+struct lov_desc {
+ __u32 ld_tgt_count; /* how many OBD's */
+ __u32 ld_default_stripe_count; /* how many objects are used */
+ __u64 ld_default_stripe_size; /* in bytes */
+ __u64 ld_default_stripe_offset; /* in bytes */
+ __u32 ld_pattern; /* RAID 0,1 etc */
+ uuid_t ld_uuid;
+};
+
/*
* LDLM requests:
*/
-
-/* opcodes */
-#define LDLM_NAMESPACE_NEW 1
-#define LDLM_ENQUEUE 2
-#define LDLM_CONVERT 3
-#define LDLM_CANCEL 4
-#define LDLM_CALLBACK 5
+/* opcodes -- MUST be distinct from OST/MDS opcodes */
+#define LDLM_ENQUEUE 101
+#define LDLM_CONVERT 102
+#define LDLM_CANCEL 103
+#define LDLM_BL_CALLBACK 104
+#define LDLM_CP_CALLBACK 105
#define RES_NAME_SIZE 3
#define RES_VERSION_SIZE 4
LCK_NL
} ldlm_mode_t;
-struct ldlm_handle {
- __u64 addr;
- __u64 cookie;
-};
-
struct ldlm_extent {
__u64 start;
__u64 end;
};
+struct ldlm_intent {
+ __u64 opc;
+};
+
+/* Note this unaligned structure; as long as it's only used in ldlm_request
+ * below, we're probably fine. */
struct ldlm_resource_desc {
- __u32 lr_ns_id;
__u32 lr_type;
__u64 lr_name[RES_NAME_SIZE];
- __u64 lr_version[RES_VERSION_SIZE];
+ __u32 lr_version[RES_VERSION_SIZE];
};
struct ldlm_lock_desc {
};
struct ldlm_request {
- __u32 flags;
+ __u32 lock_flags;
struct ldlm_lock_desc lock_desc;
- struct ldlm_handle lock_handle1;
- struct ldlm_handle lock_handle2;
+ struct lustre_handle lock_handle1;
+ struct lustre_handle lock_handle2;
};
struct ldlm_reply {
- __u32 flags;
- struct ldlm_handle lock_handle;
- struct ldlm_extent lock_extent;
+ __u32 lock_flags;
+ __u32 lock_mode;
+ __u64 lock_resource_name[RES_NAME_SIZE];
+ struct lustre_handle lock_handle;
+ struct ldlm_extent lock_extent; /* XXX make this policy 1 &2 */
+ __u64 lock_policy_res1;
+ __u64 lock_policy_res2;
};
-
-/*
- * OBD IOCTLS
- */
-
-
-#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];
-};
-
-struct obd_ioctl_hdr {
- uint32_t ioc_len;
- uint32_t ioc_version;
-};
-
-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 (data->ioc_inllen1 && !data->ioc_inlbuf1) {
- printk("OBD ioctl: inllen1 set but NULL pointer\n");
- return 1;
- }
- if (data->ioc_inllen2 && !data->ioc_inlbuf2) {
- printk("OBD ioctl: inllen2 set but NULL pointer\n");
- return 1;
- }
- if (data->ioc_plen1 && !data->ioc_pbuf1) {
- printk("OBD ioctl: plen1 set but NULL pointer\n");
- return 1;
- }
- if (data->ioc_plen2 && !data->ioc_pbuf2) {
- printk("OBD ioctl: plen2 set but NULL pointer\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
-
-
-#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_BRW_READ _IOWR('f', 27, long)
-#define OBD_IOC_BRW_WRITE _IOWR('f', 28, long)
-#define OBD_IOC_NAME2DEV _IOWR('f', 29, long)
-#define OBD_IOC_NEWDEV _IOWR('f', 30, long)
-
-#define OBD_IOC_DEC_FS_USE_COUNT _IO ('f', 32 )
-
#endif