+
+ obj = dt_locate(env, key, &lfsck->li_global_root_fid);
+ if (IS_ERR(obj))
+ GOTO(out, rc = PTR_ERR(obj));
+
+ rc = dt_lookup(env, obj, (struct dt_rec *)fid,
+ (const struct dt_key *)dotlustre, BYPASS_CAPA);
+ if (rc != 0)
+ GOTO(out, rc);
+
+ lu_object_put(env, &obj->do_lu);
+ obj = dt_locate(env, key, fid);
+ if (IS_ERR(obj))
+ GOTO(out, rc = PTR_ERR(obj));
+
+ cname = lfsck_name_get_const(env, dotlustre,
+ strlen(dotlustre));
+ rc = lfsck_verify_linkea(env, key, obj, cname,
+ &lfsck->li_global_root_fid);
+ if (rc != 0)
+ GOTO(out, rc);
+
+ *pfid = *fid;
+ rc = dt_lookup(env, obj, (struct dt_rec *)fid,
+ (const struct dt_key *)lostfound,
+ BYPASS_CAPA);
+ if (rc != 0)
+ GOTO(out, rc);
+
+ lu_object_put(env, &obj->do_lu);
+ obj = dt_locate(env, key, fid);
+ if (IS_ERR(obj))
+ GOTO(out, rc = PTR_ERR(obj));
+
+ cname = lfsck_name_get_const(env, lostfound,
+ strlen(lostfound));
+ rc = lfsck_verify_linkea(env, key, obj, cname, pfid);
+ if (rc != 0)
+ GOTO(out, rc);
+
+ lu_object_put(env, &obj->do_lu);
+ obj = NULL;