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