+static inline bool lfsck_phase2_next_ready(struct lfsck_assistant_data *lad)
+{
+ return list_empty(&lad->lad_mdt_phase1_list) &&
+ (!list_empty(&lad->lad_ost_phase2_list) ||
+ list_empty(&lad->lad_ost_phase1_list));
+}
+
+static inline void lfsck_lad_set_bitmap(const struct lu_env *env,
+ struct lfsck_component *com,
+ __u32 index)
+{
+ struct lfsck_assistant_data *lad = com->lc_data;
+ struct cfs_bitmap *bitmap = lad->lad_bitmap;
+
+ LASSERT(com->lc_lfsck->li_master);
+ LASSERT(bitmap != NULL);
+
+ if (likely(bitmap->size > index)) {
+ cfs_bitmap_set(bitmap, index);
+ set_bit(LAD_INCOMPLETE, &lad->lad_flags);
+ } else if (com->lc_type == LFSCK_TYPE_NAMESPACE) {
+ struct lfsck_namespace *ns = com->lc_file_ram;
+
+ ns->ln_flags |= LF_INCOMPLETE;
+ }
+
+ CDEBUG(D_LFSCK, "%s: %s LFSCK set bitmap (%p/%u) for idx %u\n",
+ lfsck_lfsck2name(com->lc_lfsck), lad->lad_name, bitmap,
+ bitmap->size, index);
+}
+
+static inline int lfsck_links_read(const struct lu_env *env,
+ struct dt_object *obj,
+ struct linkea_data *ldata)
+{
+ ldata->ld_buf =
+ lu_buf_check_and_alloc(&lfsck_env_info(env)->lti_linkea_buf,
+ MAX_LINKEA_SIZE);
+
+ return __lfsck_links_read(env, obj, ldata, false);
+}
+
+/* Read linkEA for the given object, the linkEA should contain
+ * at least one entry, otherwise, -ENODATA will be returned. */
+static inline int lfsck_links_read_with_rec(const struct lu_env *env,
+ struct dt_object *obj,
+ struct linkea_data *ldata)
+{
+ ldata->ld_buf =
+ lu_buf_check_and_alloc(&lfsck_env_info(env)->lti_linkea_buf,
+ MAX_LINKEA_SIZE);
+
+ return __lfsck_links_read(env, obj, ldata, true);
+}
+
+static inline int lfsck_links_read2_with_rec(const struct lu_env *env,
+ struct dt_object *obj,
+ struct linkea_data *ldata)
+{
+ ldata->ld_buf =
+ lu_buf_check_and_alloc(&lfsck_env_info(env)->lti_linkea_buf2,
+ MAX_LINKEA_SIZE);
+
+ return __lfsck_links_read(env, obj, ldata, true);
+}
+
+static inline struct lfsck_lmv *lfsck_lmv_get(struct lfsck_lmv *llmv)
+{
+ if (llmv != NULL)
+ atomic_inc(&llmv->ll_ref);
+
+ return llmv;
+}
+
+static inline int lfsck_sub_trace_file_fid2idx(const struct lu_fid *fid)
+{
+ return fid->f_oid & (LFSCK_STF_COUNT - 1);
+}
+
+static inline void lfsck_lmv_header_le_to_cpu(struct lmv_mds_md_v1 *dst,
+ const struct lmv_mds_md_v1 *src)
+{
+ dst->lmv_magic = le32_to_cpu(src->lmv_magic);
+ dst->lmv_stripe_count = le32_to_cpu(src->lmv_stripe_count);
+ dst->lmv_master_mdt_index = le32_to_cpu(src->lmv_master_mdt_index);
+ dst->lmv_hash_type = le32_to_cpu(src->lmv_hash_type);
+ dst->lmv_layout_version = le32_to_cpu(src->lmv_layout_version);
+ dst->lmv_migrate_offset = le32_to_cpu(src->lmv_migrate_offset);
+ dst->lmv_migrate_hash = le32_to_cpu(src->lmv_migrate_hash);
+}
+
+static inline void lfsck_lmv_header_cpu_to_le(struct lmv_mds_md_v1 *dst,
+ const struct lmv_mds_md_v1 *src)