X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_dir.c;h=2f69cc7a10f482e4ae485bd38cd3d4fb21b0166a;hp=a81de6402a30a774b56ff89ea9dc0a939e4b1afc;hb=bd7a2f9938a7edf09afd133601ca4181e109a7d0;hpb=3bca0973cca3d50f9f0b1b3e22fcc5d82a40d5fe diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index a81de64..2f69cc7 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -1739,17 +1739,17 @@ static int mdd_unlink(const struct lu_env *env, struct md_object *pobj, if (IS_ERR(handle)) RETURN(PTR_ERR(handle)); - if (likely(mdd_cobj != NULL)) - mdd_write_lock(env, mdd_cobj, DT_TGT_CHILD); - rc = mdd_declare_unlink(env, mdd, mdd_pobj, mdd_cobj, lname, ma, handle, no_name, is_dir); if (rc) - GOTO(cleanup, rc); + GOTO(stop, rc); rc = mdd_trans_start(env, mdd, handle); if (rc) - GOTO(cleanup, rc); + GOTO(stop, rc); + + if (likely(mdd_cobj != NULL)) + mdd_write_lock(env, mdd_cobj, DT_TGT_CHILD); if (likely(no_name == 0) && !OBD_FAIL_CHECK(OBD_FAIL_LFSCK_DANGLING2)) { rc = __mdd_index_delete(env, mdd_pobj, name, is_dir, handle); @@ -1840,6 +1840,7 @@ cleanup: lname, NULL, handle); } +stop: rc = mdd_trans_stop(env, mdd, rc, handle); return rc;