From: yury Date: Tue, 14 Nov 2006 17:39:19 +0000 (+0000) Subject: - added more stats to mdt operations; X-Git-Tag: v1_8_0_110~486^2~168 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=52afc4212bae0d380cd336de14e37310ec0224b8;p=fs%2Flustre-release.git - added more stats to mdt operations; - fixes in modules load order. --- diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 58bf8da..b1db8e0 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -601,6 +601,9 @@ static int mdt_getattr(struct mdt_thread_info *info) int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_GETATTR); + reqbody = req_capsule_client_get(pill, &RMF_MDT_BODY); LASSERT(reqbody); @@ -610,7 +613,7 @@ static int mdt_getattr(struct mdt_thread_info *info) RETURN(err_serious(rc)); rc = mdt_renew_capa(info); mdt_shrink_reply(info, REPLY_REC_OFF + 1, 0, 0); - RETURN(rc); + GOTO(out, rc); } LASSERT(obj != NULL); @@ -628,7 +631,7 @@ static int mdt_getattr(struct mdt_thread_info *info) rc = req_capsule_pack(pill); if (rc != 0) - RETURN(err_serious(rc)); + GOTO(out, rc = err_serious(rc)); repbody = req_capsule_server_get(pill, &RMF_MDT_BODY); LASSERT(repbody != NULL); @@ -640,7 +643,7 @@ static int mdt_getattr(struct mdt_thread_info *info) else rc = mdt_check_ucred(info); if (rc) - GOTO(out, rc); + GOTO(out_shrink, rc); info->mti_spec.sp_ck_split = !!(reqbody->valid & OBD_MD_FLCKSPLIT); info->mti_cross_ref = !!(reqbody->valid & OBD_MD_FLCROSSREF); @@ -654,8 +657,11 @@ static int mdt_getattr(struct mdt_thread_info *info) if (reqbody->valid & OBD_MD_FLRMTPERM) mdt_exit_ucred(info); EXIT; -out: +out_shrink: mdt_shrink_reply(info, REPLY_REC_OFF + 1, 1, 0); +out: + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_GETATTR); return rc; } @@ -922,6 +928,9 @@ static int mdt_getattr_name(struct mdt_thread_info *info) int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_GETATTR_NAME); + reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY); LASSERT(reqbody != NULL); repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY); @@ -945,6 +954,8 @@ static int mdt_getattr_name(struct mdt_thread_info *info) EXIT; out: mdt_shrink_reply(info, REPLY_REC_OFF + 1, 1, 0); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_GETATTR_NAME); return rc; } @@ -2526,6 +2537,9 @@ static int mdt_intent_getattr(enum mdt_it_code opcode, int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_INTENT_GETATTR); + reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY); LASSERT(reqbody); @@ -2577,6 +2591,8 @@ out_ucred: mdt_exit_ucred(info); out: mdt_shrink_reply(info, DLM_REPLY_REC_OFF + 1, 1, 0); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_INTENT_GETATTR); return rc; } @@ -2597,14 +2613,17 @@ static int mdt_intent_reint(enum mdt_it_code opcode, ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_INTENT_REINT); + opc = mdt_reint_opcode(info, intent_fmts); if (opc < 0) - RETURN(opc); + GOTO(out, rc = opc); if (mdt_it_flavor[opcode].it_reint != opc) { CERROR("Reint code %ld doesn't match intent: %d\n", opc, opcode); - RETURN(err_serious(-EPROTO)); + GOTO(out, rc = err_serious(-EPROTO)); } /* Get lock from request for possible resent case. */ @@ -2616,22 +2635,28 @@ static int mdt_intent_reint(enum mdt_it_code opcode, if (mdt_info_req(info)->rq_repmsg != NULL) rep = req_capsule_server_get(&info->mti_pill, &RMF_DLM_REP); if (rep == NULL) - RETURN(err_serious(-EFAULT)); + GOTO(out, rc = err_serious(-EFAULT)); /* MDC expects this in any case */ if (rc != 0) mdt_set_disposition(info, rep, DISP_LOOKUP_EXECD); - /* cross-ref case, the lock should be returned to the client */ + /* Cross-ref case, the lock should be returned to the client */ if (rc == -EREMOTE) { LASSERT(lustre_handle_is_used(&lhc->mlh_reg_lh)); rep->lock_policy_res2 = 0; - RETURN(mdt_intent_lock_replace(info, lockp, NULL, lhc, flags)); + rc = mdt_intent_lock_replace(info, lockp, NULL, lhc, flags); + GOTO(out, rc); } rep->lock_policy_res2 = clear_serious(rc); lhc->mlh_reg_lh.cookie = 0ull; - RETURN(ELDLM_LOCK_ABORTED); + rc = ELDLM_LOCK_ABORTED; + EXIT; +out: + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_INTENT_REINT); + return rc; } static int mdt_intent_code(long itcode) diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 7cdf67e..e27fc96 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -728,10 +728,12 @@ int mdt_reint_open(struct mdt_thread_info *info, struct mdt_lock_handle *lhc) int created = 0; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_OPEN); + OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_PAUSE_OPEN | OBD_FAIL_ONCE, (obd_timeout + 1) / 4); - mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, LPROC_MDT_REINT_OPEN); repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY); ma->ma_lmm = req_capsule_server_get(&info->mti_pill, &RMF_MDT_MD); diff --git a/lustre/mdt/mdt_reint.c b/lustre/mdt/mdt_reint.c index 13af10c..2ad6f41 100644 --- a/lustre/mdt/mdt_reint.c +++ b/lustre/mdt/mdt_reint.c @@ -220,26 +220,28 @@ static int mdt_reint_setattr(struct mdt_thread_info *info, struct md_object *next; struct mdt_body *repbody; int rc; - ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_SETATTR); + DEBUG_REQ(D_INODE, req, "setattr "DFID" %x", PFID(rr->rr_fid1), (unsigned int)ma->ma_attr.la_valid); repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY); mo = mdt_object_find(info->mti_env, info->mti_mdt, rr->rr_fid1); if (IS_ERR(mo)) - RETURN(rc = PTR_ERR(mo)); + GOTO(out, rc = PTR_ERR(mo)); if (info->mti_epoch && (info->mti_epoch->flags & MF_EPOCH_OPEN)) { /* Truncate case. */ rc = mdt_write_get(info->mti_mdt, mo); if (rc) - GOTO(out, rc); + GOTO(out_put, rc); mfd = mdt_mfd_new(); if (mfd == NULL) - GOTO(out, rc = -ENOMEM); + GOTO(out_put, rc = -ENOMEM); mdt_epoch_open(info, mo); repbody->ioepoch = mo->mot_ioepoch; @@ -257,7 +259,7 @@ static int mdt_reint_setattr(struct mdt_thread_info *info, rc = mdt_attr_set(info, mo, rr->rr_flags); if (rc) - GOTO(out, rc); + GOTO(out_put, rc); if (info->mti_epoch && (info->mti_epoch->flags & MF_SOM_CHANGE)) { LASSERT(info->mti_epoch); @@ -271,7 +273,7 @@ static int mdt_reint_setattr(struct mdt_thread_info *info, "fid = "DFID": cookie = "LPX64"\n", PFID(info->mti_rr.rr_fid1), info->mti_epoch->handle.cookie); - GOTO(out, rc = -ESTALE); + GOTO(out_put, rc = -ESTALE); } LASSERT(mfd->mfd_mode == FMODE_SOM); @@ -289,7 +291,7 @@ static int mdt_reint_setattr(struct mdt_thread_info *info, next = mdt_object_child(mo); rc = mo_attr_get(info->mti_env, next, ma); if (rc != 0) - GOTO(out, rc); + GOTO(out_put, rc); mdt_pack_attr2body(info, repbody, &ma->ma_attr, mdt_object_fid(mo)); @@ -303,13 +305,16 @@ static int mdt_reint_setattr(struct mdt_thread_info *info, capa->lc_opc = CAPA_OPC_OSS_DEFAULT | CAPA_OPC_OSS_TRUNC; rc = mo_capa_get(info->mti_env, mdt_object_child(mo), capa, 0); if (rc) - GOTO(out, rc); + GOTO(out_put, rc); repbody->valid |= OBD_MD_FLOSSCAPA; } EXIT; -out: +out_put: mdt_object_put(info->mti_env, mo); +out: + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_SETATTR); return rc; } @@ -323,7 +328,7 @@ static int mdt_reint_create(struct mdt_thread_info *info, LPROC_MDT_REINT_CREATE); if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_CREATE)) - RETURN(err_serious(-ESTALE)); + GOTO(out, rc = err_serious(-ESTALE)); switch (info->mti_attr.ma_attr.la_mode & S_IFMT) { case S_IFDIR:{ @@ -347,9 +352,11 @@ static int mdt_reint_create(struct mdt_thread_info *info, default: rc = err_serious(-EOPNOTSUPP); } + EXIT; +out: mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, LPROC_MDT_REINT_CREATE); - RETURN(rc); + return rc; } static int mdt_reint_unlink(struct mdt_thread_info *info, @@ -366,6 +373,9 @@ static int mdt_reint_unlink(struct mdt_thread_info *info, int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_UNLINK); + DEBUG_REQ(D_INODE, req, "unlink "DFID"/%s\n", PFID(rr->rr_fid1), rr->rr_name); @@ -453,6 +463,8 @@ out_unlock_parent: mdt_object_unlock_put(info, mp, parent_lh, rc); out: mdt_shrink_reply(info, REPLY_REC_OFF + 1, 0, 0); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_UNLINK); return rc; } @@ -469,11 +481,14 @@ static int mdt_reint_link(struct mdt_thread_info *info, int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_LINK); + DEBUG_REQ(D_INODE, req, "link "DFID" to "DFID"/%s", PFID(rr->rr_fid1), PFID(rr->rr_fid2), rr->rr_name); if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK)) - RETURN(err_serious(-ENOENT)); + GOTO(out, rc = err_serious(-ENOENT)); if (info->mti_cross_ref) { /* MDT holding name ask us to add ref. */ @@ -482,18 +497,20 @@ static int mdt_reint_link(struct mdt_thread_info *info, ms = mdt_object_find_lock(info, rr->rr_fid1, lhs, MDS_INODELOCK_UPDATE); if (IS_ERR(ms)) - RETURN(PTR_ERR(ms)); + GOTO(out, rc = PTR_ERR(ms)); mdt_set_capainfo(info, 0, rr->rr_fid1, BYPASS_CAPA); rc = mo_ref_add(info->mti_env, mdt_object_child(ms)); mdt_object_unlock_put(info, ms, lhs, rc); - RETURN(rc); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_LINK); + GOTO(out, rc); } /* Invalid case so return error immediately instead of * processing it */ if (lu_fid_eq(rr->rr_fid1, rr->rr_fid2)) - RETURN(-EPERM); + GOTO(out, rc = -EPERM); /* step 1: find & lock the target parent dir */ lhp = &info->mti_lh[MDT_LH_PARENT]; @@ -502,7 +519,7 @@ static int mdt_reint_link(struct mdt_thread_info *info, mp = mdt_object_find_lock(info, rr->rr_fid2, lhp, MDS_INODELOCK_UPDATE); if (IS_ERR(mp)) - RETURN(PTR_ERR(mp)); + GOTO(out, rc = PTR_ERR(mp)); /* step 2: find & lock the source */ lhs = &info->mti_lh[MDT_LH_CHILD]; @@ -530,6 +547,9 @@ static int mdt_reint_link(struct mdt_thread_info *info, mdt_object_unlock_put(info, ms, lhs, rc); out_unlock_parent: mdt_object_unlock_put(info, mp, lhp, rc); +out: + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_LINK); return rc; } @@ -711,8 +731,13 @@ static int mdt_reint_rename(struct mdt_thread_info *info, int rc; ENTRY; + mdt_lprocfs_time_start(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_RENAME); + if (info->mti_cross_ref) { rc = mdt_reint_rename_tgt(info); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_RENAME); RETURN(rc); } @@ -860,6 +885,8 @@ out_rename_lock: mdt_rename_unlock(&rename_lh); out: mdt_shrink_reply(info, REPLY_REC_OFF + 1, 0, 0); + mdt_lprocfs_time_end(info->mti_mdt, &info->mti_time, + LPROC_MDT_REINT_RENAME); return rc; } diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 2df57c8..02eeb20 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -114,14 +114,15 @@ load_modules() { load_module ../lnet/lnet/lnet $LNETOPTS LNETLND=${LNETLND:-"socklnd/ksocklnd"} load_module ../lnet/klnds/$LNETLND + load_module ldiskfs/ldiskfs load_module lvfs/lvfs + load_module lvfs/fsfilt_ldiskfs load_module obdclass/obdclass load_module ptlrpc/ptlrpc load_module ptlrpc/gss/ptlrpc_gss load_module fid/fid load_module fld/fld load_module lmv/lmv - load_module quota/lquota load_module mdc/mdc load_module osc/osc load_module lov/lov @@ -129,8 +130,6 @@ load_modules() { load_module mdd/mdd load_module mdt/mdt load_module cmm/cmm - load_module ldiskfs/ldiskfs - load_module lvfs/fsfilt_ldiskfs load_module osd/osd load_module ost/ost load_module obdfilter/obdfilter