Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-5099 api: transfer object type via dt_insert API
[fs/lustre-release.git]
/
lustre
/
obdclass
/
local_storage.c
diff --git
a/lustre/obdclass/local_storage.c
b/lustre/obdclass/local_storage.c
index
fd9f352
..
89fc5df
100644
(file)
--- a/
lustre/obdclass/local_storage.c
+++ b/
lustre/obdclass/local_storage.c
@@
-301,6
+301,7
@@
struct dt_object *__local_file_create(const struct lu_env *env,
{
struct dt_thread_info *dti = dt_info(env);
struct lu_object_conf *conf = &dti->dti_conf;
+ struct dt_insert_rec *rec = &dti->dti_dt_rec;
struct dt_object *dto;
struct thandle *th;
int rc;
@@
-331,7
+332,10
@@
struct dt_object *__local_file_create(const struct lu_env *env,
dt_declare_ref_add(env, parent, th);
}
- rc = dt_declare_insert(env, parent, (void *)fid, (void *)name, th);
+ rec->rec_fid = fid;
+ rec->rec_type = dto->do_lu.lo_header->loh_attr;
+ rc = dt_declare_insert(env, parent, (const struct dt_rec *)rec,
+ (const struct dt_key *)name, th);
if (rc)
GOTO(trans_stop, rc);
@@
-353,20
+357,27
@@
struct dt_object *__local_file_create(const struct lu_env *env,
if (dti->dti_dof.dof_type == DFT_DIR) {
if (!dt_try_as_dir(env, dto))
GOTO(destroy, rc = -ENOTDIR);
+
+ rec->rec_type = S_IFDIR;
+ rec->rec_fid = fid;
/* Add "." and ".." for newly created dir */
- rc = dt_insert(env, dto, (
void *)fid, (void *)".", th
,
- BYPASS_CAPA, 1);
- if (rc)
+ rc = dt_insert(env, dto, (
const struct dt_rec *)rec
,
+
(const struct dt_key *)".", th,
BYPASS_CAPA, 1);
+ if (rc
!= 0
)
GOTO(destroy, rc);
+
dt_ref_add(env, dto, th);
- rc = dt_insert(env, dto, (void *)lu_object_fid(&parent->do_lu),
- (void *)"..", th, BYPASS_CAPA, 1);
- if (rc)
+ rec->rec_fid = lu_object_fid(&parent->do_lu);
+ rc = dt_insert(env, dto, (const struct dt_rec *)rec,
+ (const struct dt_key *)"..", th, BYPASS_CAPA, 1);
+ if (rc != 0)
GOTO(destroy, rc);
}
+ rec->rec_fid = fid;
+ rec->rec_type = dto->do_lu.lo_header->loh_attr;
dt_write_lock(env, parent, 0);
- rc = dt_insert(env, parent, (const struct dt_rec *)
fid
,
+ rc = dt_insert(env, parent, (const struct dt_rec *)
rec
,
(const struct dt_key *)name, th, BYPASS_CAPA, 1);
if (dti->dti_dof.dof_type == DFT_DIR)
dt_ref_add(env, parent, th);
@@
-629,8
+640,11
@@
int local_object_unlink(const struct lu_env *env, struct dt_device *dt,
rc = dt_ref_del(env, dto, th);
if (rc < 0) {
- rc = dt_insert(env, parent,
- (const struct dt_rec *)&dti->dti_fid,
+ struct dt_insert_rec *rec = &dti->dti_dt_rec;
+
+ rec->rec_fid = &dti->dti_fid;
+ rec->rec_type = dto->do_lu.lo_header->loh_attr;
+ rc = dt_insert(env, parent, (const struct dt_rec *)rec,
(const struct dt_key *)name, th, BYPASS_CAPA, 1);
GOTO(unlock, rc);
}