#ifndef __LUSTRE_IDL_H__
#define __LUSTRE_IDL_H__
-#ifdef __KERNEL__
-#include <linux/ioctl.h>
-#include <asm/types.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 <linux/list.h>
+# undef __KERNEL__
+# include <stdint.h>
#endif
/*
* this file contains all data structures used in Lustre interfaces:
* - ioctl's
*/
+#define PTL_RPC_MSG_REQUEST 4711
+#define PTL_RPC_MSG_ERR 4712
+
+struct lustre_handle {
+ __u64 addr;
+ __u64 cookie;
+};
+
struct lustre_msg {
+ __u64 conn; /* pointer to ptlrpc_connection */
+ __u64 token; /* security token */
+
+ __u64 last_rcvd;
+ __u64 last_committed;
+ __u64 transno;
__u32 opc;
- __u32 xid;
__u32 status;
__u32 type;
- __u32 connid;
+ __u32 target_id;
__u32 bufcount;
__u32 buflens[0];
};
+#define N_LOCAL_TEMP_PAGE 0x00000001
+
/*
* OST requests: OBDO & OBD request records
*/
#define OST_PUNCH 9
#define OST_OPEN 10
#define OST_CLOSE 11
+#define OST_STATFS 12
typedef uint64_t obd_id;
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
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))
+#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 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;
+};
+
+struct niobuf_local {
+ __u64 offset;
+ __u32 len;
+ __u32 xid;
+ __u32 flags;
+ void *addr;
+ struct page *page;
+ void *target_private;
+ struct dentry *dentry;
+};
/* request structure for OST's */
struct obdo oa;
};
-struct obd_ioobj {
- obd_id ioo_id;
- obd_gr ioo_gr;
- __u32 ioo_type;
- __u32 ioo_bufcnt;
-};
-
/*
* 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 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 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;
-};
-
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_xid;
};
/* MDS update records */
__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 {
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)
-{
- ll_ino2fid(fid, inode->i_ino, inode->i_generation,
- inode->i_mode & S_IFMT);
-}
-
-#endif
/*
* LDLM requests:
*/
/* opcodes */
-#define LDLM_NAMESPACE_NEW 1
-#define LDLM_ENQUEUE 2
-#define LDLM_CONVERT 3
-#define LDLM_CANCEL 4
-#define LDLM_CALLBACK 5
+#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
LCK_NL
} ldlm_mode_t;
-struct ldlm_handle {
- __u64 addr;
- __u64 cookie;
-};
-
struct ldlm_extent {
__u64 start;
__u64 end;
};
+struct ldlm_intent {
+ __u64 opc;
+};
+
struct ldlm_resource_desc {
- __u32 lr_ns_id;
__u32 lr_type;
__u64 lr_name[RES_NAME_SIZE];
__u64 lr_version[RES_VERSION_SIZE];
};
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 {
- struct ldlm_handle lock_handle;
- struct ldlm_extent lock_extent;
+ __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;
};
/*
* OBD IOCTLS
*/
-
-
#define OBD_IOCTL_VERSION 0x00010001
struct obd_ioctl_data {
#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_DEC_FS_USE_COUNT _IO ('f', 32 )
+#define OBD_IOC_CREATE _IOR ('f', 101, long)
+#define OBD_IOC_SETUP _IOW ('f', 102, long)
+#define OBD_IOC_CLEANUP _IO ('f', 103 )
+#define OBD_IOC_DESTROY _IOW ('f', 104, long)
+#define OBD_IOC_PREALLOCATE _IOWR('f', 105, long)
+#define OBD_IOC_DEC_USE_COUNT _IO ('f', 106 )
+#define OBD_IOC_SETATTR _IOW ('f', 107, long)
+#define OBD_IOC_GETATTR _IOR ('f', 108, long)
+#define OBD_IOC_READ _IOWR('f', 109, long)
+#define OBD_IOC_WRITE _IOWR('f', 110, long)
+#define OBD_IOC_CONNECT _IOR ('f', 111, long)
+#define OBD_IOC_DISCONNECT _IOW ('f', 112, long)
+#define OBD_IOC_STATFS _IOWR('f', 113, long)
+#define OBD_IOC_SYNC _IOR ('f', 114, long)
+#define OBD_IOC_READ2 _IOWR('f', 115, long)
+#define OBD_IOC_FORMAT _IOWR('f', 116, long)
+#define OBD_IOC_PARTITION _IOWR('f', 117, long)
+#define OBD_IOC_ATTACH _IOWR('f', 118, long)
+#define OBD_IOC_DETACH _IOWR('f', 119, long)
+#define OBD_IOC_COPY _IOWR('f', 120, long)
+#define OBD_IOC_MIGR _IOWR('f', 121, long)
+#define OBD_IOC_PUNCH _IOWR('f', 122, long)
+#define OBD_IOC_DEVICE _IOWR('f', 123, long)
+#define OBD_IOC_MODULE_DEBUG _IOWR('f', 124, long)
+#define OBD_IOC_BRW_READ _IOWR('f', 125, long)
+#define OBD_IOC_BRW_WRITE _IOWR('f', 126, long)
+#define OBD_IOC_NAME2DEV _IOWR('f', 127, long)
+#define OBD_IOC_NEWDEV _IOWR('f', 128, long)
+
+#define OBD_IOC_RECOVD_NEWCONN _IOWR('f', 131, long)
+
+#define OBD_IOC_DEC_FS_USE_COUNT _IO ('f', 132 )
#endif