From: yury Date: Thu, 26 Oct 2006 10:28:40 +0000 (+0000) Subject: - debug message in split code. Cleanups. X-Git-Tag: v1_8_0_110~486^2~337 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=4dc2aef8bca2e5d652886a87b5032ff7ad6cfbfb;p=fs%2Flustre-release.git - debug message in split code. Cleanups. - use less controversial MDL -> DLM locks converting style. --- diff --git a/lustre/cmm/cmm_object.c b/lustre/cmm/cmm_object.c index df7033a..e913acf 100644 --- a/lustre/cmm/cmm_object.c +++ b/lustre/cmm/cmm_object.c @@ -375,10 +375,11 @@ static int cml_lookup(const struct lu_env *env, struct md_object *mo_p, static mdl_mode_t cml_lock_mode(const struct lu_env *env, struct md_object *mo, mdl_mode_t lm) { -#if defined(HAVE_SPLIT_SUPPORT) +#ifdef HAVE_SPLIT_SUPPORT struct md_attr *ma = &cmm_env_info(env)->cmi_ma; int rc, split; ENTRY; + memset(ma, 0, sizeof(*ma)); /* @@ -392,8 +393,11 @@ static mdl_mode_t cml_lock_mode(const struct lu_env *env, RETURN(MDL_MINMODE); } - if (lm == MDL_PW && split == CMM_EXPECT_SPLIT) + if (lm == MDL_PW && split == CMM_EXPECT_SPLIT) { + CDEBUG(D_INFO|D_WARNING, "Going to split "DFID"\n", + PFID(lu_object_fid(&mo->mo_lu))); RETURN(MDL_EX); + } RETURN(MDL_MINMODE); #endif return MDL_MINMODE; diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index bf4e8fd..20e8a8a 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -156,45 +156,37 @@ void mdt_set_disposition(struct mdt_thread_info *info, } static mdl_mode_t mdt_mdl_lock_modes[] = { - [0] = MDL_MINMODE, - [1] = MDL_EX, - [2] = MDL_PW, - [3] = MDL_PR, - [4] = MDL_CW, - [5] = MDL_CR, - [6] = MDL_NL, - [7] = MDL_GROUP + [LCK_MINMODE] = MDL_MINMODE, + [LCK_EX] = MDL_EX, + [LCK_PW] = MDL_PW, + [LCK_PR] = MDL_PR, + [LCK_CW] = MDL_CW, + [LCK_CR] = MDL_CR, + [LCK_NL] = MDL_NL, + [LCK_GROUP] = MDL_GROUP }; static ldlm_mode_t mdt_ldlm_lock_modes[] = { - [0] = LCK_MINMODE, - [1] = LCK_EX, - [2] = LCK_PW, - [3] = LCK_PR, - [4] = LCK_CW, - [5] = LCK_CR, - [6] = LCK_NL, - [7] = LCK_GROUP + [MDL_MINMODE] = LCK_MINMODE, + [MDL_EX] = LCK_EX, + [MDL_PW] = LCK_PW, + [MDL_PR] = LCK_PR, + [MDL_CW] = LCK_CW, + [MDL_CR] = LCK_CR, + [MDL_NL] = LCK_NL, + [MDL_GROUP] = LCK_GROUP }; static inline mdl_mode_t mdt_ldlm_mode2mdl_mode(ldlm_mode_t mode) { - int idx = ffs((int)mode); - - LASSERT(idx >= 0); LASSERT(IS_PO2(mode)); - LASSERT(idx < ARRAY_SIZE(mdt_mdl_lock_modes)); - return mdt_mdl_lock_modes[idx]; + return mdt_mdl_lock_modes[mode]; } static inline ldlm_mode_t mdt_mdl_mode2ldlm_mode(mdl_mode_t mode) { - int idx = ffs((int)mode); - - LASSERT(idx >= 0); LASSERT(IS_PO2(mode)); - LASSERT(idx < ARRAY_SIZE(mdt_ldlm_lock_modes)); - return mdt_ldlm_lock_modes[idx]; + return mdt_ldlm_lock_modes[mode]; } void mdt_lock_reg_init(struct mdt_lock_handle *lh, ldlm_mode_t lm) @@ -256,8 +248,11 @@ static ldlm_mode_t mdt_lock_pdo_mode(struct mdt_thread_info *info, mode = mdo_lock_mode(info->mti_env, mdt_object_child(o), mdt_ldlm_mode2mdl_mode(lm)); } else { - /* Default locks for non-existing objects. */ - mode = MDL_MINMODE; + /* + * No pdo locks possible on not existing objects, because pdo + * lock is taken on parent dir and it can't absent. + */ + LBUG(); } if (mode != MDL_MINMODE) {