Whamcloud - gitweb
Branch b_new_cmd
authorvitaly <vitaly>
Tue, 24 Oct 2006 20:44:41 +0000 (20:44 +0000)
committervitaly <vitaly>
Tue, 24 Oct 2006 20:44:41 +0000 (20:44 +0000)
do not take credits for unlinking directories.

lustre/mdd/mdd_dir.c
lustre/mdd/mdd_internal.h
lustre/mdd/mdd_object.c
lustre/mdd/mdd_trans.c

index e79a68f..310d1ed 100644 (file)
@@ -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);
 
index aa54b73..6dc99b6 100644 (file)
@@ -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,
index 50d6071..c3ce13b 100644 (file)
@@ -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);
 
index 54a3065..6d89e6c 100644 (file)
@@ -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);