X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_fid.h;h=d4690353af32f572c638cec8614842662a20ec5a;hb=64f99d8993d8f4087de2adf59e9a834823f92898;hp=08bf3dec2f027520f136148a105333783b2dee21;hpb=a6db2409b0282b0a0e44d5d4e6eeb154b5c62dff;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_fid.h b/lustre/include/lustre_fid.h index 08bf3de..d469035 100644 --- a/lustre/include/lustre_fid.h +++ b/lustre/include/lustre_fid.h @@ -428,14 +428,14 @@ int seq_client_alloc_fid(const struct lu_env *env, struct lu_client_seq *seq, struct lu_fid *fid); int seq_client_get_seq(const struct lu_env *env, struct lu_client_seq *seq, seqno_t *seqnr); - int seq_site_fini(const struct lu_env *env, struct seq_server_site *ss); /* Fids common stuff */ int fid_is_local(const struct lu_env *env, struct lu_site *site, const struct lu_fid *fid); -int client_fid_init(struct obd_export *exp, enum lu_cli_type type); -int client_fid_fini(struct obd_export *exp); +int client_fid_init(struct obd_device *obd, struct obd_export *exp, + enum lu_cli_type type); +int client_fid_fini(struct obd_device *obd); /* fid locking */ @@ -519,6 +519,36 @@ fid_build_pdo_res_name(const struct lu_fid *f, return name; } +/** + * Build DLM resource name from object id & seq, which will be removed + * finally, when we replace ost_id with FID in data stack. + * + * To keep the compatibility, res[0] = oid, res[1] = seq + */ +static inline void ostid_build_res_name(struct ost_id *oid, + struct ldlm_res_id *name) +{ + memset(name, 0, sizeof *name); + name->name[LUSTRE_RES_ID_SEQ_OFF] = oid->oi_id; + name->name[LUSTRE_RES_ID_VER_OID_OFF] = oid->oi_seq; +} + +static inline void ostid_res_name_to_id(struct ost_id *oid, + struct ldlm_res_id *name) +{ + oid->oi_id = name->name[LUSTRE_RES_ID_SEQ_OFF]; + oid->oi_seq = name->name[LUSTRE_RES_ID_VER_OID_OFF]; +} + +/** + * Return true if the resource is for the object identified by this id & group. + */ +static inline int ostid_res_name_eq(struct ost_id *oid, + struct ldlm_res_id *name) +{ + return name->name[LUSTRE_RES_ID_SEQ_OFF] == oid->oi_id && + name->name[LUSTRE_RES_ID_VER_OID_OFF] == oid->oi_seq; +} /** * Flatten 128-bit FID values into a 64-bit value for use as an inode number. @@ -581,6 +611,18 @@ static inline __u32 fid_flatten32(const struct lu_fid *fid) RETURN(ino ? ino : fid_oid(fid)); } +static inline int lu_fid_diff(struct lu_fid *fid1, struct lu_fid *fid2) +{ + LASSERTF(fid_seq(fid1) == fid_seq(fid2), "fid1:"DFID", fid2:"DFID"\n", + PFID(fid1), PFID(fid2)); + + if (fid_is_idif(fid1) && fid_is_idif(fid2)) + return fid_idif_id(fid1->f_seq, fid1->f_oid, fid1->f_ver) - + fid_idif_id(fid2->f_seq, fid2->f_oid, fid2->f_ver); + + return fid_oid(fid1) - fid_oid(fid2); +} + #define LUSTRE_SEQ_SRV_NAME "seq_srv" #define LUSTRE_SEQ_CTL_NAME "seq_ctl"