From 2d594879dd55133ee0403c3134b4ef2397615897 Mon Sep 17 00:00:00 2001 From: shadow <shadow> Date: Fri, 24 Oct 2008 05:03:41 +0000 Subject: [PATCH] Kill extra argument for llog_connect, and don't access to ld_tgt_count without protection. Branch HEAD b=16693 i=umka i=tappro --- lustre/include/lustre_log.h | 10 +++++----- lustre/lov/lov_log.c | 8 ++++---- lustre/mds/mds_log.c | 4 ++-- lustre/mds/mds_lov.c | 3 +-- lustre/obdfilter/filter.c | 2 +- lustre/ptlrpc/llog_net.c | 6 +++--- lustre/ptlrpc/recov_thread.c | 2 +- 7 files changed, 17 insertions(+), 18 deletions(-) diff --git a/lustre/include/lustre_log.h b/lustre/include/lustre_log.h index 9f6972abbb..3140d5b147 100644 --- a/lustre/include/lustre_log.h +++ b/lustre/include/lustre_log.h @@ -199,7 +199,7 @@ int llog_catalog_list(struct obd_device *obd, int count, /* llog_net.c */ int llog_initiator_connect(struct llog_ctxt *ctxt); int llog_receptor_accept(struct llog_ctxt *ctxt, struct obd_import *imp); -int llog_origin_connect(struct llog_ctxt *ctxt, int count, +int llog_origin_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid); int llog_handle_connect(struct ptlrpc_request *req); @@ -209,7 +209,7 @@ int llog_obd_repl_cancel(struct llog_ctxt *ctxt, struct lov_stripe_md *lsm, int count, struct llog_cookie *cookies, int flags); int llog_obd_repl_sync(struct llog_ctxt *ctxt, struct obd_export *exp); -int llog_obd_repl_connect(struct llog_ctxt *ctxt, int count, +int llog_obd_repl_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid); @@ -238,7 +238,7 @@ struct llog_operations { struct llog_cookie *logcookies, int numcookies); int (*lop_cancel)(struct llog_ctxt *ctxt, struct lov_stripe_md *lsm, int count, struct llog_cookie *cookies, int flags); - int (*lop_connect)(struct llog_ctxt *ctxt, int count, + int (*lop_connect)(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid); /* XXX add 2 more: commit callbacks and llog recovery functions */ @@ -621,7 +621,7 @@ static inline int llog_create(struct llog_ctxt *ctxt, struct llog_handle **res, RETURN(rc); } -static inline int llog_connect(struct llog_ctxt *ctxt, int count, +static inline int llog_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) { @@ -635,7 +635,7 @@ static inline int llog_connect(struct llog_ctxt *ctxt, int count, if (lop->lop_connect == NULL) RETURN(-EOPNOTSUPP); - rc = lop->lop_connect(ctxt, count, logid, gen, uuid); + rc = lop->lop_connect(ctxt, logid, gen, uuid); RETURN(rc); } diff --git a/lustre/lov/lov_log.c b/lustre/lov/lov_log.c index 7a5923e084..ea45e847ca 100644 --- a/lustre/lov/lov_log.c +++ b/lustre/lov/lov_log.c @@ -116,7 +116,7 @@ static int lov_llog_origin_add(struct llog_ctxt *ctxt, struct llog_rec_hdr *rec, RETURN(rc); } -static int lov_llog_origin_connect(struct llog_ctxt *ctxt, int count, +static int lov_llog_origin_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) @@ -127,7 +127,7 @@ static int lov_llog_origin_connect(struct llog_ctxt *ctxt, int count, ENTRY; lov_getref(obd); - for (i = 0; i < count; i++) { + for (i = 0; i < lov->desc.ld_tgt_count; i++) { struct obd_device *child; struct llog_ctxt *cctxt; @@ -135,10 +135,10 @@ static int lov_llog_origin_connect(struct llog_ctxt *ctxt, int count, continue; if (uuid && !obd_uuid_equals(uuid, &lov->lov_tgts[i]->ltd_uuid)) continue; - CDEBUG(D_CONFIG, "connect %d/%d\n", i, count); + CDEBUG(D_CONFIG, "connect %d/%d\n", i, lov->desc.ld_tgt_count); child = lov->lov_tgts[i]->ltd_exp->exp_obd; cctxt = llog_get_context(child, ctxt->loc_idx); - rc = llog_connect(cctxt, 1, logid, gen, uuid); + rc = llog_connect(cctxt, logid, gen, uuid); llog_ctxt_put(cctxt); if (rc) { diff --git a/lustre/mds/mds_log.c b/lustre/mds/mds_log.c index 705d7300be..b582ae1f3f 100644 --- a/lustre/mds/mds_log.c +++ b/lustre/mds/mds_log.c @@ -72,7 +72,7 @@ static int mds_llog_origin_add(struct llog_ctxt *ctxt, struct llog_rec_hdr *rec, RETURN(rc); } -static int mds_llog_origin_connect(struct llog_ctxt *ctxt, int count, +static int mds_llog_origin_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) @@ -84,7 +84,7 @@ static int mds_llog_origin_connect(struct llog_ctxt *ctxt, int count, ENTRY; lctxt = llog_get_context(lov_obd, ctxt->loc_idx); - rc = llog_connect(lctxt, count, logid, gen, uuid); + rc = llog_connect(lctxt, logid, gen, uuid); llog_ctxt_put(lctxt); RETURN(rc); } diff --git a/lustre/mds/mds_lov.c b/lustre/mds/mds_lov.c index 636c4302f0..bd9295ab1a 100644 --- a/lustre/mds/mds_lov.c +++ b/lustre/mds/mds_lov.c @@ -650,8 +650,7 @@ static int __mds_lov_synchronize(void *data) GOTO(out, rc = -ENODEV); OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_LLOG_SYNC_TIMEOUT, 60); - rc = llog_connect(ctxt, obd->u.mds.mds_lov_desc.ld_tgt_count, - NULL, NULL, uuid); + rc = llog_connect(ctxt, NULL, NULL, uuid); llog_ctxt_put(ctxt); if (rc != 0) { CERROR("%s failed at llog_origin_connect: %d\n", diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index 03cd85aba6..9c346bfe3e 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -2458,7 +2458,7 @@ static int filter_llog_connect(struct obd_export *exp, obd->obd_name, body->lgdc_logid.lgl_oid, body->lgdc_logid.lgl_ogr, body->lgdc_logid.lgl_ogen); - rc = llog_connect(ctxt, 1, &body->lgdc_logid, + rc = llog_connect(ctxt, &body->lgdc_logid, &body->lgdc_gen, NULL); llog_ctxt_put(ctxt); if (rc != 0) diff --git a/lustre/ptlrpc/llog_net.c b/lustre/ptlrpc/llog_net.c index 351661b5e2..79d2f039c2 100644 --- a/lustre/ptlrpc/llog_net.c +++ b/lustre/ptlrpc/llog_net.c @@ -62,7 +62,7 @@ #include <lvfs.h> #ifdef __KERNEL__ -int llog_origin_connect(struct llog_ctxt *ctxt, int count, +int llog_origin_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) { @@ -123,7 +123,7 @@ int llog_handle_connect(struct ptlrpc_request *req) req_body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_CONN_BODY); ctxt = llog_get_context(obd, req_body->lgdc_ctxt_idx); - rc = llog_connect(ctxt, 1, &req_body->lgdc_logid, + rc = llog_connect(ctxt, &req_body->lgdc_logid, &req_body->lgdc_gen, NULL); llog_ctxt_put(ctxt); @@ -155,7 +155,7 @@ EXPORT_SYMBOL(llog_receptor_accept); #else /* !__KERNEL__ */ -int llog_origin_connect(struct llog_ctxt *ctxt, int count, +int llog_origin_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) { diff --git a/lustre/ptlrpc/recov_thread.c b/lustre/ptlrpc/recov_thread.c index 716866c470..01918db0e1 100644 --- a/lustre/ptlrpc/recov_thread.c +++ b/lustre/ptlrpc/recov_thread.c @@ -500,7 +500,7 @@ static int llog_recov_thread_replay(struct llog_ctxt *ctxt, RETURN(rc); } -int llog_obd_repl_connect(struct llog_ctxt *ctxt, int count, +int llog_obd_repl_connect(struct llog_ctxt *ctxt, struct llog_logid *logid, struct llog_gen *gen, struct obd_uuid *uuid) { -- GitLab