Whamcloud - gitweb
b=23035 split changelog time record into ctime,mtime,atime
[fs/lustre-release.git] / lustre / include / lustre / lustre_idl.h
index 54f0730..f56d210 100644 (file)
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
 #ifndef _LUSTRE_IDL_H_
 #define _LUSTRE_IDL_H_
 
-#include <libcfs/libcfs.h>
+#include <libcfs/libcfs.h> /* for LASSERT, LPUX64, etc */
 
 /* Defn's shared with user-space. */
 #include <lustre/lustre_user.h>
-#include <lustre/ll_fiemap.h>
 
 /*
  *  GENERAL STUFF
@@ -229,18 +228,6 @@ static inline int range_within(const struct lu_seq_range *range,
         return s >= range->lsr_start && s < range->lsr_end;
 }
 
-/**
- * allocate \a w units of sequence from range \a from.
- */
-static inline void range_alloc(struct lu_seq_range *to,
-                               struct lu_seq_range *from,
-                               __u64 width)
-{
-        to->lsr_start = from->lsr_start;
-        to->lsr_end = from->lsr_start + width;
-        from->lsr_start += width;
-}
-
 static inline int range_is_sane(const struct lu_seq_range *range)
 {
         return (range->lsr_end >= range->lsr_start);
@@ -484,7 +471,7 @@ static inline int fid_seq_is_idif(const __u64 seq)
 
 static inline int fid_is_idif(const struct lu_fid *fid)
 {
-        return fid_seq_is_igif(fid_seq(fid));
+        return fid_seq_is_idif(fid_seq(fid));
 }
 
 struct ost_id {
@@ -932,6 +919,7 @@ static inline void lustre_handle_copy(struct lustre_handle *tgt,
 
 /* flags for lm_flags */
 #define MSGHDR_AT_SUPPORT               0x1
+#define MSGHDR_CKSUM_INCOMPAT18         0x2
 
 #define lustre_msg lustre_msg_v2
 /* we depend on this structure to be 8-byte aligned */
@@ -1070,6 +1058,9 @@ extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb);
 #define OBD_CONNECT_LOV_V3        0x100000000ULL /*client supports LOV v3 EA */
 #define OBD_CONNECT_GRANT_SHRINK  0x200000000ULL /* support grant shrink */
 #define OBD_CONNECT_SKIP_ORPHAN   0x400000000ULL /* don't reuse orphan objids */
+#define OBD_CONNECT_MAX_EASIZE    0x800000000ULL /* preserved for large EA */
+#define OBD_CONNECT_FULL20       0x1000000000ULL /* it is 2.0 client */
+#define OBD_CONNECT_LAYOUTLOCK   0x2000000000ULL /* client supports layout lock */
 /* also update obd_connect_names[] for lprocfs_rd_connect_flags()
  * and lustre/utils/wirecheck.c */
 
@@ -1089,7 +1080,8 @@ extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb);
                                 OBD_CONNECT_MDS_CAPA | OBD_CONNECT_OSS_CAPA | \
                                 OBD_CONNECT_MDS_MDS | OBD_CONNECT_FID | \
                                 LRU_RESIZE_CONNECT_FLAG | OBD_CONNECT_VBR | \
-                                OBD_CONNECT_LOV_V3 | OBD_CONNECT_SOM)
+                                OBD_CONNECT_LOV_V3 | OBD_CONNECT_SOM | \
+                                OBD_CONNECT_FULL20)
 #define OST_CONNECT_SUPPORTED  (OBD_CONNECT_SRVLOCK | OBD_CONNECT_GRANT | \
                                 OBD_CONNECT_REQPORTAL | OBD_CONNECT_VERSION | \
                                 OBD_CONNECT_TRUNCLOCK | OBD_CONNECT_INDEX | \
@@ -1100,9 +1092,10 @@ extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb);
                                 OBD_CONNECT_OSS_CAPA  | OBD_CONNECT_RMT_CLIENT | \
                                 OBD_CONNECT_RMT_CLIENT_FORCE | OBD_CONNECT_VBR | \
                                 OBD_CONNECT_MDS | OBD_CONNECT_SKIP_ORPHAN | \
-                                OBD_CONNECT_GRANT_SHRINK)
+                                OBD_CONNECT_GRANT_SHRINK | OBD_CONNECT_FULL20)
 #define ECHO_CONNECT_SUPPORTED (0)
-#define MGS_CONNECT_SUPPORTED  (OBD_CONNECT_VERSION | OBD_CONNECT_AT)
+#define MGS_CONNECT_SUPPORTED  (OBD_CONNECT_VERSION | OBD_CONNECT_AT | \
+                                OBD_CONNECT_FULL20)
 
 #define OBD_OCD_VERSION(major,minor,patch,fix) (((major)<<24) + ((minor)<<16) +\
                                                 ((patch)<<8) + (fix))
@@ -1191,13 +1184,12 @@ enum obdo_flags {
         OBD_FL_CKSUM_RSVD2  = 0x00008000, /* for future cksum types */
         OBD_FL_CKSUM_RSVD3  = 0x00010000, /* for future cksum types */
         OBD_FL_SHRINK_GRANT = 0x00020000, /* object shrink the grant */
+        OBD_FL_MMAP         = 0x00040000, /* object is mmapped on the client */
 
         OBD_FL_CKSUM_ALL    = OBD_FL_CKSUM_CRC32 | OBD_FL_CKSUM_ADLER,
 
         /* mask for local-only flag, which won't be sent over network */
         OBD_FL_LOCAL_MASK   = 0xF0000000,
-        /* temporary OBDO used by osc_brw_async (see bug 18364) */
-        OBD_FL_TEMPORARY    = 0x10000000,
 };
 
 #define LOV_MAGIC_V1      0x0BD10BD0
@@ -1354,6 +1346,7 @@ extern void lustre_swab_obd_statfs (struct obd_statfs *os);
 #define OBD_BRW_NOCACHE         0x80 /* this page is a part of non-cached IO */
 #define OBD_BRW_NOQUOTA        0x100
 #define OBD_BRW_SRVLOCK        0x200 /* Client holds no lock over this page */
+#define OBD_BRW_ASYNC          0x400 /* Server may delay commit to disk */
 #define OBD_BRW_MEMALLOC       0x800 /* Client runs in the "kswapd" context */
 
 #define OBD_OBJECT_EOF 0xffffffffffffffffULL
@@ -1614,8 +1607,9 @@ struct mdt_body {
         __u32          aclsize;
         __u32          max_mdsize;
         __u32          max_cookiesize;
-        __u32          padding_4; /* also fix lustre_swab_mdt_body */
-        __u64          padding_5;
+        __u32          uid_h; /* high 32-bits of uid, for FUID */
+        __u32          gid_h; /* high 32-bits of gid, for FUID */
+        __u32          padding_5; /* also fix lustre_swab_mdt_body */
         __u64          padding_6;
         __u64          padding_7;
         __u64          padding_8;
@@ -1727,7 +1721,9 @@ struct mdt_remote_perm {
         __u32           rp_uid;
         __u32           rp_gid;
         __u32           rp_fsuid;
+        __u32           rp_fsuid_h;
         __u32           rp_fsgid;
+        __u32           rp_fsgid_h;
         __u32           rp_access_perm; /* MAY_READ/WRITE/EXEC */
 };
 
@@ -1853,6 +1849,7 @@ enum {
         MDS_CLOSE_CLEANUP = 1 << 6
 };
 
+/* instance of mdt_reint_rec */
 struct mdt_rec_create {
         __u32           cr_opcode;
         __u32           cr_cap;
@@ -1870,15 +1867,16 @@ struct mdt_rec_create {
         __u64           cr_time;
         __u64           cr_rdev;
         __u64           cr_ioepoch;
-        __u64           cr_padding_1; /* pad for 64 bits*/
+        __u64           cr_padding_1;   /* rr_blocks */
         __u32           cr_mode;
         __u32           cr_bias;
-        __u32           cr_flags;     /* for use with open */
-        __u32           cr_padding_2;
-        __u32           cr_padding_3;
-        __u32           cr_padding_4;
+        __u32           cr_flags;       /* for use with open */
+        __u32           cr_padding_2;   /* rr_padding_2 */
+        __u32           cr_padding_3;   /* rr_padding_3 */
+        __u32           cr_padding_4;   /* rr_padding_4 */
 };
 
+/* instance of mdt_reint_rec */
 struct mdt_rec_link {
         __u32           lk_opcode;
         __u32           lk_cap;
@@ -1893,18 +1891,19 @@ struct mdt_rec_link {
         struct lu_fid   lk_fid1;
         struct lu_fid   lk_fid2;
         __u64           lk_time;
-        __u64           lk_padding_1;
-        __u64           lk_padding_2;
-        __u64           lk_padding_3;
-        __u64           lk_padding_4;
+        __u64           lk_padding_1;   /* rr_atime */
+        __u64           lk_padding_2;   /* rr_ctime */
+        __u64           lk_padding_3;   /* rr_size */
+        __u64           lk_padding_4;   /* rr_blocks */
         __u32           lk_bias;
-        __u32           lk_padding_5;
-        __u32           lk_padding_6;
-        __u32           lk_padding_7;
-        __u32           lk_padding_8;
-        __u32           lk_padding_9;
+        __u32           lk_padding_5;   /* rr_mode */
+        __u32           lk_padding_6;   /* rr_flags */
+        __u32           lk_padding_7;   /* rr_padding_2 */
+        __u32           lk_padding_8;   /* rr_padding_3 */
+        __u32           lk_padding_9;   /* rr_padding_4 */
 };
 
+/* instance of mdt_reint_rec */
 struct mdt_rec_unlink {
         __u32           ul_opcode;
         __u32           ul_cap;
@@ -1919,18 +1918,19 @@ struct mdt_rec_unlink {
         struct lu_fid   ul_fid1;
         struct lu_fid   ul_fid2;
         __u64           ul_time;
-        __u64           ul_padding_2;
-        __u64           ul_padding_3;
-        __u64           ul_padding_4;
-        __u64           ul_padding_5;
+        __u64           ul_padding_2;   /* rr_atime */
+        __u64           ul_padding_3;   /* rr_ctime */
+        __u64           ul_padding_4;   /* rr_size */
+        __u64           ul_padding_5;   /* rr_blocks */
         __u32           ul_bias;
         __u32           ul_mode;
-        __u32           ul_padding_6;
-        __u32           ul_padding_7;
-        __u32           ul_padding_8;
-        __u32           ul_padding_9;
+        __u32           ul_padding_6;   /* rr_flags */
+        __u32           ul_padding_7;   /* rr_padding_2 */
+        __u32           ul_padding_8;   /* rr_padding_3 */
+        __u32           ul_padding_9;   /* rr_padding_4 */
 };
 
+/* instance of mdt_reint_rec */
 struct mdt_rec_rename {
         __u32           rn_opcode;
         __u32           rn_cap;
@@ -1945,18 +1945,19 @@ struct mdt_rec_rename {
         struct lu_fid   rn_fid1;
         struct lu_fid   rn_fid2;
         __u64           rn_time;
-        __u64           rn_padding_1;
-        __u64           rn_padding_2;
-        __u64           rn_padding_3;
-        __u64           rn_padding_4;
-        __u32           rn_bias;      /* some operation flags */
-        __u32           rn_mode;      /* cross-ref rename has mode */
-        __u32           rn_padding_5;
-        __u32           rn_padding_6;
-        __u32           rn_padding_7;
-        __u32           rn_padding_8;
-};
-
+        __u64           rn_padding_1;   /* rr_atime */
+        __u64           rn_padding_2;   /* rr_ctime */
+        __u64           rn_padding_3;   /* rr_size */
+        __u64           rn_padding_4;   /* rr_blocks */
+        __u32           rn_bias;        /* some operation flags */
+        __u32           rn_mode;        /* cross-ref rename has mode */
+        __u32           rn_padding_5;   /* rr_flags */
+        __u32           rn_padding_6;   /* rr_padding_2 */
+        __u32           rn_padding_7;   /* rr_padding_3 */
+        __u32           rn_padding_8;   /* rr_padding_4 */
+};
+
+/* instance of mdt_reint_rec */
 struct mdt_rec_setxattr {
         __u32           sx_opcode;
         __u32           sx_cap;
@@ -1969,22 +1970,30 @@ struct mdt_rec_setxattr {
         __u32           sx_suppgid2;
         __u32           sx_suppgid2_h;
         struct lu_fid   sx_fid;
-        __u64           sx_padding_1; /* These three members are lu_fid size */
+        __u64           sx_padding_1;   /* These three are rr_fid2 */
         __u32           sx_padding_2;
         __u32           sx_padding_3;
         __u64           sx_valid;
         __u64           sx_time;
-        __u64           sx_padding_5;
-        __u64           sx_padding_6;
-        __u64           sx_padding_7;
+        __u64           sx_padding_5;   /* rr_ctime */
+        __u64           sx_padding_6;   /* rr_size */
+        __u64           sx_padding_7;   /* rr_blocks */
         __u32           sx_size;
         __u32           sx_flags;
-        __u32           sx_padding_8;
-        __u32           sx_padding_9;
-        __u32           sx_padding_10;
-        __u32           sx_padding_11;
+        __u32           sx_padding_8;   /* rr_flags */
+        __u32           sx_padding_9;   /* rr_padding_2 */
+        __u32           sx_padding_10;  /* rr_padding_3 */
+        __u32           sx_padding_11;  /* rr_padding_4 */
 };
 
+/*
+ * mdt_rec_reint is the template for all mdt_reint_xxx structures.
+ * Do NOT change the size of various members, otherwise the value
+ * will be broken in lustre_swab_mdt_rec_reint().
+ *
+ * If you add new members in other mdt_reint_xxx structres and need to use the
+ * rr_padding_x fields, then update lustre_swab_mdt_rec_reint() also.
+ */
 struct mdt_rec_reint {
         __u32           rr_opcode;
         __u32           rr_cap;
@@ -2005,7 +2014,7 @@ struct mdt_rec_reint {
         __u64           rr_blocks;
         __u32           rr_bias;
         __u32           rr_mode;
-        __u32           rr_padding_1; /* also fix lustre_swab_mdt_rec_reint */
+        __u32           rr_flags;
         __u32           rr_padding_2; /* also fix lustre_swab_mdt_rec_reint */
         __u32           rr_padding_3; /* also fix lustre_swab_mdt_rec_reint */
         __u32           rr_padding_4; /* also fix lustre_swab_mdt_rec_reint */
@@ -2467,7 +2476,7 @@ struct llog_size_change_rec {
 /** bits covering all \a changelog_rec_type's */
 #define CHANGELOG_ALLMASK 0XFFFFFFFF
 /** default \a changelog_rec_type mask */
-#define CHANGELOG_DEFMASK CHANGELOG_ALLMASK
+#define CHANGELOG_DEFMASK CHANGELOG_ALLMASK & ~(1 << CL_ATIME)
 
 /* changelog llog name, needed by client replicators */
 #define CHANGELOG_CATALOG "changelog_catalog"
@@ -2601,7 +2610,8 @@ struct obdo {
         struct lustre_handle    o_handle;       /* brw: lock handle to prolong locks */
         struct llog_cookie      o_lcookie;      /* destroy: unlink cookie from MDS */
 
-        __u64                   o_padding_2;
+        __u32                   o_uid_h;
+        __u32                   o_gid_h;
         __u64                   o_padding_3;
         __u64                   o_padding_4;
         __u64                   o_padding_5;
@@ -2615,12 +2625,6 @@ struct obdo {
 #define o_dropped o_misc
 #define o_cksum   o_nlink
 
-static inline void obdo_unpack_ostid(struct obdo *oa, struct ost_id *ostid)
-{
-        ostid->oi_id = ostid_id(&oa->o_oi);
-        ostid->oi_seq = ostid_seq(&oa->o_oi);
-}
-
 static inline void lustre_set_wire_obdo(struct obdo *wobdo, struct obdo *lobdo)
 {
         memcpy(wobdo, lobdo, sizeof(*lobdo));
@@ -2861,8 +2865,6 @@ struct getinfo_fid2path {
 
 void lustre_swab_fid2path (struct getinfo_fid2path *gf);
 
-extern void lustre_swab_kuch(struct kuc_hdr *);
-
 
 #endif
 /** @} lustreidl */