struct ofd_thread_info *info;
obd_seq seq = oa->o_seq;
struct ofd_seq *oseq;
- int rc = 0, diff;
+ int rc = 0, diff;
+ int sync_trans = 0;
ENTRY;
diff = 1; /* shouldn't we create this right now? */
} else {
diff = oa->o_id - ofd_seq_last_oid(oseq);
+ /* Do sync create if the seq is about to used up */
+ if (fid_seq_is_idif(oa->o_seq) ||
+ fid_seq_is_mdt0(oa->o_seq)) {
+ if (unlikely(oa->o_id >= IDIF_MAX_OID - 1))
+ sync_trans = 1;
+ } else if (fid_seq_is_norm(oa->o_seq)) {
+ if (unlikely(oa->o_id >=
+ LUSTRE_DATA_SEQ_MAX_WIDTH - 1))
+ sync_trans = 1;
+ } else {
+ CERROR("%s : invalid o_seq "LPX64": rc = %d\n",
+ ofd_name(ofd), oa->o_seq, -EINVAL);
+ GOTO(out, rc = -EINVAL);
+ }
}
}
if (diff > 0) {
}
rc = ofd_precreate_objects(env, ofd, next_id,
- oseq, count);
+ oseq, count, sync_trans);
if (rc > 0) {
created += rc;
diff -= rc;