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,
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)
&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;
}