From 3851059dcb71b58a99787eb6937cbb697bf3497a Mon Sep 17 00:00:00 2001 From: wangdi Date: Sun, 22 Oct 2006 04:08:07 +0000 Subject: [PATCH] Branch: b_new_cmd correct handling mdd pdir locks in mdd_rename --- lustre/mdd/mdd_dir.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index b049243..d1d6fe0 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -1323,7 +1323,7 @@ static int mdd_rename(const struct lu_env *env, if (mdd_name2hash(sname) != mdd_name2hash(tname)) tdlh = mdd_pdo_write_lock(env, mdd_tpobj, tname); else - tdlh = NULL; + tdlh = sdlh; } else if (rc == MDD_RN_SRCTGT) { sdlh = mdd_pdo_write_lock(env, mdd_spobj, sname); tdlh = mdd_pdo_write_lock(env, mdd_tpobj, tname); @@ -1398,10 +1398,10 @@ static int mdd_rename(const struct lu_env *env, } cleanup: + if (likely(tdlh) && sdlh != tdlh) + mdd_pdo_write_unlock(env, mdd_tpobj, tdlh); if (likely(sdlh)) mdd_pdo_write_unlock(env, mdd_spobj, sdlh); - if (tdlh) - mdd_pdo_write_unlock(env, mdd_tpobj, tdlh); cleanup_unlocked: mdd_trans_stop(env, mdd, rc, handle); if (mdd_sobj) -- 1.8.3.1