int lmv_blocking_ast(struct ldlm_lock *, struct ldlm_lock_desc *,
void *, int);
-int lmv_fld_lookup(struct lmv_obd *lmv, const struct lu_fid *fid,
- mdsno_t *mds);
-int __lmv_fid_alloc(struct lmv_obd *lmv, struct lu_fid *fid,
- mdsno_t mds);
+int lmv_fld_lookup(struct lmv_obd *lmv, const struct lu_fid *fid, u32 *mds);
+int __lmv_fid_alloc(struct lmv_obd *lmv, struct lu_fid *fid, u32 mds);
int lmv_fid_alloc(const struct lu_env *env, struct obd_export *exp,
struct lu_fid *fid, struct md_op_data *op_data);
ldlm_blocking_callback cb_blocking,
int extra_lock_flags);
+static inline struct obd_device *lmv2obd_dev(struct lmv_obd *lmv)
+{
+ return container_of0(lmv, struct obd_device, u.lmv);
+}
+
static inline struct lmv_tgt_desc *
-lmv_get_target(struct lmv_obd *lmv, mdsno_t mdt_idx, int *index)
+lmv_get_target(struct lmv_obd *lmv, u32 mdt_idx, int *index)
{
int i;
lmv_find_target_index(struct lmv_obd *lmv, const struct lu_fid *fid)
{
struct lmv_tgt_desc *ltd;
- mdsno_t mdt_idx = 0;
+ u32 mdt_idx = 0;
int index = 0;
if (lmv->desc.ld_tgt_count > 1) {
return &lsm->lsm_md_oinfo[stripe_index];
}
+static inline bool lmv_is_known_hash_type(const struct lmv_stripe_md *lsm)
+{
+ return lsm->lsm_md_hash_type == LMV_HASH_TYPE_FNV_1A_64 ||
+ lsm->lsm_md_hash_type == LMV_HASH_TYPE_ALL_CHARS;
+}
+
+static inline bool lmv_need_try_all_stripes(const struct lmv_stripe_md *lsm)
+{
+ return !lmv_is_known_hash_type(lsm) ||
+ lsm->lsm_md_hash_type & LMV_HASH_FLAG_MIGRATION;
+}
struct lmv_tgt_desc
*lmv_locate_mds(struct lmv_obd *lmv, struct md_op_data *op_data,