Whamcloud - gitweb
LU-1866 lfsck: enhance otable-based iteration
[fs/lustre-release.git] / lustre / ofd / ofd_internal.h
index 5617008..28c7d18 100644 (file)
@@ -91,7 +91,7 @@ static inline void ofd_counter_incr(struct obd_export *exp, int opcode,
                                    char *jobid, long amount)
 {
        if (exp->exp_obd && exp->exp_obd->u.obt.obt_jobstats.ojs_hash &&
-           (exp->exp_connect_flags & OBD_CONNECT_JOBSTATS))
+           (exp_connect_flags(exp) & OBD_CONNECT_JOBSTATS))
                lprocfs_job_stats_log(exp->exp_obd, jobid, opcode, amount);
 
        if (exp->exp_nid_stats != NULL &&
@@ -129,7 +129,6 @@ struct ofd_device {
 
        /* last_rcvd file */
        struct lu_target         ofd_lut;
-       struct dt_object        *ofd_seq_count_file;
        struct dt_object        *ofd_health_check_file;
 
        int                      ofd_subdir_count;
@@ -186,6 +185,7 @@ struct ofd_device {
                                 /* shall we grant space to clients not
                                  * supporting OBD_CONNECT_GRANT_PARAM? */
                                 ofd_grant_compat_disable:1;
+       struct seq_server_site   ofd_seq_site;
 };
 
 static inline struct ofd_device *ofd_dev(struct lu_device *d)
@@ -405,7 +405,7 @@ struct ofd_object *ofd_object_find_or_create(const struct lu_env *env,
                                             struct lu_attr *attr);
 int ofd_object_ff_check(const struct lu_env *env, struct ofd_object *fo);
 int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd,
-                         obd_id id, struct ofd_seq *oseq, int nr);
+                         obd_id id, struct ofd_seq *oseq, int nr, int sync);
 
 void ofd_object_put(const struct lu_env *env, struct ofd_object *fo);
 int ofd_attr_set(const struct lu_env *env, struct ofd_object *fo,
@@ -433,7 +433,7 @@ static inline int ofd_grant_ratio_conv(int percentage)
 
 static inline int ofd_grant_param_supp(struct obd_export *exp)
 {
-       return !!(exp->exp_connect_flags & OBD_CONNECT_GRANT_PARAM);
+       return !!(exp_connect_flags(exp) & OBD_CONNECT_GRANT_PARAM);
 }
 
 /* Blocksize used for client not supporting OBD_CONNECT_GRANT_PARAM.
@@ -489,6 +489,12 @@ void ofd_fmd_drop(struct obd_export *exp, struct lu_fid *fid);
 #define ofd_fmd_drop(exp, fid) do {} while (0)
 #endif
 
+/* ofd_dev.c */
+int ofd_fid_set_index(const struct lu_env *env, struct ofd_device *ofd,
+                     int index);
+int ofd_fid_init(const struct lu_env *env, struct ofd_device *ofd);
+int ofd_fid_fini(const struct lu_env *env, struct ofd_device *ofd);
+
 /* ofd_lvb.c */
 extern struct ldlm_valblock_ops ofd_lvbo;
 
@@ -531,33 +537,28 @@ static inline struct ofd_thread_info * ofd_info_init(const struct lu_env *env,
 static inline void ofd_build_resid(const struct lu_fid *fid,
                                   struct ldlm_res_id *resname)
 {
+       struct ost_id oid;
+
        if (fid_is_idif(fid)) {
-               /* get id/seq like ostid_idif_pack() does */
-               osc_build_res_name(fid_idif_id(fid_seq(fid), fid_oid(fid),
-                                              fid_ver(fid)),
-                                  FID_SEQ_OST_MDT0, resname);
+               oid.oi_id = fid_idif_id(fid_seq(fid), fid_oid(fid),
+                                       fid_ver(fid));
+               oid.oi_seq = FID_SEQ_OST_MDT0;
        } else {
-               /* In the future, where OSTs have FID sequences allocated. */
-               fid_build_reg_res_name(fid, resname);
+               oid.oi_id = fid_oid(fid);
+               oid.oi_seq = fid_seq(fid);
        }
+       ostid_build_res_name(&oid, resname);
 }
 
 static inline void ofd_fid_from_resid(struct lu_fid *fid,
                                      const struct ldlm_res_id *name)
 {
-       /* if seq is FID_SEQ_OST_MDT0 then we have IDIF and resid was built
-        * using osc_build_res_name function. */
-       if (fid_seq_is_mdt0(name->name[LUSTRE_RES_ID_VER_OID_OFF])) {
-               struct ost_id ostid;
-
-               ostid.oi_id = name->name[LUSTRE_RES_ID_SEQ_OFF];
-               ostid.oi_seq = name->name[LUSTRE_RES_ID_VER_OID_OFF];
-               fid_ostid_unpack(fid, &ostid, 0);
-       } else {
-               fid->f_seq = name->name[LUSTRE_RES_ID_SEQ_OFF];
-               fid->f_oid = (__u32)name->name[LUSTRE_RES_ID_VER_OID_OFF];
-               fid->f_ver = name->name[LUSTRE_RES_ID_VER_OID_OFF] >> 32;
-       }
+       /* To keep compatiblity, res[0] = oi_id, res[1] = oi_seq. */
+       struct ost_id ostid;
+
+       ostid.oi_id = name->name[LUSTRE_RES_ID_SEQ_OFF];
+       ostid.oi_seq = name->name[LUSTRE_RES_ID_VER_OID_OFF];
+       fid_ostid_unpack(fid, &ostid, 0);
 }
 
 static inline void ofd_oti2info(struct ofd_thread_info *info,