Whamcloud - gitweb
LU-5223 lmv: build master LMV EA dynamically build via readdir
[fs/lustre-release.git] / lustre / include / lustre_lmv.h
index fc15717..687bbfc 100644 (file)
@@ -52,6 +52,30 @@ struct lmv_stripe_md {
        struct lmv_oinfo lsm_md_oinfo[0];
 };
 
+static inline bool
+lsm_md_eq(const struct lmv_stripe_md *lsm1, const struct lmv_stripe_md *lsm2)
+{
+       int idx;
+
+       if (lsm1->lsm_md_magic != lsm2->lsm_md_magic ||
+           lsm1->lsm_md_stripe_count != lsm2->lsm_md_stripe_count ||
+           lsm1->lsm_md_master_mdt_index !=
+                               lsm2->lsm_md_master_mdt_index ||
+           lsm1->lsm_md_hash_type != lsm2->lsm_md_hash_type ||
+           lsm1->lsm_md_layout_version !=
+                               lsm2->lsm_md_layout_version ||
+           strcmp(lsm1->lsm_md_pool_name,
+                     lsm2->lsm_md_pool_name) != 0)
+               return false;
+
+       for (idx = 0; idx < lsm1->lsm_md_stripe_count; idx++) {
+               if (!lu_fid_eq(&lsm1->lsm_md_oinfo[idx].lmo_fid,
+                              &lsm2->lsm_md_oinfo[idx].lmo_fid))
+                       return false;
+       }
+
+       return true;
+}
 union lmv_mds_md;
 
 int lmv_pack_md(union lmv_mds_md **lmmp, const struct lmv_stripe_md *lsm,
@@ -61,21 +85,9 @@ void lmv_free_md(union lmv_mds_md *lmm);
 int lmv_alloc_memmd(struct lmv_stripe_md **lsmp, int stripe_count);
 void lmv_free_memmd(struct lmv_stripe_md *lsm);
 
-static inline void lmv1_cpu_to_le(struct lmv_mds_md_v1 *lmv_dst,
-                                 const struct lmv_mds_md_v1 *lmv_src)
-{
-       int i;
-
-       lmv_dst->lmv_magic = cpu_to_le32(lmv_src->lmv_magic);
-       lmv_dst->lmv_stripe_count = cpu_to_le32(lmv_src->lmv_stripe_count);
-       lmv_dst->lmv_master_mdt_index =
-                       cpu_to_le32(lmv_src->lmv_master_mdt_index);
-       lmv_dst->lmv_hash_type = cpu_to_le32(lmv_src->lmv_hash_type);
-       lmv_dst->lmv_layout_version = cpu_to_le32(lmv_src->lmv_layout_version);
-       for (i = 0; i < lmv_src->lmv_stripe_count; i++)
-               fid_cpu_to_le(&lmv_dst->lmv_stripe_fids[i],
-                             &lmv_src->lmv_stripe_fids[i]);
-}
+int lmvea_load_shards(const struct lu_env *env, struct dt_object *obj,
+                     struct lu_dirent *ent, struct lu_buf *buf,
+                     bool resize);
 
 static inline void lmv1_le_to_cpu(struct lmv_mds_md_v1 *lmv_dst,
                                  const struct lmv_mds_md_v1 *lmv_src)
@@ -93,29 +105,13 @@ static inline void lmv1_le_to_cpu(struct lmv_mds_md_v1 *lmv_dst,
                              &lmv_src->lmv_stripe_fids[i]);
 }
 
-static inline void lmv_cpu_to_le(union lmv_mds_md *lmv_dst,
-                                const union lmv_mds_md *lmv_src)
-{
-       switch (lmv_src->lmv_magic) {
-       case LMV_MAGIC_V1:
-       case LMV_MAGIC_MIGRATE: {
-               lmv1_cpu_to_le(&lmv_dst->lmv_md_v1, &lmv_src->lmv_md_v1);
-               break;
-       }
-       default:
-               break;
-       }
-}
-
 static inline void lmv_le_to_cpu(union lmv_mds_md *lmv_dst,
                                 const union lmv_mds_md *lmv_src)
 {
        switch (le32_to_cpu(lmv_src->lmv_magic)) {
        case LMV_MAGIC_V1:
-       case LMV_MAGIC_MIGRATE: {
                lmv1_le_to_cpu(&lmv_dst->lmv_md_v1, &lmv_src->lmv_md_v1);
                break;
-       }
        default:
                break;
        }