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_write_op op; 27 }; 28 29 int bch2_data_update_index_update(struct bch_write_op *); 30 31 void bch2_data_update_read_done(struct data_update *, 32 struct bch_extent_crc_unpacked); 33 34 void bch2_data_update_exit(struct data_update *); 35 void bch2_update_unwritten_extent(struct btree_trans *, struct data_update *); 36 int bch2_data_update_init(struct btree_trans *, struct moving_context *, 37 struct data_update *, 38 struct write_point_specifier, 39 struct bch_io_opts, struct data_update_opts, 40 enum btree_id, struct bkey_s_c); 41 void bch2_data_update_opts_normalize(struct bkey_s_c, struct data_update_opts *); 42 43 #endif /* _BCACHEFS_DATA_UPDATE_H */ 44