GOTO(out, rc);
}
+ if (unlikely(!dt_try_as_dir(env, parent)))
+ GOTO(out, rc = -ENOTDIR);
+
rc = lfsck_read_stripe_lmv(env, parent, plmv);
if (rc != 0) {
int rc1;
cname = lfsck_name_get_const(env, info->lti_tmpbuf, len);
memcpy(lnr->lnr_name, info->lti_tmpbuf, len);
- obj = lfsck_object_find_bottom(env, lfsck, cfid);
+ obj = lfsck_object_find_bottom_nowait(env, lfsck, cfid);
if (IS_ERR(obj)) {
+ if (lfsck_is_dead_obj(dir))
+ RETURN(0);
+
rc1 = PTR_ERR(obj);
goto next;
}
dev = ltd->ltd_tgt;
}
- obj = lfsck_object_find_by_dev(env, dev, &lnr->lnr_fid);
- if (IS_ERR(obj))
+ obj = lfsck_object_find_by_dev_nowait(env, dev, &lnr->lnr_fid);
+ if (IS_ERR(obj)) {
+ if (lfsck_is_dead_obj(dir))
+ RETURN(0);
+
GOTO(fail_lmv, rc = PTR_ERR(obj));
+ }
if (!dt_object_exists(obj)) {
stripe = lfsck_shard_name_to_index(env, lnr->lnr_name,