]> git.sesse.net Git - bcachefs-tools-debian/blob - c_src/libbcachefs/rebalance_types.h
0fffb536c1d0c1b65d1a2a68730cab49f7535db2
[bcachefs-tools-debian] / c_src / libbcachefs / rebalance_types.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_REBALANCE_TYPES_H
3 #define _BCACHEFS_REBALANCE_TYPES_H
4
5 #include "bbpos_types.h"
6 #include "move_types.h"
7
8 #define BCH_REBALANCE_STATES()          \
9         x(waiting)                      \
10         x(working)                      \
11         x(scanning)
12
13 enum bch_rebalance_states {
14 #define x(t)    BCH_REBALANCE_##t,
15         BCH_REBALANCE_STATES()
16 #undef x
17 };
18
19 struct bch_fs_rebalance {
20         struct task_struct __rcu        *thread;
21         struct bch_pd_controller pd;
22
23         enum bch_rebalance_states       state;
24         u64                             wait_iotime_start;
25         u64                             wait_iotime_end;
26         u64                             wait_wallclock_start;
27
28         struct bch_move_stats           work_stats;
29
30         struct bbpos                    scan_start;
31         struct bbpos                    scan_end;
32         struct bch_move_stats           scan_stats;
33
34         unsigned                        enabled:1;
35 };
36
37 #endif /* _BCACHEFS_REBALANCE_TYPES_H */