Whamcloud - gitweb
LU-911 osd: OI is implemented internally within OSD
[fs/lustre-release.git] / lustre / include / lustre_fid.h
index 4748466..a9aff3a 100644 (file)
@@ -28,6 +28,8 @@
 /*
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -88,10 +90,15 @@ enum {
         LUSTRE_SEQ_SUPER_WIDTH = ((1ULL << 30ULL) * LUSTRE_SEQ_META_WIDTH)
 };
 
+enum {
+        /** 2^6 FIDs for OI containers */
+        OSD_OI_FID_OID_BITS     = 6,
+        /** reserve enough FIDs in case we want more in the future */
+        OSD_OI_FID_OID_BITS_MAX = 10,
+};
+
 /** special OID for local objects */
 enum local_oid {
-        /** \see osd_oi_index_create */
-        OSD_OI_FID_16_OID       = 2UL,
         /** \see fld_mod_init */
         FLD_INDEX_OID           = 3UL,
         /** \see fid_mod_init */
@@ -107,6 +114,16 @@ enum local_oid {
         MDT_LAST_RECV_OID       = 11UL,
         /** \see osd_mod_init */
         OSD_REM_OBJ_DIR_OID     = 12UL,
+        OSD_FS_ROOT_OID         = 13UL,
+        ACCT_USER_OID           = 15UL,
+        ACCT_GROUP_OID          = 16UL,
+        OFD_LAST_RECV_OID       = 19UL,
+        OFD_GROUP0_LAST_OID     = 20UL,
+        OFD_GROUP4K_LAST_OID    = 20UL+4096,
+        OFD_LAST_GROUP_OID      = 4117UL,
+        LLOG_CATALOGS_OID       = 4118UL,
+        MGS_CONFIGS_OID         = 4119UL,
+        OFD_HEALTH_CHECK_OID    = 4120UL,
 };
 
 static inline void lu_local_obj_fid(struct lu_fid *fid, __u32 oid)
@@ -275,15 +292,12 @@ int fid_is_local(const struct lu_env *env,
 
 struct ldlm_namespace;
 
-enum {
-        LUSTRE_RES_ID_SEQ_OFF = 0,
-        LUSTRE_RES_ID_OID_OFF = 1,
-        LUSTRE_RES_ID_VER_OFF = 2,
-        LUSTRE_RES_ID_HSH_OFF = 3
-};
-
 /*
- * Build (DLM) resource name from fid.
+ * Build (DLM) resource name from FID.
+ *
+ * NOTE: until Lustre 1.8.7/2.1.1 the fid_ver() was packed into name[2],
+ * but was moved into name[1] along with the OID to avoid consuming the
+ * renaming name[2,3] fields that need to be used for the quota identifier.
  */
 static inline struct ldlm_res_id *
 fid_build_reg_res_name(const struct lu_fid *f,
@@ -291,8 +305,7 @@ fid_build_reg_res_name(const struct lu_fid *f,
 {
         memset(name, 0, sizeof *name);
         name->name[LUSTRE_RES_ID_SEQ_OFF] = fid_seq(f);
-        name->name[LUSTRE_RES_ID_OID_OFF] = fid_oid(f);
-        name->name[LUSTRE_RES_ID_VER_OFF] = fid_ver(f);
+        name->name[LUSTRE_RES_ID_VER_OID_OFF] = fid_ver_oid(f);
         return name;
 }
 
@@ -302,10 +315,8 @@ fid_build_reg_res_name(const struct lu_fid *f,
 static inline int fid_res_name_eq(const struct lu_fid *f,
                                   const struct ldlm_res_id *name)
 {
-        return
-                name->name[LUSTRE_RES_ID_SEQ_OFF] == fid_seq(f) &&
-                name->name[LUSTRE_RES_ID_OID_OFF] == fid_oid(f) &&
-                name->name[LUSTRE_RES_ID_VER_OFF] == fid_ver(f);
+        return name->name[LUSTRE_RES_ID_SEQ_OFF] == fid_seq(f) &&
+               name->name[LUSTRE_RES_ID_VER_OID_OFF] == fid_ver_oid(f);
 }