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 void bch2_data_update_opts_to_text(struct printbuf *, struct bch_fs *, 21 struct bch_io_opts *, struct data_update_opts *); 22 23 struct data_update { 24 /* extent being updated: */ 25 enum btree_id btree_id; 26 struct bkey_buf k; 27 struct data_update_opts data_opts; 28 struct moving_context *ctxt; 29 struct bch_move_stats *stats; 30 struct bch_write_op op; 31 }; 32 33 void bch2_data_update_to_text(struct printbuf *, struct data_update *); 34 35 int bch2_data_update_index_update(struct bch_write_op *); 36 37 void bch2_data_update_read_done(struct data_update *, 38 struct bch_extent_crc_unpacked); 39 40 int bch2_extent_drop_ptrs(struct btree_trans *, 41 struct btree_iter *, 42 struct bkey_s_c, 43 struct bch_io_opts *, 44 struct data_update_opts *); 45 46 void bch2_data_update_exit(struct data_update *); 47 int bch2_data_update_init(struct btree_trans *, struct btree_iter *, 48 struct moving_context *, 49 struct data_update *, 50 struct write_point_specifier, 51 struct bch_io_opts, struct data_update_opts, 52 enum btree_id, struct bkey_s_c); 53 void bch2_data_update_opts_normalize(struct bkey_s_c, struct data_update_opts *); 54 55 #endif /* _BCACHEFS_DATA_UPDATE_H */ 56