summaryrefslogtreecommitdiff
path: root/fs/bcachefs/recovery_passes.h
blob: dc0d2014ff9bc598a3aab00396d11544363fb707 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef _BCACHEFS_RECOVERY_PASSES_H
#define _BCACHEFS_RECOVERY_PASSES_H

extern const char * const bch2_recovery_passes[];

extern const struct bch_sb_field_ops bch_sb_field_ops_recovery_passes;

u64 bch2_recovery_passes_to_stable(u64 v);
u64 bch2_recovery_passes_from_stable(u64 v);

u64 bch2_fsck_recovery_passes(void);

enum bch_run_recovery_pass_flags {
	RUN_RECOVERY_PASS_nopersistent	= BIT(0),
	RUN_RECOVERY_PASS_ratelimit	= BIT(1),
};

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);

int bch2_run_online_recovery_passes(struct bch_fs *, u64);
int bch2_run_recovery_passes(struct bch_fs *, enum bch_recovery_pass);

void bch2_recovery_pass_status_to_text(struct printbuf *, struct bch_fs *);

void bch2_fs_recovery_passes_init(struct bch_fs *);

#endif /* _BCACHEFS_RECOVERY_PASSES_H */