lad->lad_to_double_scan = 0;
lad->lad_in_double_scan = 0;
lad->lad_exit = 0;
+ lad->lad_advance_lock = false;
thread_set_flags(athread, 0);
lta = lfsck_thread_args_init(lfsck, com, lsp);
struct lfsck_instance *lfsck = com->lc_lfsck;
struct lfsck_bookmark *bk = &lfsck->li_bookmark_ram;
struct lfsck_namespace *ns = com->lc_file_ram;
+ struct lfsck_assistant_data *lad = com->lc_data;
struct linkea_data ldata = { NULL };
const struct lu_name *cname;
struct thandle *handle = NULL;
bool newdata;
bool log = false;
bool bad_hash = false;
+ bool bad_linkea = false;
int idx = 0;
int count = 0;
int rc = 0;
GOTO(out, rc);
}
- if (!(bk->lb_param & LPF_DRYRUN) && repaired) {
+ if (!(bk->lb_param & LPF_DRYRUN) && lad->lad_advance_lock) {
again:
rc = lfsck_ibits_lock(env, lfsck, obj, &lh,
if (rc != 0)
GOTO(stop, rc);
+ bad_linkea = true;
if (!remove && newdata)
ns->ln_flags |= LF_UPGRADE;
else if (remove || !(ns->ln_flags & LF_UPGRADE))
if (dir != NULL && !IS_ERR(dir))
lfsck_object_put(env, dir);
+ lad->lad_advance_lock = bad_linkea;
+
return rc;
}