From 849cfb5c578d16dbf8c58d880c4b772f44c02e6e Mon Sep 17 00:00:00 2001 From: nikita Date: Sun, 15 Oct 2006 02:12:33 +0000 Subject: [PATCH] mdt: mdt_thread_info_init(): do not zero out whole struct mdt_thread_info: that is too expensive. --- lustre/mdt/mdt_handler.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index a42ac40..758e506 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -1503,7 +1503,7 @@ static int mdt_body_unpack(struct mdt_thread_info *info, __u32 flags) if ((flags & HABEO_CORPUS) && !mdt_object_exists(obj)) { mdt_object_put(env, obj); - /* for capability renew ENOENT will be handled in + /* for capability renew ENOENT will be handled in * mdt_renew_capa */ if (body->valid & OBD_MD_FLOSSCAPA) rc = 0; @@ -1720,13 +1720,17 @@ void mdt_lock_handle_fini(struct mdt_lock_handle *lh) LASSERT(!lustre_handle_is_used(&lh->mlh_lh)); } +/* + * Initialize fields of struct mdt_thread_info. Other fields are left in + * uninitialized state, because it's too expensive to zero out whole + * mdt_thread_info (> 1K) on each request arrival. + */ static void mdt_thread_info_init(struct ptlrpc_request *req, struct mdt_thread_info *info) { int i; LASSERT(info->mti_env != req->rq_svc_thread->t_env); - memset(info, 0, sizeof(*info)); info->mti_rep_buf_nr = ARRAY_SIZE(info->mti_rep_buf_size); for (i = 0; i < ARRAY_SIZE(info->mti_rep_buf_size); i++) @@ -1744,6 +1748,7 @@ static void mdt_thread_info_init(struct ptlrpc_request *req, info->mti_mdt = mdt_dev(req->rq_export->exp_obd->obd_lu_dev); req_capsule_init(&info->mti_pill, req, RCL_SERVER, info->mti_rep_buf_size); + memset(&info->mti_attr, 0, sizeof info->mti_attr); } static void mdt_thread_info_fini(struct mdt_thread_info *info) -- 1.8.3.1