Whamcloud - gitweb
LU-5099 api: transfer object type via dt_insert API
[fs/lustre-release.git] / lustre / lfsck / lfsck_lib.c
index 247a608..b669e42 100644 (file)
@@ -364,6 +364,7 @@ static int lfsck_create_lpf_local(const struct lu_env *env,
                                  struct dt_object_format *dof,
                                  const char *name)
 {
+       struct dt_insert_rec    *rec    = &lfsck_env_info(env)->lti_dt_rec;
        struct dt_device        *dev    = lfsck->li_bottom;
        struct lfsck_bookmark   *bk     = &lfsck->li_bookmark_ram;
        struct dt_object        *bk_obj = lfsck->li_bookmark_obj;
@@ -410,7 +411,9 @@ static int lfsck_create_lpf_local(const struct lu_env *env,
                GOTO(stop, rc);
 
        /* 4a. insert name into parent dir */
-       rc = dt_declare_insert(env, parent, (const struct dt_rec *)cfid,
+       rec->rec_type = S_IFDIR;
+       rec->rec_fid = cfid;
+       rc = dt_declare_insert(env, parent, (const struct dt_rec *)rec,
                               (const struct dt_key *)name, th);
        if (rc != 0)
                GOTO(stop, rc);
@@ -440,13 +443,15 @@ static int lfsck_create_lpf_local(const struct lu_env *env,
                GOTO(unlock, rc = -ENOTDIR);
 
        /* 1b.2. insert dot into child dir */
-       rc = dt_insert(env, child, (const struct dt_rec *)cfid,
+       rec->rec_fid = cfid;
+       rc = dt_insert(env, child, (const struct dt_rec *)rec,
                       (const struct dt_key *)dot, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(unlock, rc);
 
        /* 1b.3. insert dotdot into child dir */
-       rc = dt_insert(env, child, (const struct dt_rec *)&LU_LPF_FID,
+       rec->rec_fid = &LU_LPF_FID;
+       rc = dt_insert(env, child, (const struct dt_rec *)rec,
                       (const struct dt_key *)dotdot, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(unlock, rc);
@@ -464,7 +469,8 @@ static int lfsck_create_lpf_local(const struct lu_env *env,
                GOTO(stop, rc);
 
        /* 4b. insert name into parent dir */
-       rc = dt_insert(env, parent, (const struct dt_rec *)cfid,
+       rec->rec_fid = cfid;
+       rc = dt_insert(env, parent, (const struct dt_rec *)rec,
                       (const struct dt_key *)name, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(stop, rc);
@@ -502,6 +508,7 @@ static int lfsck_create_lpf_remote(const struct lu_env *env,
                                   struct dt_object_format *dof,
                                   const char *name)
 {
+       struct dt_insert_rec    *rec    = &lfsck_env_info(env)->lti_dt_rec;
        struct lfsck_bookmark   *bk     = &lfsck->li_bookmark_ram;
        struct dt_object        *bk_obj = lfsck->li_bookmark_obj;
        const struct lu_fid     *cfid   = lfsck_dto2fid(child);
@@ -590,13 +597,16 @@ static int lfsck_create_lpf_remote(const struct lu_env *env,
                GOTO(unlock, rc = -ENOTDIR);
 
        /* 1b.2. insert dot into child dir */
-       rc = dt_insert(env, child, (const struct dt_rec *)cfid,
+       rec->rec_type = S_IFDIR;
+       rec->rec_fid = cfid;
+       rc = dt_insert(env, child, (const struct dt_rec *)rec,
                       (const struct dt_key *)dot, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(unlock, rc);
 
        /* 1b.3. insert dotdot into child dir */
-       rc = dt_insert(env, child, (const struct dt_rec *)&LU_LPF_FID,
+       rec->rec_fid = &LU_LPF_FID;
+       rc = dt_insert(env, child, (const struct dt_rec *)rec,
                       (const struct dt_key *)dotdot, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(unlock, rc);
@@ -632,7 +642,8 @@ static int lfsck_create_lpf_remote(const struct lu_env *env,
                RETURN(PTR_ERR(th));
 
        /* 5a. insert name into parent dir */
-       rc = dt_declare_insert(env, parent, (const struct dt_rec *)cfid,
+       rec->rec_fid = cfid;
+       rc = dt_declare_insert(env, parent, (const struct dt_rec *)rec,
                               (const struct dt_key *)name, th);
        if (rc != 0)
                GOTO(stop, rc);
@@ -647,7 +658,7 @@ static int lfsck_create_lpf_remote(const struct lu_env *env,
                GOTO(stop, rc);
 
        /* 5b. insert name into parent dir */
-       rc = dt_insert(env, parent, (const struct dt_rec *)cfid,
+       rc = dt_insert(env, parent, (const struct dt_rec *)rec,
                       (const struct dt_key *)name, th, BYPASS_CAPA, 1);
        if (rc != 0)
                GOTO(stop, rc);