LASSERTF(ltds->ltd_tgtnr == 0, "tgt count unmatched: %d\n",
ltds->ltd_tgtnr);
- for (idx = 0; idx < TGT_PTRS; idx++) {
+ for (idx = 0; idx < ARRAY_SIZE(ltds->ltd_tgts_idx); idx++) {
if (ltds->ltd_tgts_idx[idx] != NULL) {
OBD_FREE_PTR(ltds->ltd_tgts_idx[idx]);
ltds->ltd_tgts_idx[idx] = NULL;
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,
if (rc != 0)
RETURN(rc);
- th = dt_trans_create(env, dev);
+ th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(unlock, rc = PTR_ERR(th));
if (rc != 0)
RETURN(rc);
- th = dt_trans_create(env, dev);
+ th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
/* Transaction I: locally */
dev = lfsck_obj2dev(child);
- th = dt_trans_create(env, dev);
+ th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
/* Transaction II: remotely */
dev = lfsck_obj2dev(parent);
- th = dt_trans_create(env, dev);
+ th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
}
cname = lfsck_name_get_const(env, name, strlen(name));
- rc = lfsck_verify_linkea(env, child, cname, &LU_LPF_FID);
+ rc = lfsck_verify_linkea(env, lfsck, child, cname, &LU_LPF_FID);
if (rc == 0)
rc = lfsck_update_lpf_entry(env, lfsck, parent, child,
name, type);
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))
}
cname = lfsck_name_get_const(env, name, strlen(name));
- rc = lfsck_verify_linkea(env, child2, cname, &LU_LPF_FID);
+ rc = lfsck_verify_linkea(env, lfsck, child2, cname,
+ &LU_LPF_FID);
GOTO(put, rc);
}
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)
CDEBUG(D_LFSCK, "%s: waiting for assistant to do %s post, rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck), lad->lad_name, *result);
- wake_up_all(&athread->t_ctl_waitq);
+ wake_up(&athread->t_ctl_waitq);
wait_event_idle(mthread->t_ctl_waitq,
(*result > 0 && list_empty(&lad->lad_req_list)) ||
thread_is_stopped(athread));
"status %d\n",
lfsck_lfsck2name(com->lc_lfsck), lad->lad_name, status);
- wake_up_all(&athread->t_ctl_waitq);
+ wake_up(&athread->t_ctl_waitq);
wait_event_idle(mthread->t_ctl_waitq,
test_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags) ||
thread_is_stopped(athread));
struct ptlrpc_thread *athread = &lad->lad_thread;
set_bit(LAD_EXIT, &lad->lad_flags);
- wake_up_all(&athread->t_ctl_waitq);
+ wake_up(&athread->t_ctl_waitq);
wait_event_idle(mthread->t_ctl_waitq,
thread_is_init(athread) ||
thread_is_stopped(athread));
thread_is_stopped(thread));
if (start == NULL || !(start->ls_flags & LPF_BROADCAST)) {
lfsck->li_start_unplug = 1;
- wake_up_all(&thread->t_ctl_waitq);
+ wake_up(&thread->t_ctl_waitq);
GOTO(out, rc = 0);
}
spin_unlock(&lfsck->li_lock);
lfsck->li_start_unplug = 1;
- wake_up_all(&thread->t_ctl_waitq);
+ wake_up(&thread->t_ctl_waitq);
wait_event_idle(thread->t_ctl_waitq,
thread_is_stopped(thread));
}
} else {
lfsck->li_start_unplug = 1;
- wake_up_all(&thread->t_ctl_waitq);
+ wake_up(&thread->t_ctl_waitq);
}
GOTO(put, rc);
}
}
- wake_up_all(&thread->t_ctl_waitq);
+ wake_up(&thread->t_ctl_waitq);
spin_unlock(&lfsck->li_lock);
if (stop && stop->ls_flags & LPF_BROADCAST)
rc1 = lfsck_stop_all(env, lfsck, stop);
cname = lfsck_name_get_const(env, dotlustre,
strlen(dotlustre));
- rc = lfsck_verify_linkea(env, obj, cname,
+ rc = lfsck_verify_linkea(env, lfsck, obj, cname,
&lfsck->li_global_root_fid);
if (rc != 0)
GOTO(out, rc);
cname = lfsck_name_get_const(env, lostfound,
strlen(lostfound));
- rc = lfsck_verify_linkea(env, obj, cname, pfid);
+ rc = lfsck_verify_linkea(env, lfsck, obj, cname, pfid);
if (rc != 0)
GOTO(out, rc);