GOTO(out, rc);
if (mdd_is_root(mdd, pfid))
GOTO(out, rc = 0);
+ if (lu_fid_eq(pfid, &mdd->mdd_local_root_fid))
+ GOTO(out, rc = 0);
if (lu_fid_eq(pfid, lf))
GOTO(out, rc = 1);
if (parent)
if (rc)
RETURN(rc);
+ if (likely(mdd_cobj != NULL)) {
+ /* fetch cattr */
+ rc = mdd_la_get(env, mdd_cobj, cattr, BYPASS_CAPA);
+ if (rc)
+ RETURN(rc);
+
+ is_dir = S_ISDIR(cattr->la_mode);
+ }
+
+ rc = mdd_unlink_sanity_check(env, mdd_pobj, pattr, mdd_cobj, cattr);
+ if (rc)
+ RETURN(rc);
+
handle = mdd_trans_create(env, mdd);
if (IS_ERR(handle))
RETURN(PTR_ERR(handle));
if (rc)
GOTO(stop, rc);
- if (likely(mdd_cobj != NULL)) {
+ if (likely(mdd_cobj != NULL))
mdd_write_lock(env, mdd_cobj, MOR_TGT_CHILD);
- /* fetch cattr */
- rc = mdd_la_get(env, mdd_cobj, cattr, BYPASS_CAPA);
- if (rc)
- GOTO(cleanup, rc);
-
- is_dir = S_ISDIR(cattr->la_mode);
- }
-
- rc = mdd_unlink_sanity_check(env, mdd_pobj, pattr, mdd_cobj, cattr);
- if (rc)
- GOTO(cleanup, rc);
-
if (likely(no_name == 0)) {
rc = __mdd_index_delete(env, mdd_pobj, name, is_dir, handle,
mdd_object_capa(env, mdd_pobj));