if (unlikely(!dt_try_as_dir(env, orphan)))
GOTO(stop, rc = -ENOTDIR);
+ rc = dt_declare_ref_add(env, orphan, th);
+ if (rc != 0)
+ GOTO(stop, rc);
+
rec->rec_type = S_IFDIR;
rec->rec_fid = cfid;
rc = dt_declare_insert(env, orphan, (const struct dt_rec *)rec,
rec->rec_fid = lfsck_dto2fid(parent);
rc = dt_declare_insert(env, orphan, (const struct dt_rec *)rec,
(const struct dt_key *)dotdot, th);
- if (rc == 0)
- rc = dt_declare_ref_add(env, orphan, th);
-
- if (rc != 0)
- GOTO(stop, rc);
-
- rc = dt_declare_ref_add(env, orphan, th);
if (rc != 0)
GOTO(stop, rc);
if (rc != 0)
GOTO(unlock2, rc);
+ rc = dt_ref_add(env, orphan, th);
+ if (rc != 0)
+ GOTO(unlock2, rc);
+
rec->rec_fid = cfid;
rc = dt_insert(env, orphan, (const struct dt_rec *)rec,
(const struct dt_key *)dot, th, 1);
if (rc != 0)
GOTO(unlock2, rc);
- rc = dt_ref_add(env, orphan, th);
- if (rc != 0)
- GOTO(unlock2, rc);
-
if (lmv != NULL) {
rc = dt_xattr_set(env, orphan, &lmv_buf, XATTR_NAME_LMV, 0, th);
if (rc != 0)
if (unlikely(!dt_try_as_dir(env, child)))
GOTO(stop, rc = -ENOTDIR);
- /* 2a. insert dot into child dir */
+ /* 2a. increase child nlink */
+ rc = dt_declare_ref_add(env, child, th);
+ if (rc != 0)
+ GOTO(stop, rc);
+
+ /* 3a. insert dot into child dir */
rec->rec_type = S_IFDIR;
rec->rec_fid = cfid;
rc = dt_declare_insert(env, child,
if (rc != 0)
GOTO(stop, rc);
- /* 3a. insert dotdot into child dir */
+ /* 4a. insert dotdot into child dir */
rec->rec_fid = pfid;
rc = dt_declare_insert(env, child,
(const struct dt_rec *)rec,
if (rc != 0)
GOTO(stop, rc);
- /* 4a. increase child nlink */
- rc = dt_declare_ref_add(env, child, th);
- if (rc != 0)
- GOTO(stop, rc);
-
/* 5a. generate slave LMV EA. */
if (lnr->lnr_lmv != NULL && lnr->lnr_lmv->ll_lmv_master) {
int idx;
GOTO(unlock, rc = (rc == -EEXIST ? 1 : rc));
if (S_ISDIR(type)) {
- /* 2b. insert dot into child dir */
+ /* 2b. increase child nlink */
+ rc = dt_ref_add(env, child, th);
+ if (rc != 0)
+ GOTO(unlock, rc);
+
+ /* 3b. insert dot into child dir */
rec->rec_type = S_IFDIR;
rec->rec_fid = cfid;
rc = dt_insert(env, child, (const struct dt_rec *)rec,
if (rc != 0)
GOTO(unlock, rc);
- /* 3b. insert dotdot into child dir */
+ /* 4b. insert dotdot into child dir */
rec->rec_fid = pfid;
rc = dt_insert(env, child, (const struct dt_rec *)rec,
(const struct dt_key *)dotdot, th, 1);
if (rc != 0)
GOTO(unlock, rc);
- /* 4b. increase child nlink */
- rc = dt_ref_add(env, child, th);
- if (rc != 0)
- GOTO(unlock, rc);
-
/* 5b. generate slave LMV EA. */
if (lnr->lnr_lmv != NULL && lnr->lnr_lmv->ll_lmv_master) {
rc = dt_xattr_set(env, child, &lmv_buf, XATTR_NAME_LMV,