out:
mutex_unlock(&oseq->os_create_lock);
out_nolock:
- if (rc == 0)
+ if (rc == 0) {
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 8, 53, 0)
+ struct ofd_thread_info *info = ofd_info(tsi->tsi_env);
+ struct lu_fid *fid = &info->fti_fid;
+
+ /* For compatible purpose, it needs to convert back to
+ * OST ID before put it on wire. */
+ *fid = rep_oa->o_oi.oi_fid;
+ fid_to_ostid(fid, &rep_oa->o_oi);
+#endif
rep_oa->o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP;
-
+ }
ofd_seq_put(tsi->tsi_env, oseq);
out_sem:
GOTO(out_req, rc = -EPROTO);
ostid_to_fid(fid, &body->oa.o_oi, d->opd_index);
- LASSERTF(osp_fid_diff(fid, &d->opd_pre_used_fid) > 0,
- "reply fid "DFID" pre used fid "DFID"\n", PFID(fid),
- PFID(&d->opd_pre_used_fid));
+ if (osp_fid_diff(fid, &d->opd_pre_used_fid) <= 0) {
+ CERROR("%s: precreate fid "DFID" < local used fid "DFID
+ ": rc = %d\n", d->opd_obd->obd_name,
+ PFID(fid), PFID(&d->opd_pre_used_fid), -ESTALE);
+ GOTO(out_req, rc = -ESTALE);
+ }
diff = osp_fid_diff(fid, &d->opd_pre_last_created_fid);