2024-03-23 20:07:46 -04:00
|
|
|
#ifndef _BCACHEFS_RECOVERY_PASSES_H
|
|
|
|
#define _BCACHEFS_RECOVERY_PASSES_H
|
|
|
|
|
|
|
|
extern const char * const bch2_recovery_passes[];
|
|
|
|
|
2025-05-09 18:24:20 -04:00
|
|
|
extern const struct bch_sb_field_ops bch_sb_field_ops_recovery_passes;
|
|
|
|
|
2024-03-23 20:07:46 -04:00
|
|
|
u64 bch2_recovery_passes_to_stable(u64 v);
|
|
|
|
u64 bch2_recovery_passes_from_stable(u64 v);
|
|
|
|
|
|
|
|
u64 bch2_fsck_recovery_passes(void);
|
|
|
|
|
2025-05-31 13:01:44 -04:00
|
|
|
void bch2_recovery_pass_set_no_ratelimit(struct bch_fs *, enum bch_recovery_pass);
|
|
|
|
|
2025-05-14 15:54:20 -04:00
|
|
|
enum bch_run_recovery_pass_flags {
|
|
|
|
RUN_RECOVERY_PASS_nopersistent = BIT(0),
|
2025-05-09 23:28:01 -04:00
|
|
|
RUN_RECOVERY_PASS_ratelimit = BIT(1),
|
2025-05-14 15:54:20 -04:00
|
|
|
};
|
|
|
|
|
2025-06-15 16:43:34 -04:00
|
|
|
static inline bool go_rw_in_recovery(struct bch_fs *c)
|
|
|
|
{
|
|
|
|
return (c->journal_keys.nr ||
|
|
|
|
!c->opts.read_only ||
|
|
|
|
!c->sb.clean ||
|
|
|
|
c->opts.recovery_passes ||
|
|
|
|
(c->opts.fsck && !(c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info))));
|
|
|
|
}
|
|
|
|
|
2025-05-14 15:54:20 -04:00
|
|
|
int bch2_run_print_explicit_recovery_pass(struct bch_fs *, enum bch_recovery_pass);
|
|
|
|
|
|
|
|
int __bch2_run_explicit_recovery_pass(struct bch_fs *, struct printbuf *,
|
|
|
|
enum bch_recovery_pass,
|
|
|
|
enum bch_run_recovery_pass_flags);
|
|
|
|
int bch2_run_explicit_recovery_pass(struct bch_fs *, struct printbuf *,
|
|
|
|
enum bch_recovery_pass,
|
|
|
|
enum bch_run_recovery_pass_flags);
|
2024-03-23 20:07:46 -04:00
|
|
|
|
2025-05-31 12:48:00 -04:00
|
|
|
int bch2_require_recovery_pass(struct bch_fs *, struct printbuf *,
|
|
|
|
enum bch_recovery_pass);
|
|
|
|
|
2025-05-10 17:45:45 -04:00
|
|
|
int bch2_run_online_recovery_passes(struct bch_fs *, u64);
|
|
|
|
int bch2_run_recovery_passes(struct bch_fs *, enum bch_recovery_pass);
|
2024-03-23 20:07:46 -04:00
|
|
|
|
2025-05-10 18:23:41 -04:00
|
|
|
void bch2_recovery_pass_status_to_text(struct printbuf *, struct bch_fs *);
|
|
|
|
|
2025-05-09 23:22:23 -04:00
|
|
|
void bch2_fs_recovery_passes_init(struct bch_fs *);
|
|
|
|
|
2024-03-23 20:07:46 -04:00
|
|
|
#endif /* _BCACHEFS_RECOVERY_PASSES_H */
|