Commit | Line | Data |
---|---|---|
1c6fdbd8 KO |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _BCACHEFS_MOVE_H | |
3 | #define _BCACHEFS_MOVE_H | |
4 | ||
5 | #include "btree_iter.h" | |
6 | #include "buckets.h" | |
7 | #include "io_types.h" | |
8 | #include "move_types.h" | |
9 | ||
10 | struct bch_read_bio; | |
11 | struct moving_context; | |
12 | ||
13 | enum data_cmd { | |
14 | DATA_SKIP, | |
15 | DATA_SCRUB, | |
16 | DATA_ADD_REPLICAS, | |
17 | DATA_REWRITE, | |
18 | DATA_PROMOTE, | |
19 | }; | |
20 | ||
21 | struct data_opts { | |
22 | u16 target; | |
b88e971e KO |
23 | u8 rewrite_dev; |
24 | u8 nr_replicas; | |
1c6fdbd8 KO |
25 | int btree_insert_flags; |
26 | }; | |
27 | ||
28 | struct migrate_write { | |
76426098 | 29 | enum btree_id btree_id; |
1c6fdbd8 KO |
30 | enum data_cmd data_cmd; |
31 | struct data_opts data_opts; | |
32 | ||
33 | unsigned nr_ptrs_reserved; | |
34 | ||
35 | struct moving_context *ctxt; | |
36 | ||
37 | /* what we read: */ | |
38 | struct bch_extent_ptr ptr; | |
39 | u64 offset; | |
40 | ||
41 | struct bch_write_op op; | |
42 | }; | |
43 | ||
44 | void bch2_migrate_read_done(struct migrate_write *, struct bch_read_bio *); | |
45 | int bch2_migrate_write_init(struct bch_fs *, struct migrate_write *, | |
46 | struct write_point_specifier, | |
47 | struct bch_io_opts, | |
48 | enum data_cmd, struct data_opts, | |
76426098 | 49 | enum btree_id, struct bkey_s_c); |
1c6fdbd8 KO |
50 | |
51 | typedef enum data_cmd (*move_pred_fn)(struct bch_fs *, void *, | |
26609b61 | 52 | struct bkey_s_c, |
1c6fdbd8 KO |
53 | struct bch_io_opts *, struct data_opts *); |
54 | ||
55 | int bch2_move_data(struct bch_fs *, struct bch_ratelimit *, | |
56 | struct write_point_specifier, | |
57 | struct bpos, struct bpos, | |
58 | move_pred_fn, void *, | |
59 | struct bch_move_stats *); | |
60 | ||
61 | int bch2_data_job(struct bch_fs *, | |
62 | struct bch_move_stats *, | |
63 | struct bch_ioctl_data); | |
64 | ||
65 | #endif /* _BCACHEFS_MOVE_H */ |