From 6dd4e216db811187ae024bd9e9ed2718a024eac4 Mon Sep 17 00:00:00 2001 From: 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 137868b..f0fdfd4 100644 --- a/lustre/fid/fid_lib.c +++ b/lustre/fid/fid_lib.c @@ -49,9 +49,9 @@ * * Fid namespace: *
- * 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
  * 
* * 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 0c626dd..8f7544d 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 8a4864c..4630575 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 */ -- 1.8.3.1