}
EXPORT_SYMBOL(llog_obd_repl_sync);
+static inline void stop_log_commit(struct llog_commit_master *lcm,
+ struct llog_commit_daemon *lcd,
+ int rc)
+{
+ CERROR("error preparing commit: rc %d\n", rc);
+
+ spin_lock(&lcm->lcm_llcd_lock);
+ list_splice(&lcd->lcd_llcd_list, &lcm->lcm_llcd_resend);
+ CFS_INIT_LIST_HEAD(&lcd->lcd_llcd_list);
+ spin_unlock(&lcm->lcm_llcd_lock);
+}
+
static int log_commit_thread(void *arg)
{
struct llog_commit_master *lcm = arg;
/* We are the only one manipulating our local list - no lock */
list_for_each_entry_safe(llcd,n, &lcd->lcd_llcd_list,llcd_list){
- int size[2] = { sizeof(struct ptlrpc_body),
- llcd->llcd_cookiebytes };
char *bufs[2] = { NULL, (char *)llcd->llcd_cookies };
list_del(&llcd->llcd_list);
OBD_FAIL_TIMEOUT(OBD_FAIL_PTLRPC_DELAY_RECOV, 10);
- request = ptlrpc_prep_req(import, LUSTRE_LOG_VERSION,
- OBD_LOG_CANCEL, 2, size,bufs);
+ request = ptlrpc_request_alloc(import, &RQF_LOG_CANCEL);
if (request == NULL) {
rc = -ENOMEM;
- CERROR("error preparing commit: rc %d\n", rc);
+ stop_log_commit(lcm, lcd, rc);
+ break;
+ }
+
+ req_capsule_set_size(&request->rq_pill, &RMF_LOGCOOKIES,
+ RCL_CLIENT,llcd->llcd_cookiebytes);
- spin_lock(&lcm->lcm_llcd_lock);
- list_splice(&lcd->lcd_llcd_list,
- &lcm->lcm_llcd_resend);
- CFS_INIT_LIST_HEAD(&lcd->lcd_llcd_list);
- spin_unlock(&lcm->lcm_llcd_lock);
+ rc = ptlrpc_request_bufs_pack(request,
+ LUSTRE_LOG_VERSION,
+ OBD_LOG_CANCEL, bufs,
+ NULL);
+ if (rc) {
+ ptlrpc_request_free(request);
+ stop_log_commit(lcm, lcd, rc);
break;
}
request->rq_request_portal = LDLM_CANCEL_REQUEST_PORTAL;
request->rq_reply_portal = LDLM_CANCEL_REPLY_PORTAL;
- ptlrpc_req_set_repsize(request, 1, NULL);
+ ptlrpc_request_set_replen(request);
mutex_down(&llcd->llcd_ctxt->loc_sem);
if (llcd->llcd_ctxt->loc_imp == NULL) {
mutex_up(&llcd->llcd_ctxt->loc_sem);