static inline int out_check_resent(const struct lu_env *env, struct dt_device *dt, struct dt_object *obj, struct ptlrpc_request *req, out_reconstruct_t reconstruct, struct object_update_reply *reply, int index) { if (likely(!(lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT))) return 0; if (req_xid_is_last(req)) { struct lsd_client_data *lcd; /* XXX this does not support mulitple transactions yet, i.e. * only 1 update RPC each time betwee MDTs */ lcd = req->rq_export->exp_target_data.ted_lcd; req->rq_transno = lcd->lcd_last_transno; req->rq_status = lcd->lcd_last_result; 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); reconstruct(env, dt, obj, reply, index); return 1; } DEBUG_REQ(D_HA, req, "no reply for RESENT req (have "LPD64")", req->rq_export->exp_target_data.ted_lcd->lcd_last_xid); return 0; }
static inline int out_check_resent(const struct lu_env *env, struct dt_device *dt, struct dt_object *obj, struct ptlrpc_request *req, out_reconstruct_t reconstruct, struct update_reply *reply, int index) { if (likely(!(lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT))) return 0; if (req_xid_is_last(req)) { reconstruct(env, dt, obj, reply, index); return 1; } DEBUG_REQ(D_HA, req, "no reply for RESENT req (have "LPD64")", req->rq_export->exp_target_data.ted_lcd->lcd_last_xid); return 0; }