1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #ifndef _BCACHEFS_DATA_UPDATE_H |
4 | #define _BCACHEFS_DATA_UPDATE_H |
5 | |
6 | #include "bkey_buf.h" |
7 | #include "io_write_types.h" |
8 | |
9 | struct moving_context; |
10 | |
11 | struct data_update_opts { |
12 | unsigned rewrite_ptrs; |
13 | unsigned kill_ptrs; |
14 | u16 target; |
15 | u8 ; |
16 | unsigned btree_insert_flags; |
17 | unsigned write_flags; |
18 | }; |
19 | |
20 | struct data_update { |
21 | /* extent being updated: */ |
22 | enum btree_id btree_id; |
23 | struct bkey_buf k; |
24 | struct data_update_opts data_opts; |
25 | struct moving_context *ctxt; |
26 | struct bch_move_stats *stats; |
27 | struct bch_write_op op; |
28 | }; |
29 | |
30 | int bch2_data_update_index_update(struct bch_write_op *); |
31 | |
32 | void bch2_data_update_read_done(struct data_update *, |
33 | struct bch_extent_crc_unpacked); |
34 | |
35 | int bch2_extent_drop_ptrs(struct btree_trans *, |
36 | struct btree_iter *, |
37 | struct bkey_s_c, |
38 | struct data_update_opts); |
39 | |
40 | void bch2_data_update_exit(struct data_update *); |
41 | int bch2_data_update_init(struct btree_trans *, struct btree_iter *, |
42 | struct moving_context *, |
43 | struct data_update *, |
44 | struct write_point_specifier, |
45 | struct bch_io_opts, struct data_update_opts, |
46 | enum btree_id, struct bkey_s_c); |
47 | void bch2_data_update_opts_normalize(struct bkey_s_c, struct data_update_opts *); |
48 | |
49 | #endif /* _BCACHEFS_DATA_UPDATE_H */ |
50 | |