iops->put(env, di);
}
-static int lfsck_parent_fid(const struct lu_env *env, struct dt_object *obj,
- struct lu_fid *fid)
-{
- if (unlikely(!S_ISDIR(lfsck_object_type(obj)) ||
- !dt_try_as_dir(env, obj)))
- return -ENOTDIR;
-
- return dt_lookup(env, obj, (struct dt_rec *)fid,
- (const struct dt_key *)"..");
-}
-
/**
* Check whether needs to scan the directory or not.
*
if (rc < 0 && rc != -ENODATA)
GOTO(out, rc);
- rc = lfsck_parent_fid(env, obj, fid);
+ rc = dt_lookup_dir(env, obj, dotdot, fid);
if (depth > 0)
lfsck_object_put(env, obj);
do {
snprintf(name, NAME_MAX, DFID"%s-%s-%d", PFID(pfid), infix,
type, idx++);
- rc = dt_lookup(env, lfsck->li_lpf_obj, (struct dt_rec *)tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, lfsck->li_lpf_obj, name, tfid);
if (rc != 0 && rc != -ENOENT)
GOTO(log, rc);
} while (rc == 0);
/* Re-check whether the name conflict with othrs after taken
* the ldlm lock. */
- rc = dt_lookup(env, lfsck->li_lpf_obj, (struct dt_rec *)tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, lfsck->li_lpf_obj, name, tfid);
if (unlikely(rc == 0)) {
lfsck_unlock(llh);
goto again;
* created the .lustre/lost+found/MDTxxxx but failed to update
* the lfsck_bookmark::lb_lpf_fid successfully. So need lookup
* it from MDT0 firstly. */
- rc = dt_lookup(env, parent, (struct dt_rec *)cfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, parent, name, cfid);
if (rc != 0 && rc != -ENOENT)
GOTO(unlock, rc);
ENTRY;
fid_zero(fid);
- rc = dt_lookup(env, child, (struct dt_rec *)fid,
- (const struct dt_key *)dotdot);
+ rc = dt_lookup_dir(env, child, dotdot, fid);
if (rc != 0)
GOTO(linkea, rc);
GOTO(out_done, rc = 1);
}
- rc = dt_lookup(env, parent2, (struct dt_rec *)fid,
- (const struct dt_key *)name2);
+ rc = dt_lookup_dir(env, parent2, name2, fid);
dt_read_unlock(env, child);
lfsck_ibits_unlock(&lh, LCK_PR);
if (rc != 0 && rc != -ENOENT)
/* child2 */
snprintf(name, 8, "MDT%04x", node);
- rc = dt_lookup(env, parent, (struct dt_rec *)cfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, parent, name, cfid);
if (rc == -ENOENT) {
rc = 0;
goto find_child1;
if (IS_ERR(root))
GOTO(out, rc = PTR_ERR(root));
- if (unlikely(!dt_try_as_dir(env, root)))
- GOTO(out, rc = -ENOTDIR);
-
lfsck->li_local_root_fid = *fid;
if (master) {
lfsck->li_master = 1;
struct lu_fid *pfid = &lfsck_env_info(env)->lti_fid2;
const struct lu_name *cname;
- rc = dt_lookup(env, root,
- (struct dt_rec *)(&lfsck->li_global_root_fid),
- (const struct dt_key *)"ROOT");
+ rc = dt_lookup_dir(env, root, "ROOT",
+ &lfsck->li_global_root_fid);
if (rc != 0)
GOTO(out, rc);
if (IS_ERR(obj))
GOTO(out, rc = PTR_ERR(obj));
- if (unlikely(!dt_try_as_dir(env, obj)))
- GOTO(out, rc = -ENOTDIR);
-
- rc = dt_lookup(env, obj, (struct dt_rec *)fid,
- (const struct dt_key *)dotlustre);
+ rc = dt_lookup_dir(env, obj, dotlustre, fid);
if (rc != 0)
GOTO(out, rc);
GOTO(out, rc = -ENOTDIR);
*pfid = *fid;
- rc = dt_lookup(env, obj, (struct dt_rec *)fid,
- (const struct dt_key *)lostfound);
+ rc = dt_lookup_dir(env, obj, lostfound, fid);
if (rc != 0)
GOTO(out, rc);
if (unlikely(lfsck_is_dead_obj(obj)))
RETURN(LFSCK_NAMEENTRY_DEAD);
- rc = dt_lookup(env, dir, (struct dt_rec *)fid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, dir, name, fid);
if (rc == -ENOENT)
RETURN(LFSCK_NAMEENTRY_REMOVED);
do {
namelen = snprintf(info->lti_key, NAME_MAX, DFID"%s-%s-%d",
PFID(cfid), infix, type, idx++);
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)info->lti_key);
+ rc = dt_lookup_dir(env, parent, info->lti_key, &tfid);
if (rc != 0 && rc != -ENOENT)
GOTO(log, rc);
/* Re-check whether the name conflict with othrs after taken
* the ldlm lock. */
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)info->lti_key);
+ rc = dt_lookup_dir(env, parent, info->lti_key, &tfid);
if (rc == 0) {
if (!lu_fid_eq(cfid, &tfid)) {
exist = false;
GOTO(log, rc = idx);
snprintf(name, 8, "MDT%04x", idx);
- rc = dt_lookup(env, lfsck->li_lpf_root_obj,
- (struct dt_rec *)&tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, lfsck->li_lpf_root_obj, name, &tfid);
if (rc != 0)
GOTO(log, rc = (rc == -ENOENT ? -ENXIO : rc));
do {
namelen = snprintf(name, 31, DFID"-P-%d",
PFID(cfid), idx++);
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, parent, name, &tfid);
if (rc != 0 && rc != -ENOENT)
GOTO(log, rc);
} while (rc == 0);
/* Re-check whether the name conflict with othrs after taken
* the ldlm lock. */
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, parent, name, &tfid);
if (unlikely(rc == 0)) {
lfsck_unlock(llh);
goto again;
goto replace;
}
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, parent, name, &tfid);
if (rc == -ENOENT) {
exist = false;
goto replace;
dt_write_lock(env, parent, 0);
- rc = dt_lookup(env, dt_object_child(parent), (struct dt_rec *)&tfid,
- (const struct dt_key *)name);
+ rc = dt_lookup_dir(env, dt_object_child(parent), name, &tfid);
/* Someone has removed the bad name entry by race. */
if (rc == -ENOENT)
GOTO(unlock2, rc = 0);
GOTO(out, rc);
}
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)cname->ln_name);
+ rc = dt_lookup_dir(env, parent, cname->ln_name, &tfid);
if (rc == -ENOENT) {
/* If the LFSCK is marked as LF_INCOMPLETE, then means some MDT
* has ever tried to verify some remote MDT-object that resides
continue;
}
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)cname->ln_name);
+ rc = dt_lookup_dir(env, parent, cname->ln_name, &tfid);
*pfid2 = *lfsck_dto2fid(parent);
if (rc == -ENOENT) {
lfsck_object_put(env, parent);
GOTO(out, rc = 0);
}
- rc = dt_lookup(env, child, (struct dt_rec *)pfid,
- (const struct dt_key *)dotdot);
+ rc = dt_lookup_dir(env, child, dotdot, pfid);
if (rc != 0) {
if (rc != -ENOENT && rc != -ENODATA && rc != -EINVAL) {
dt_read_unlock(env, child);
continue;
}
- rc = dt_lookup(env, parent, (struct dt_rec *)cfid,
- (const struct dt_key *)cname->ln_name);
+ rc = dt_lookup_dir(env, parent, cname->ln_name, cfid);
if (rc != 0 && rc != -ENOENT) {
lfsck_object_put(env, parent);
int rc = 0;
ENTRY;
- rc = dt_lookup(env, shard, (struct dt_rec *)pfid,
- (const struct dt_key *)dotdot);
+ rc = dt_lookup_dir(env, shard, dotdot, pfid);
if (rc != 0 || !fid_is_sane(pfid))
GOTO(log, rc);
GOTO(out, rc);
}
- rc = dt_lookup(env, obj, (struct dt_rec *)pfid,
- (const struct dt_key *)dotdot);
+ rc = dt_lookup_dir(env, obj, dotdot, pfid);
if (rc != 0 || !fid_is_sane(pfid)) {
rc = lfsck_namespace_trace_update(env, com, cfid,
LNTF_UNCERTAIN_LMV, true);
GOTO(out, rc);
}
- rc = dt_lookup(env, parent, (struct dt_rec *)&tfid,
- (const struct dt_key *)name2);
+ rc = dt_lookup_dir(env, parent, name2, &tfid);
if (rc != 0 || !lu_fid_eq(cfid, &tfid))
rc = lfsck_namespace_trace_update(env, com, cfid,
LNTF_UNCERTAIN_LMV, true);