X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlrpc%2Fllog_net.c;h=17be7dd79fa8f748379b71ec028ed71844d2f5e5;hb=ff17cc7e0282d9b1522810e0c5d12171c4d46a2d;hp=1dd2f9a694c540383609331cc4b2c9e1c2723b29;hpb=c5050e412572b00cbe93d8517d2d1f767bebfa92;p=fs%2Flustre-release.git diff --git a/lustre/ptlrpc/llog_net.c b/lustre/ptlrpc/llog_net.c index 1dd2f9a..17be7dd 100644 --- a/lustre/ptlrpc/llog_net.c +++ b/lustre/ptlrpc/llog_net.c @@ -45,9 +45,10 @@ #ifdef __KERNEL__ int llog_origin_connect(struct llog_ctxt *ctxt, int count, - struct llog_logid *logid, - struct llog_ctxt_gen *gen) + struct llog_logid *logid, struct llog_gen *gen, + struct obd_uuid *uuid) { + struct llog_gen_rec *lgr; struct obd_import *imp; struct ptlrpc_request *request; struct llogd_conn_body *req_body; @@ -55,11 +56,31 @@ int llog_origin_connect(struct llog_ctxt *ctxt, int count, int rc; ENTRY; + if (list_empty(&ctxt->loc_handle->u.chd.chd_head)) { + CDEBUG(D_HA, "there is no record related to ctxt %p\n", ctxt); + RETURN(0); + } + + /* FIXME what value for gen->conn_cnt */ + LLOG_GEN_INC(ctxt->loc_gen); + + /* first add llog_gen_rec */ + OBD_ALLOC(lgr, sizeof(*lgr)); + if (!lgr) + RETURN(-ENOMEM); + lgr->lgr_hdr.lrh_len = lgr->lgr_tail.lrt_len = sizeof(*lgr); + lgr->lgr_hdr.lrh_type = LLOG_GEN_REC; + lgr->lgr_gen = ctxt->loc_gen; + rc = llog_add(ctxt, &lgr->lgr_hdr, NULL, NULL, 1); + OBD_FREE(lgr, sizeof(*lgr)); + if (rc != 1) + RETURN(rc); + LASSERT(ctxt->loc_imp); imp = ctxt->loc_imp; request = ptlrpc_prep_req(imp, LLOG_ORIGIN_CONNECT, 1, &size, NULL); - if (!request) + if (!request) RETURN(-ENOMEM); req_body = lustre_msg_buf(request->rq_reqmsg, 0, sizeof(*req_body)); @@ -87,9 +108,9 @@ int llog_handle_connect(struct ptlrpc_request *req) req_body = lustre_msg_buf(req->rq_reqmsg, 0, sizeof(*req_body)); ctxt = llog_get_context(obd, req_body->lgdc_ctxt_idx); - rc = llog_connect(ctxt, 1, &req_body->lgdc_logid, - &req_body->lgdc_gen); - if (rc != 0) + rc = llog_connect(ctxt, 1, &req_body->lgdc_logid, + &req_body->lgdc_gen, NULL); + if (rc != 0) CERROR("failed at llog_relp_connect\n"); RETURN(rc); @@ -117,8 +138,7 @@ EXPORT_SYMBOL(llog_initiator_connect); #else /* !__KERNEL__ */ int llog_origin_connect(struct llog_ctxt *ctxt, int count, - struct llog_logid *logid, - struct llog_ctxt_gen *gen) + struct llog_logid *logid, struct llog_gen *gen) { return 0; }