From 6dd4e216db811187ae024bd9e9ed2718a024eac4 Mon Sep 17 00:00:00 2001
From: huanghua <huanghua>
Date: Fri, 27 Jun 2008 04:01:01 +0000
Subject: [PATCH] Branch HEAD b=16000 i=adilger i=nikita.danilov

one more bit in sequence for IGIF and IDIF
---
 lustre/fid/fid_lib.c               |  6 +++---
 lustre/include/lustre/lustre_idl.h | 20 +++++++++++++++++---
 lustre/llite/llite_fid.c           |  1 -
 3 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/lustre/fid/fid_lib.c b/lustre/fid/fid_lib.c
index 137868ba5a..f0fdfd4b1a 100644
--- a/lustre/fid/fid_lib.c
+++ b/lustre/fid/fid_lib.c
@@ -49,9 +49,9 @@
  *
  * Fid namespace:
  * <pre>
- * Normal FID:        seq:64 [2^32,2^64-1]      oid:32          ver:32
- * IGIF      :        0:33, ino:31              gen:32          0:32
- * IDIF      :        0:32, 1:1, ost-index:15,  objd:48         0:32
+ * Normal FID:        seq:64 [2^33,2^64-1]      oid:32          ver:32
+ * IGIF      :        0:32, ino:32              gen:32          0:32
+ * IDIF      :        0:31, 1:1, ost-index:16,  objd:48         0:32
  * </pre>
  *
  * The first 0x400 sequences of normal FID are reserved for special purpose.
diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h
index 0c626dd740..8f7544df67 100644
--- a/lustre/include/lustre/lustre_idl.h
+++ b/lustre/include/lustre/lustre_idl.h
@@ -219,13 +219,17 @@ static inline __u32 fid_ver(const struct lu_fid *fid)
         return fid->f_ver;
 }
 
-#define FID_SEQ_START 0x100000000ULL
-
 static inline void fid_zero(struct lu_fid *fid)
 {
         memset(fid, 0, sizeof(*fid));
 }
 
+/* Normal FID sequence starts from this value, i.e. 1<<33 */
+#define FID_SEQ_START  0x200000000ULL
+
+/* IDIF sequence starts from this value, i.e. 1<<32 */
+#define IDIF_SEQ_START 0x100000000ULL
+
 /**
  * Check if a fid is igif or not.
  * \param fid the fid to be tested.
@@ -233,7 +237,17 @@ static inline void fid_zero(struct lu_fid *fid)
  */
 static inline int fid_is_igif(const struct lu_fid *fid)
 {
-        return fid_seq(fid) > 0 && fid_seq(fid) < FID_SEQ_START;
+        return fid_seq(fid) > 0 && fid_seq(fid) < IDIF_SEQ_START;
+}
+
+/**
+ * Check if a fid is idif or not.
+ * \param fid the fid to be tested.
+ * \return true if the fid is a idif; otherwise false. 
+ */
+static inline int fid_is_idif(const struct lu_fid *fid)
+{
+        return fid_seq(fid) >= IDIF_SEQ_START  && fid_seq(fid) < FID_SEQ_START;
 }
 
 /**
diff --git a/lustre/llite/llite_fid.c b/lustre/llite/llite_fid.c
index 8a4864cc5a..46305759b7 100644
--- a/lustre/llite/llite_fid.c
+++ b/lustre/llite/llite_fid.c
@@ -53,7 +53,6 @@ ino_t ll_fid_build_ino(struct ll_sb_info *sbi,
          * based on fid.
          */
         ino = fid_flatten(fid);
-        ino = ino & 0x7fffffff;
 
         if (unlikely(ino == 0))
                 /* the first result ino is 0xFFC001, so this is rarely used */
-- 
GitLab