Whamcloud - gitweb
LU-5099 api: transfer object type via dt_insert API
[fs/lustre-release.git] / lustre / lod / lod_object.c
index fb43a8d..1892e3b 100644 (file)
@@ -1456,6 +1456,7 @@ static int lod_prep_md_striped_create(const struct lu_env *env,
        struct lu_buf           slave_lmv_buf;
        struct lmv_mds_md_v1    *lmm;
        struct lmv_mds_md_v1    *slave_lmm = NULL;
        struct lu_buf           slave_lmv_buf;
        struct lmv_mds_md_v1    *lmm;
        struct lmv_mds_md_v1    *slave_lmm = NULL;
+       struct dt_insert_rec    *rec = &info->lti_dt_rec;
        int                     stripe_count;
        int                     *idx_array;
        int                     rc = 0;
        int                     stripe_count;
        int                     *idx_array;
        int                     rc = 0;
@@ -1600,6 +1601,7 @@ next:
        if (!dt_try_as_dir(env, dt_object_child(dt)))
                GOTO(out_put, rc = -EINVAL);
 
        if (!dt_try_as_dir(env, dt_object_child(dt)))
                GOTO(out_put, rc = -EINVAL);
 
+       rec->rec_type = S_IFDIR;
        for (i = 0; i < lo->ldo_stripenr; i++) {
                struct dt_object        *dto            = stripe[i];
                char                    *stripe_name    = info->lti_key;
        for (i = 0; i < lo->ldo_stripenr; i++) {
                struct dt_object        *dto            = stripe[i];
                char                    *stripe_name    = info->lti_key;
@@ -1614,16 +1616,16 @@ next:
                if (!dt_try_as_dir(env, dto))
                        GOTO(out_put, rc = -EINVAL);
 
                if (!dt_try_as_dir(env, dto))
                        GOTO(out_put, rc = -EINVAL);
 
-               rc = dt_declare_insert(env, dto,
-                    (const struct dt_rec *)lu_object_fid(&dto->do_lu),
-                    (const struct dt_key *)dot, th);
+               rec->rec_fid = lu_object_fid(&dto->do_lu);
+               rc = dt_declare_insert(env, dto, (const struct dt_rec *)rec,
+                                      (const struct dt_key *)dot, th);
                if (rc != 0)
                        GOTO(out_put, rc);
 
                /* master stripe FID will be put to .. */
                if (rc != 0)
                        GOTO(out_put, rc);
 
                /* master stripe FID will be put to .. */
-               rc = dt_declare_insert(env, dto,
-                    (const struct dt_rec *)lu_object_fid(&dt->do_lu),
-                    (const struct dt_key *)dotdot, th);
+               rec->rec_fid = lu_object_fid(&dt->do_lu);
+               rc = dt_declare_insert(env, dto, (const struct dt_rec *)rec,
+                                      (const struct dt_key *)dotdot, th);
                if (rc != 0)
                        GOTO(out_put, rc);
 
                if (rc != 0)
                        GOTO(out_put, rc);
 
@@ -1689,9 +1691,10 @@ next:
                if (rc != 0)
                        GOTO(out_put, rc);
 
                if (rc != 0)
                        GOTO(out_put, rc);
 
+               rec->rec_fid = lu_object_fid(&dto->do_lu);
                rc = dt_declare_insert(env, dt_object_child(dt),
                rc = dt_declare_insert(env, dt_object_child(dt),
-                    (const struct dt_rec *)lu_object_fid(&dto->do_lu),
-                    (const struct dt_key *)stripe_name, th);
+                                      (const struct dt_rec *)rec,
+                                      (const struct dt_key *)stripe_name, th);
                if (rc != 0)
                        GOTO(out_put, rc);
 
                if (rc != 0)
                        GOTO(out_put, rc);
 
@@ -2055,6 +2058,7 @@ static int lod_xattr_set_lmv(const struct lu_env *env, struct dt_object *dt,
        struct lu_buf           slave_lmv_buf;
        struct lmv_mds_md_v1    *lmm;
        struct lmv_mds_md_v1    *slave_lmm = NULL;
        struct lu_buf           slave_lmv_buf;
        struct lmv_mds_md_v1    *lmm;
        struct lmv_mds_md_v1    *slave_lmm = NULL;
+       struct dt_insert_rec    *rec = &info->lti_dt_rec;
        int                     i;
        int                     rc;
        ENTRY;
        int                     i;
        int                     rc;
        ENTRY;
@@ -2087,6 +2091,7 @@ static int lod_xattr_set_lmv(const struct lu_env *env, struct dt_object *dt,
        slave_lmv_buf.lb_buf = slave_lmm;
        slave_lmv_buf.lb_len = sizeof(*slave_lmm);
 
        slave_lmv_buf.lb_buf = slave_lmm;
        slave_lmv_buf.lb_len = sizeof(*slave_lmm);
 
+       rec->rec_type = S_IFDIR;
        for (i = 0; i < lo->ldo_stripenr; i++) {
                struct dt_object        *dto;
                char                    *stripe_name    = info->lti_key;
        for (i = 0; i < lo->ldo_stripenr; i++) {
                struct dt_object        *dto;
                char                    *stripe_name    = info->lti_key;
@@ -2101,15 +2106,15 @@ static int lod_xattr_set_lmv(const struct lu_env *env, struct dt_object *dt,
                if (rc != 0)
                        RETURN(rc);
 
                if (rc != 0)
                        RETURN(rc);
 
-               rc = dt_insert(env, dto,
-                             (const struct dt_rec *)lu_object_fid(&dto->do_lu),
-                             (const struct dt_key *)dot, th, capa, 0);
+               rec->rec_fid = lu_object_fid(&dto->do_lu);
+               rc = dt_insert(env, dto, (const struct dt_rec *)rec,
+                              (const struct dt_key *)dot, th, capa, 0);
                if (rc != 0)
                        RETURN(rc);
 
                if (rc != 0)
                        RETURN(rc);
 
-               rc = dt_insert(env, dto,
-                             (struct dt_rec *)lu_object_fid(&dt->do_lu),
-                             (const struct dt_key *)dotdot, th, capa, 0);
+               rec->rec_fid = lu_object_fid(&dt->do_lu);
+               rc = dt_insert(env, dto, (struct dt_rec *)rec,
+                              (const struct dt_key *)dotdot, th, capa, 0);
                if (rc != 0)
                        RETURN(rc);
 
                if (rc != 0)
                        RETURN(rc);
 
@@ -2172,9 +2177,10 @@ static int lod_xattr_set_lmv(const struct lu_env *env, struct dt_object *dt,
                if (rc != 0)
                        GOTO(out, rc);
 
                if (rc != 0)
                        GOTO(out, rc);
 
+               rec->rec_fid = lu_object_fid(&dto->do_lu);
                rc = dt_insert(env, dt_object_child(dt),
                rc = dt_insert(env, dt_object_child(dt),
-                    (const struct dt_rec *)lu_object_fid(&dto->do_lu),
-                    (const struct dt_key *)stripe_name, th, capa, 0);
+                              (const struct dt_rec *)rec,
+                              (const struct dt_key *)stripe_name, th, capa, 0);
                if (rc != 0)
                        GOTO(out, rc);
 
                if (rc != 0)
                        GOTO(out, rc);