einfo->ei_cb_bl = ldlm_blocking_ast;
einfo->ei_cb_cp = ldlm_completion_ast;
einfo->ei_res_id = resid;
+ einfo->ei_req_slot = 1;
rc = dt_object_lock(env, obj, lh, einfo, policy);
/* for regular checks LFSCK doesn't use LDLM locking,
goto find_child1;
}
- if (unlikely(!dt_try_as_dir(env, child2))) {
- lfsck_object_put(env, child2);
- child2 = NULL;
- rc = -ENOTDIR;
- }
+ if (unlikely(!dt_try_as_dir(env, child2)))
+ GOTO(put, rc = -ENOTDIR);
find_child1:
if (fid_is_zero(&bk->lb_lpf_fid))
lfsck->li_obj_oit = NULL;
}
- LASSERT(lfsck->li_obj_dir == NULL);
- LASSERT(lfsck->li_lmv == NULL);
-
list_for_each_entry_safe(llu, llu_next, &lfsck->li_list_lmv, llu_link) {
llmv = &llu->llu_lmv;
if (unlikely(pos->lp_oit_cookie == 0))
pos->lp_oit_cookie = 1;
+ spin_lock(&lfsck->li_lock);
if (lfsck->li_di_dir != NULL) {
struct dt_object *dto = lfsck->li_obj_dir;
fid_zero(&pos->lp_dir_parent);
pos->lp_dir_cookie = 0;
}
+ spin_unlock(&lfsck->li_lock);
}
bool __lfsck_set_speed(struct lfsck_instance *lfsck, __u32 limit)