Whamcloud - gitweb
LU-5552 llite: make sure we do cl_page_clip on the last page
[fs/lustre-release.git] / lustre / lmv / lmv_internal.h
index 60ed76f..637c5a2 100644 (file)
@@ -58,10 +58,8 @@ int lmv_intent_lock(struct obd_export *exp, struct md_op_data *op_data,
 
 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);
 
@@ -73,8 +71,13 @@ int lmv_revalidate_slaves(struct obd_export *exp, struct mdt_body *mbody,
                          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;
 
@@ -96,7 +99,7 @@ static inline int
 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) {
@@ -156,6 +159,17 @@ lsm_name_to_stripe_info(const struct lmv_stripe_md *lsm, const char *name,
        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,