- spin_lock(&lfsck->li_lock);
- if (likely(lfsck->li_sleep_jif > 0 &&
- lfsck->li_new_scanned >= lfsck->li_sleep_rate)) {
- lwi = LWI_TIMEOUT_INTR(lfsck->li_sleep_jif, NULL,
- LWI_ON_SIGNAL_NOOP, NULL);
- spin_unlock(&lfsck->li_lock);
-
- l_wait_event(thread->t_ctl_waitq,
- !thread_is_running(thread),
- &lwi);
- lfsck->li_new_scanned = 0;
- } else {
- spin_unlock(&lfsck->li_lock);
- }
+ lwi = LWI_TIMEOUT_INTR(lfsck->li_sleep_jif, NULL,
+ LWI_ON_SIGNAL_NOOP, NULL);
+
+ l_wait_event(thread->t_ctl_waitq,
+ !thread_is_running(thread),
+ &lwi);
+ lfsck->li_new_scanned = 0;
+ }
+}
+
+void lfsck_control_speed_by_self(struct lfsck_component *com)
+{
+ struct lfsck_instance *lfsck = com->lc_lfsck;
+ struct ptlrpc_thread *thread = &lfsck->li_thread;
+ struct l_wait_info lwi;
+
+ if (lfsck->li_sleep_jif > 0 &&
+ com->lc_new_scanned >= lfsck->li_sleep_rate) {
+ lwi = LWI_TIMEOUT_INTR(lfsck->li_sleep_jif, NULL,
+ LWI_ON_SIGNAL_NOOP, NULL);
+
+ l_wait_event(thread->t_ctl_waitq,
+ !thread_is_running(thread),
+ &lwi);
+ com->lc_new_scanned = 0;