+static inline bool
+lmv_mdt0_inited(struct lmv_obd *lmv)
+{
+ return lmv->lmv_mdt_descs.ltd_tgt_bitmap->size > 0 &&
+ cfs_bitmap_check(lmv->lmv_mdt_descs.ltd_tgt_bitmap, 0);
+}
+
+#define lmv_foreach_tgt(lmv, tgt) ltd_foreach_tgt(&(lmv)->lmv_mdt_descs, tgt)
+
+#define lmv_foreach_tgt_safe(lmv, tgt, tmp) \
+ ltd_foreach_tgt_safe(&(lmv)->lmv_mdt_descs, tgt, tmp)
+
+static inline
+struct lu_tgt_desc *lmv_first_connected_tgt(struct lmv_obd *lmv)
+{
+ struct lu_tgt_desc *tgt;
+
+ tgt = ltd_first_tgt(&lmv->lmv_mdt_descs);
+ while (tgt && !tgt->ltd_exp)
+ tgt = ltd_next_tgt(&lmv->lmv_mdt_descs, tgt);
+
+ return tgt;
+}
+
+static inline
+struct lu_tgt_desc *lmv_next_connected_tgt(struct lmv_obd *lmv,
+ struct lu_tgt_desc *tgt)
+{
+ do {
+ tgt = ltd_next_tgt(&lmv->lmv_mdt_descs, tgt);
+ } while (tgt && !tgt->ltd_exp);