struct layout_intent *layout,
const struct lu_buf *buf)
{
- CDEBUG(D_INFO, "got layout change request from client: "
- "opc:%u flags:%#x extent[%#llx,%#llx)\n",
- layout->li_opc, layout->li_flags,
- layout->li_start, layout->li_end);
/* need instantiate objects which in the access range */
LASSERT(m->mo_ops->moo_layout_change);
return m->mo_ops->moo_layout_change(env, m, layout, buf);
end = cl_offset(io->ci_obj, index + 1);
}
+ CDEBUG(D_VFSTRACE, DFID" type %d [%llx, %llx)\n",
+ PFID(lu_object_fid(&obj->co_lu)), io->ci_type,
+ start, end);
rc = ll_layout_write_intent(inode, start, end);
io->ci_result = rc;
if (!rc)
lse->lsme_pool_name);
if (!lsme_inited(lse) ||
lse->lsme_pattern & LOV_PATTERN_F_RELEASED)
- break;
+ continue;
for (j = 0; j < lse->lsme_stripe_count; j++) {
CDEBUG(level, " oinfo:%p: ostid: "DOSTID
" ost idx: %d gen: %d\n",
int rc;
ENTRY;
+ CDEBUG(D_INFO, "got layout change request from client: "
+ "opc:%u flags:%#x extent[%#llx,%#llx)\n",
+ layout->li_opc, layout->li_flags,
+ layout->li_start, layout->li_end);
if (layout->li_start >= layout->li_end) {
CERROR("Recieved an invalid layout change range [%llu, %llu) "
"for "DFID"\n", layout->li_start, layout->li_end,
if (layout_change) {
struct lu_buf *buf = &info->mti_buf;
+ /**
+ * mdt_layout_change is a reint operation, when the request
+ * is resent, layout write shouldn't reprocess it again.
+ */
+ rc = mdt_check_resent(info, mdt_reconstruct_generic, lhc);
+ if (rc)
+ GOTO(out_obj, rc = rc < 0 ? rc : 0);
+
buf->lb_buf = NULL;
buf->lb_len = 0;
if (unlikely(req_is_replay(mdt_info_req(info)))) {