check_state
struct btree_check_state *check_state = info->state;
struct cache_set *c = check_state->c;
spin_lock(&check_state->idx_lock);
cur_idx = check_state->key_idx;
check_state->key_idx++;
spin_unlock(&check_state->idx_lock);
atomic_set(&check_state->enough, 1);
if (atomic_dec_and_test(&check_state->started))
wake_up(&check_state->wait);
struct btree_check_state check_state;
memset(&check_state, 0, sizeof(struct btree_check_state));
check_state.c = c;
check_state.total_threads = bch_btree_chkthread_nr();
check_state.key_idx = 0;
spin_lock_init(&check_state.idx_lock);
atomic_set(&check_state.started, 0);
atomic_set(&check_state.enough, 0);
init_waitqueue_head(&check_state.wait);
for (i = 0; i < check_state.total_threads; i++) {
if (atomic_read(&check_state.enough))
check_state.infos[i].result = 0;
check_state.infos[i].state = &check_state;
check_state.infos[i].thread =
&check_state.infos[i],
if (IS_ERR(check_state.infos[i].thread)) {
kthread_stop(check_state.infos[i].thread);
atomic_inc(&check_state.started);
wait_event(check_state.wait, atomic_read(&check_state.started) == 0);
for (i = 0; i < check_state.total_threads; i++) {
if (check_state.infos[i].result) {
ret = check_state.infos[i].result;
if (sh->check_state == check_state_compute_run)
sh->check_state = check_state_compute_result;
return sh->check_state || sh->reconstruct_state ||
sh->check_state = check_state_check_result;
if (sh->check_state == check_state_run)
else if (sh->check_state == check_state_run_q)
else if (sh->check_state == check_state_run_pq)
if (!test_bit(STRIPE_COMPUTE_RUN, &sh->state) && !sh->check_state &&
switch (sh->check_state) {
sh->check_state = check_state_run;
sh->check_state = check_state_idle;
sh->check_state = check_state_idle;
sh->check_state = check_state_compute_run;
__func__, sh->check_state,
switch (sh->check_state) {
sh->check_state = check_state_run;
if (sh->check_state == check_state_run)
sh->check_state = check_state_run_pq;
sh->check_state = check_state_run_q;
if (sh->check_state == check_state_run) {
if (sh->check_state >= check_state_run &&
sh->check_state <= check_state_run_pq) {
sh->check_state = check_state_idle;
sh->check_state = check_state_idle;
sh->check_state = check_state_compute_result;
sh->check_state = check_state_compute_run;
__func__, sh->check_state,
sh->check_state = head_sh->check_state;
sh->check_state, sh->reconstruct_state);
sh->check_state = 0;
if (!sh->reconstruct_state && !sh->check_state && !sh->log_io) {
if (sh->check_state ||
enum check_states check_state;
if (!check_state(cfe, NODE_ENABLED, node->id)) {
!check_state(cfe, NODE_ENABLED, cfe->node[FE_CONFIG].id)) {
if (check_state(cfe, NODE_REGISTERED, i))
if (check_state(cfe, NODE_REGISTERED, i)) {
if (!check_state(cfe, NODE_REGISTERED, i))
if (check_state(cfe, cond, i))
if (check_state(cfe, precond, i)) {
if (!check_state(cfe, cond, i))
if (!check_state(cfe, NODE_STREAMING, i))
if (!check_state(cfe, NODE_STREAMING, i))
if (!check_state(cfe, NODE_ENABLED, i))
if (!check_state(cfe, NODE_STREAMING, i) || i == node->id)
if (!check_state(cfe, NODE_STREAMING, i) || !(sof[i] || eof[i]))
if (sof[i] && !check_state(cfe, FS_INT, i)) {
if (check_state(cfe, FS_INT, node->id) &&
!check_state(cfe, FE_INT, node->id)) {
check_state(sd, state, format->which, format->pad, format->stream);
check_state(sd, state, code->which, code->pad, code->stream) ? :
check_state(sd, state, fse->which, fse->pad, fse->stream) ? :
check_state(sd, state, fie->which, fie->pad, fie->stream) ? :
check_state(sd, state, sel->which, sel->pad, sel->stream);
check_state(sd, state, fi->which, fi->pad, fi->stream);
goto check_state;
check_state:
bool check_state)
if (check_state && !check_session_state(s)) {
bool check_state);