Whamcloud - gitweb
b=19486 add server identifier into lu_seq_range.
[fs/lustre-release.git] / lustre / include / lustre / lustre_idl.h
index 6a2fd95..a60e444 100644 (file)
@@ -91,6 +91,8 @@
 #ifndef _LUSTRE_IDL_H_
 #define _LUSTRE_IDL_H_
 
+#include <libcfs/libcfs.h> /* for LASSERT, LPUX64, etc */
+
 /* Defn's shared with user-space. */
 #include <lustre/lustre_user.h>
 
@@ -172,7 +174,7 @@ typedef __u32 mdsno_t;
 typedef __u64 seqno_t;
 typedef __u64 obd_id;
 typedef __u64 obd_seq;
-typedef __u64 obd_time;
+typedef __s64 obd_time;
 typedef __u64 obd_size;
 typedef __u64 obd_off;
 typedef __u64 obd_blocks;
@@ -187,15 +189,18 @@ typedef __u32 obd_count;
 /**
  * Describes a range of sequence, lsr_start is included but lsr_end is
  * not in the range.
- * Same structure is used in fld module where lsr_mdt field holds mdt id
+ * Same structure is used in fld module where lsr_index field holds mdt id
  * of the home mdt.
  */
 
+#define LU_SEQ_RANGE_MDT        0x0
+#define LU_SEQ_RANGE_OST        0x1
+
 struct lu_seq_range {
         __u64 lsr_start;
         __u64 lsr_end;
-        __u32 lsr_mdt;
-        __u32 lsr_padding;
+        __u32 lsr_index;
+        __u32 lsr_flags;
 };
 
 /**
@@ -213,7 +218,7 @@ static inline __u64 range_space(const struct lu_seq_range *range)
 
 static inline void range_init(struct lu_seq_range *range)
 {
-        range->lsr_start = range->lsr_end = range->lsr_mdt = 0;
+        range->lsr_start = range->lsr_end = range->lsr_index = 0;
 }
 
 /**
@@ -242,12 +247,21 @@ static inline int range_is_exhausted(const struct lu_seq_range *range)
         return range_space(range) == 0;
 }
 
-#define DRANGE "[%#16.16"LPF64"x-%#16.16"LPF64"x):%x"
+/* return 0 if two range have the same location */
+static inline int range_compare_loc(const struct lu_seq_range *r1,
+                                    const struct lu_seq_range *r2)
+{
+        return r1->lsr_index != r2->lsr_index ||
+               r1->lsr_flags != r2->lsr_flags;
+}
+
+#define DRANGE "[%#16.16"LPF64"x-%#16.16"LPF64"x):%x:%x"
 
 #define PRANGE(range)      \
         (range)->lsr_start, \
         (range)->lsr_end,    \
-        (range)->lsr_mdt
+        (range)->lsr_index,  \
+        (range)->lsr_flags
 
 /** \defgroup lu_fid lu_fid
  * @{ */
@@ -387,6 +401,10 @@ static inline obd_id fid_ver_oid(const struct lu_fid *fid)
 }
 
 /**
+ * Note that reserved SEQ numbers below 12 will conflict with ldiskfs
+ * inodes in the IGIF namespace, so these reserved SEQ numbers can be
+ * used for other purposes and not risk collisions with existing inodes.
+ *
  * Different FID Format
  * http://arch.lustre.org/index.php?title=Interoperability_fids_zfs#NEW.0
  */
@@ -1383,11 +1401,11 @@ extern void lustre_swab_niobuf_remote (struct niobuf_remote *nbr);
 #define OST_LVB_GET_ERR(blocks)    (int)(blocks - OST_LVB_ERR_INIT)
 
 struct ost_lvb {
-        __u64 lvb_size;
-        __u64 lvb_mtime;
-        __u64 lvb_atime;
-        __u64 lvb_ctime;
-        __u64 lvb_blocks;
+        __u64     lvb_size;
+        obd_time  lvb_mtime;
+        obd_time  lvb_atime;
+        obd_time  lvb_ctime;
+        __u64     lvb_blocks;
 };
 
 extern void lustre_swab_ost_lvb(struct ost_lvb *);
@@ -1552,9 +1570,9 @@ struct mds_body {
         struct lustre_handle handle;
         __u64          valid;
         __u64          size;   /* Offset, in the case of MDS_READPAGE */
-        __u64          mtime;
-        __u64          atime;
-        __u64          ctime;
+        obd_time       mtime;
+        obd_time       atime;
+        obd_time       ctime;
         __u64          blocks; /* XID, in the case of MDS_READPAGE */
         __u64          io_epoch;
         __u64          ino;
@@ -1584,9 +1602,9 @@ struct mdt_body {
         struct lustre_handle handle;
         __u64          valid;
         __u64          size;   /* Offset, in the case of MDS_READPAGE */
-        __u64          mtime;
-        __u64          atime;
-        __u64          ctime;
+       obd_time        mtime;
+       obd_time        atime;
+       obd_time        ctime;
         __u64          blocks; /* XID, in the case of MDS_READPAGE */
         __u64          ioepoch;
         __u64          ino;    /* for 1.6 compatibility */
@@ -1677,6 +1695,8 @@ extern void lustre_swab_quota_adjust_qunit(struct quota_adjust_qunit *q);
 #define LQUOTA_FLAGS_ADJINO    8UL   /* adjust the inode qunit size */
 #define LQUOTA_FLAGS_CHG_QS   16UL   /* indicate whether it has capability of
                                       * OBD_CONNECT_CHANGE_QS */
+#define LQUOTA_FLAGS_RECOVERY 32UL   /* recovery is going on a uid/gid */
+#define LQUOTA_FLAGS_SETQUOTA 64UL   /* being setquota on a uid/gid */
 
 /* flags is specific for quota_adjust_qunit */
 #define LQUOTA_QAQ_CREATE_LQS  (1 << 31) /* when it is set, need create lqs */
@@ -1744,9 +1764,9 @@ struct mdt_rec_setattr {
         __u32           sa_gid;
         __u64           sa_size;
         __u64           sa_blocks;
-        __u64           sa_mtime;
-        __u64           sa_atime;
-        __u64           sa_ctime;
+        obd_time        sa_mtime;
+        obd_time        sa_atime;
+        obd_time        sa_ctime;
         __u32           sa_attr_flags;
         __u32           sa_mode;
         __u32           sa_padding_2;
@@ -1862,7 +1882,7 @@ struct mdt_rec_create {
         struct lu_fid   cr_fid1;
         struct lu_fid   cr_fid2;
         struct lustre_handle cr_old_handle; /* handle in case of open replay */
-        __u64           cr_time;
+        obd_time        cr_time;
         __u64           cr_rdev;
         __u64           cr_ioepoch;
         __u64           cr_padding_1;   /* rr_blocks */
@@ -1888,7 +1908,7 @@ struct mdt_rec_link {
         __u32           lk_suppgid2_h;
         struct lu_fid   lk_fid1;
         struct lu_fid   lk_fid2;
-        __u64           lk_time;
+        obd_time        lk_time;
         __u64           lk_padding_1;   /* rr_atime */
         __u64           lk_padding_2;   /* rr_ctime */
         __u64           lk_padding_3;   /* rr_size */
@@ -1915,7 +1935,7 @@ struct mdt_rec_unlink {
         __u32           ul_suppgid2_h;
         struct lu_fid   ul_fid1;
         struct lu_fid   ul_fid2;
-        __u64           ul_time;
+        obd_time        ul_time;
         __u64           ul_padding_2;   /* rr_atime */
         __u64           ul_padding_3;   /* rr_ctime */
         __u64           ul_padding_4;   /* rr_size */
@@ -1942,7 +1962,7 @@ struct mdt_rec_rename {
         __u32           rn_suppgid2_h;
         struct lu_fid   rn_fid1;
         struct lu_fid   rn_fid2;
-        __u64           rn_time;
+        obd_time        rn_time;
         __u64           rn_padding_1;   /* rr_atime */
         __u64           rn_padding_2;   /* rr_ctime */
         __u64           rn_padding_3;   /* rr_size */
@@ -1972,7 +1992,7 @@ struct mdt_rec_setxattr {
         __u32           sx_padding_2;
         __u32           sx_padding_3;
         __u64           sx_valid;
-        __u64           sx_time;
+        obd_time        sx_time;
         __u64           sx_padding_5;   /* rr_ctime */
         __u64           sx_padding_6;   /* rr_size */
         __u64           sx_padding_7;   /* rr_blocks */
@@ -2005,9 +2025,9 @@ struct mdt_rec_reint {
         __u32           rr_suppgid2_h;
         struct lu_fid   rr_fid1;
         struct lu_fid   rr_fid2;
-        __u64           rr_mtime;
-        __u64           rr_atime;
-        __u64           rr_ctime;
+        obd_time        rr_mtime;
+        obd_time        rr_atime;
+        obd_time        rr_ctime;
         __u64           rr_size;
         __u64           rr_blocks;
         __u32           rr_bias;
@@ -2314,8 +2334,8 @@ struct cfg_marker {
         __u32             cm_flags;
         __u32             cm_vers;       /* lustre release version number */
         __u32             padding;       /* 64 bit align */
-        __u64             cm_createtime; /*when this record was first created */
-        __u64             cm_canceltime; /*when this record is no longer valid*/
+        obd_time          cm_createtime; /*when this record was first created */
+        obd_time          cm_canceltime; /*when this record is no longer valid*/
         char              cm_tgtname[MTI_NAME_MAXLEN];
         char              cm_comment[MTI_NAME_MAXLEN];
 };
@@ -2474,7 +2494,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"
@@ -2525,7 +2545,7 @@ struct llog_gen_rec {
 
 struct llog_log_hdr {
         struct llog_rec_hdr     llh_hdr;
-        __u64                   llh_timestamp;
+        obd_time                llh_timestamp;
         __u32                   llh_count;
         __u32                   llh_bitmap_offset;
         __u32                   llh_size;