Whamcloud - gitweb
LU-1506 ldlm: correct lock res build for FID on OST
[fs/lustre-release.git] / lustre / ofd / ofd_internal.h
index 5617008..4756484 100644 (file)
@@ -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,
@@ -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,