From 795b7a001b2faf7da7e75493a002ba185e90362c Mon Sep 17 00:00:00 2001 From: vitaly Date: Tue, 24 Oct 2006 20:44:41 +0000 Subject: [PATCH] Branch b_new_cmd do not take credits for unlinking directories. --- lustre/mdd/mdd_dir.c | 2 +- lustre/mdd/mdd_internal.h | 2 +- lustre/mdd/mdd_object.c | 2 +- lustre/mdd/mdd_trans.c | 9 ++++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index e79a68f..310d1ed 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -553,7 +553,7 @@ static int mdd_unlink(const struct lu_env *env, int rc, is_dir; ENTRY; - rc = mdd_log_txn_param_build(env, mdd_cobj, ma, MDD_TXN_UNLINK_OP); + rc = mdd_log_txn_param_build(env, cobj, ma, MDD_TXN_UNLINK_OP); if (rc) RETURN(rc); diff --git a/lustre/mdd/mdd_internal.h b/lustre/mdd/mdd_internal.h index aa54b73..6dc99b6 100644 --- a/lustre/mdd/mdd_internal.h +++ b/lustre/mdd/mdd_internal.h @@ -224,7 +224,7 @@ extern struct md_object_operations mdd_obj_ops; /* mdd_trans.c */ void mdd_txn_param_build(const struct lu_env *env, struct mdd_device *mdd, enum mdd_txn_op); -int mdd_log_txn_param_build(const struct lu_env *env, struct mdd_object *obj, +int mdd_log_txn_param_build(const struct lu_env *env, struct md_object *obj, struct md_attr *ma, enum mdd_txn_op); static inline void mdd_object_put(const struct lu_env *env, diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index 50d6071..c3ce13b 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -888,7 +888,7 @@ static int mdd_ref_del(const struct lu_env *env, struct md_object *obj, int rc; ENTRY; - rc = mdd_log_txn_param_build(env, mdd_obj, ma, MDD_TXN_UNLINK_OP); + rc = mdd_log_txn_param_build(env, obj, ma, MDD_TXN_UNLINK_OP); if (rc) RETURN(rc); diff --git a/lustre/mdd/mdd_trans.c b/lustre/mdd/mdd_trans.c index 54a3065..6d89e6c 100644 --- a/lustre/mdd/mdd_trans.c +++ b/lustre/mdd/mdd_trans.c @@ -75,17 +75,20 @@ void mdd_txn_param_build(const struct lu_env *env, struct mdd_device *mdd, mdd_env_info(env)->mti_param.tp_credits = mdd->mdd_tod[op].mod_credits; } -int mdd_log_txn_param_build(const struct lu_env *env, struct mdd_object *obj, +int mdd_log_txn_param_build(const struct lu_env *env, struct md_object *obj, struct md_attr *ma, enum mdd_txn_op op) { - struct mdd_device *mdd = mdo2mdd(&obj->mod_obj); + struct mdd_device *mdd = mdo2mdd(&md2mdd_obj(obj)->mod_obj); int rc, log_credits, stripe; ENTRY; + if (S_ISDIR(lu_object_attr(&obj->mo_lu))) + RETURN(0); + mdd_txn_param_build(env, mdd, op); LASSERT(op == MDD_TXN_UNLINK_OP || op == MDD_TXN_RENAME_OP); - rc = mdd_lmm_get_locked(env, obj, ma); + rc = mdd_lmm_get_locked(env, md2mdd_obj(obj), ma); if (rc || !(ma->ma_valid & MA_LOV)) RETURN(rc); -- 1.8.3.1