GOTO(out, rc = -EINVAL);
}
- if (diff < 0) {
+ if (diff <= -OST_MAX_PRECREATE) {
/* LU-5648 */
CERROR("%s: invalid precreate request for "
DOSTID", last_id %llu. "
ofd_name(ofd), POSTID(&oa->o_oi),
ofd_seq_last_oid(oseq));
GOTO(out, rc = -EINVAL);
+ } else if (diff < 0) {
+ LCONSOLE(D_INFO,
+ "%s: MDS LAST_ID "DFID" (%llu) is %lld behind OST LAST_ID "DFID" (%llu), trust the OST\n",
+ ofd_name(ofd), PFID(&oa->o_oi.oi_fid),
+ oid, -diff, PFID(&oseq->os_oi.oi_fid),
+ ofd_seq_last_oid(oseq));
+ /* Let MDS know that we are so far ahead. */
+ rc = ostid_set_id(&rep_oa->o_oi,
+ ofd_seq_last_oid(oseq) + 1);
}
}
}
struct ldlm_resource *res;
struct ofd_object *fo;
__u64 flags = 0;
+ __u64 valid;
struct lustre_handle lh = { 0, };
int rc, mode;
__u64 start, end;
if (IS_ERR(fo))
GOTO(out, rc = PTR_ERR(fo));
- la_from_obdo(&info->fti_attr, oa,
- OBD_MD_FLMTIME | OBD_MD_FLATIME | OBD_MD_FLCTIME);
+ valid = OBD_MD_FLUID | OBD_MD_FLGID | OBD_MD_FLPROJID |
+ OBD_MD_FLATIME | OBD_MD_FLMTIME | OBD_MD_FLCTIME;
+ la_from_obdo(&info->fti_attr, oa, valid);
rc = ofd_object_fallocate(tsi->tsi_env, fo, start, end, mode,
&info->fti_attr, oa);
rc = ofd_attr_get(tsi->tsi_env, fo, &info->fti_attr);
if (rc == 0)
- obdo_from_la(&repbody->oa, &info->fti_attr,
- OFD_VALID_FLAGS);
+ obdo_from_la(&repbody->oa, &info->fti_attr, OFD_VALID_FLAGS);
else
rc = 0;