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