static int ofd_create_hdl(struct tgt_session_info *tsi)
{
+ struct ptlrpc_request *req = tgt_ses_req(tsi);
struct ost_body *repbody;
const struct obdo *oa = &tsi->tsi_ost_body->oa;
struct obdo *rep_oa;
" at "LPU64"\n", ofd_name(ofd),
count, seq, next_id);
- if (cfs_time_after(jiffies, enough_time)) {
+ if (!(lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY)
+ && cfs_time_after(jiffies, enough_time)) {
CDEBUG(D_HA, "%s: Slow creates, %d/%d objects"
" created at a rate of %d/s\n",
ofd_name(ofd), created, diff + created,
break;
}
}
+
+ if (diff > 0 &&
+ lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY)
+ LCONSOLE_WARN("%s: can't create the same count of"
+ " objects when replaying the request"
+ " (diff is %d). see LU-4621\n",
+ ofd_name(ofd), diff);
+
if (created > 0)
/* some objects got created, we can return
* them, even if last creation failed */
d->opd_pre_grow_slow = 0;
}
+ body = req_capsule_client_get(&req->rq_pill, &RMF_OST_BODY);
+ fid_to_ostid(fid, &body->oa.o_oi);
+
d->opd_pre_last_created_fid = *fid;
spin_unlock(&d->opd_pre_lock);