Skip to content
Snippets Groups Projects
Commit 6dd4e216 authored by huanghua's avatar huanghua
Browse files

Branch HEAD

b=16000
i=adilger
i=nikita.danilov

one more bit in sequence for IGIF and IDIF
parent 8dcf444f
No related branches found
No related tags found
No related merge requests found
...@@ -49,9 +49,9 @@ ...@@ -49,9 +49,9 @@
* *
* Fid namespace: * Fid namespace:
* <pre> * <pre>
* Normal FID: seq:64 [2^32,2^64-1] oid:32 ver:32 * Normal FID: seq:64 [2^33,2^64-1] oid:32 ver:32
* IGIF : 0:33, ino:31 gen:32 0:32 * IGIF : 0:32, ino:32 gen:32 0:32
* IDIF : 0:32, 1:1, ost-index:15, objd:48 0:32 * IDIF : 0:31, 1:1, ost-index:16, objd:48 0:32
* </pre> * </pre>
* *
* The first 0x400 sequences of normal FID are reserved for special purpose. * The first 0x400 sequences of normal FID are reserved for special purpose.
......
...@@ -219,13 +219,17 @@ static inline __u32 fid_ver(const struct lu_fid *fid) ...@@ -219,13 +219,17 @@ static inline __u32 fid_ver(const struct lu_fid *fid)
return fid->f_ver; return fid->f_ver;
} }
#define FID_SEQ_START 0x100000000ULL
static inline void fid_zero(struct lu_fid *fid) static inline void fid_zero(struct lu_fid *fid)
{ {
memset(fid, 0, sizeof(*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. * Check if a fid is igif or not.
* \param fid the fid to be tested. * \param fid the fid to be tested.
...@@ -233,7 +237,17 @@ static inline void fid_zero(struct lu_fid *fid) ...@@ -233,7 +237,17 @@ static inline void fid_zero(struct lu_fid *fid)
*/ */
static inline int fid_is_igif(const 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;
} }
/** /**
......
...@@ -53,7 +53,6 @@ ino_t ll_fid_build_ino(struct ll_sb_info *sbi, ...@@ -53,7 +53,6 @@ ino_t ll_fid_build_ino(struct ll_sb_info *sbi,
* based on fid. * based on fid.
*/ */
ino = fid_flatten(fid); ino = fid_flatten(fid);
ino = ino & 0x7fffffff;
if (unlikely(ino == 0)) if (unlikely(ino == 0))
/* the first result ino is 0xFFC001, so this is rarely used */ /* the first result ino is 0xFFC001, so this is rarely used */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment