Lines Matching full:pass

30 /* Fake recovery pass, so that scan_for_btree_nodes isn't 0: */
71 static enum bch_recovery_pass_stable bch2_recovery_pass_to_stable(enum bch_recovery_pass pass) in bch2_recovery_pass_to_stable() argument
73 return passes_to_stable_map[pass]; in bch2_recovery_pass_to_stable()
101 * For when we need to rewind recovery passes and run a pass we skipped:
104 enum bch_recovery_pass pass) in __bch2_run_explicit_recovery_pass() argument
109 if (c->recovery_passes_complete & BIT_ULL(pass)) in __bch2_run_explicit_recovery_pass()
112 bool print = !(c->opts.recovery_passes & BIT_ULL(pass)); in __bch2_run_explicit_recovery_pass()
114 if (pass < BCH_RECOVERY_PASS_set_may_go_rw && in __bch2_run_explicit_recovery_pass()
117 bch_info(c, "need recovery pass %s (%u), but already rw", in __bch2_run_explicit_recovery_pass()
118 bch2_recovery_passes[pass], pass); in __bch2_run_explicit_recovery_pass()
123 bch_info(c, "running explicit recovery pass %s (%u), currently at %s (%u)", in __bch2_run_explicit_recovery_pass()
124 bch2_recovery_passes[pass], pass, in __bch2_run_explicit_recovery_pass()
127 c->opts.recovery_passes |= BIT_ULL(pass); in __bch2_run_explicit_recovery_pass()
129 if (c->curr_recovery_pass > pass) { in __bch2_run_explicit_recovery_pass()
130 c->next_recovery_pass = pass; in __bch2_run_explicit_recovery_pass()
131 c->recovery_passes_complete &= (1ULL << pass) >> 1; in __bch2_run_explicit_recovery_pass()
139 enum bch_recovery_pass pass) in bch2_run_explicit_recovery_pass() argument
143 int ret = __bch2_run_explicit_recovery_pass(c, pass); in bch2_run_explicit_recovery_pass()
149 enum bch_recovery_pass pass) in bch2_run_explicit_recovery_pass_persistent_locked() argument
154 __set_bit_le64(bch2_recovery_pass_to_stable(pass), ext->recovery_passes_required); in bch2_run_explicit_recovery_pass_persistent_locked()
156 return bch2_run_explicit_recovery_pass(c, pass); in bch2_run_explicit_recovery_pass_persistent_locked()
160 enum bch_recovery_pass pass) in bch2_run_explicit_recovery_pass_persistent() argument
162 enum bch_recovery_pass_stable s = bch2_recovery_pass_to_stable(pass); in bch2_run_explicit_recovery_pass_persistent()
173 return bch2_run_explicit_recovery_pass(c, pass); in bch2_run_explicit_recovery_pass_persistent()
177 enum bch_recovery_pass pass) in bch2_clear_recovery_pass_required() argument
179 enum bch_recovery_pass_stable s = bch2_recovery_pass_to_stable(pass); in bch2_clear_recovery_pass_required()
201 static bool should_run_recovery_pass(struct bch_fs *c, enum bch_recovery_pass pass) in should_run_recovery_pass() argument
203 struct recovery_pass_fn *p = recovery_pass_fns + pass; in should_run_recovery_pass()
205 if (c->opts.recovery_passes_exclude & BIT_ULL(pass)) in should_run_recovery_pass()
207 if (c->opts.recovery_passes & BIT_ULL(pass)) in should_run_recovery_pass()
218 static int bch2_run_recovery_pass(struct bch_fs *c, enum bch_recovery_pass pass) in bch2_run_recovery_pass() argument
220 struct recovery_pass_fn *p = recovery_pass_fns + pass; in bch2_run_recovery_pass()
225 bch2_recovery_passes[pass]); in bch2_run_recovery_pass()
275 unsigned pass = c->curr_recovery_pass; in bch2_run_recovery_passes() local
283 if (!should_run_recovery_pass(c, pass)) { in bch2_run_recovery_passes()
285 c->recovery_pass_done = max(c->recovery_pass_done, pass); in bch2_run_recovery_passes()
291 ret = bch2_run_recovery_pass(c, pass) ?: in bch2_run_recovery_passes()
295 bch2_clear_recovery_pass_required(c, pass); in bch2_run_recovery_passes()
308 c->recovery_passes_complete |= BIT_ULL(pass); in bch2_run_recovery_passes()
309 c->recovery_pass_done = max(c->recovery_pass_done, pass); in bch2_run_recovery_passes()