- DEBUG_REQ(D_HA, req, "restoring transno "LPD64"/status %d",
- lcd->lcd_last_transno, lcd->lcd_last_result);
-
- if (lustre_msg_get_opc(req->rq_reqmsg) == MDS_CLOSE ||
- lustre_msg_get_opc(req->rq_repmsg) == MDS_DONE_WRITING) {
- req->rq_transno = lcd->lcd_last_close_transno;
- req->rq_status = lcd->lcd_last_close_result;
- } else {
- req->rq_transno = lcd->lcd_last_transno;
- req->rq_status = lcd->lcd_last_result;
- mdt_vbr_reconstruct(req, lcd);
- }
- if (req->rq_status != 0)
- req->rq_transno = 0;
- lustre_msg_set_transno(req->rq_repmsg, req->rq_transno);
- lustre_msg_set_status(req->rq_repmsg, req->rq_status);
- DEBUG_REQ(D_RPCTRACE, req, "restoring transno "LPD64"/status %d",
- req->rq_transno, req->rq_status);
-
- mdt_steal_ack_locks(req);
+ struct lsd_reply_data *lrd;
+
+ LASSERT(trd != NULL);
+ lrd = &trd->trd_reply;
+
+ DEBUG_REQ(D_HA, req, "restoring transno %lld/status %d",
+ lrd->lrd_transno, lrd->lrd_result);
+
+ req->rq_transno = lrd->lrd_transno;
+ req->rq_status = lrd->lrd_result;
+
+ lustre_msg_set_versions(req->rq_repmsg, trd->trd_pre_versions);
+
+ if (req->rq_status != 0)
+ req->rq_transno = 0;
+ lustre_msg_set_transno(req->rq_repmsg, req->rq_transno);
+ lustre_msg_set_status(req->rq_repmsg, req->rq_status);
+
+ DEBUG_REQ(D_RPCTRACE, req, "restoring transno %lld/status %d",
+ req->rq_transno, req->rq_status);
+
+ mdt_steal_ack_locks(req);
+
+ return lrd->lrd_data;