1 #ifndef _BCACHEFS_MOVE_H
2 #define _BCACHEFS_MOVE_H
4 #include "btree_iter.h"
21 int btree_insert_flags;
24 struct migrate_write {
25 enum data_cmd data_cmd;
26 struct data_opts data_opts;
28 unsigned nr_ptrs_reserved;
30 struct moving_context *ctxt;
33 struct bch_extent_ptr ptr;
36 struct bch_write_op op;
39 void bch2_migrate_read_done(struct migrate_write *, struct bch_read_bio *);
40 int bch2_migrate_write_init(struct bch_fs *, struct migrate_write *,
41 struct bch_devs_mask *,
42 struct write_point_specifier,
44 enum data_cmd, struct data_opts,
47 #define SECTORS_IN_FLIGHT_PER_DEVICE 2048
49 typedef enum data_cmd (*move_pred_fn)(struct bch_fs *, void *,
50 enum bkey_type, struct bkey_s_c_extent,
51 struct bch_io_opts *, struct data_opts *);
53 struct bch_move_stats {
54 enum bch_data_type data_type;
55 struct btree_iter iter;
57 atomic64_t keys_moved;
58 atomic64_t sectors_moved;
59 atomic64_t sectors_seen;
60 atomic64_t sectors_raced;
63 int bch2_move_data(struct bch_fs *, struct bch_ratelimit *,
64 unsigned, struct bch_devs_mask *,
65 struct write_point_specifier,
66 struct bpos, struct bpos,
68 struct bch_move_stats *);
70 int bch2_data_job(struct bch_fs *,
71 struct bch_move_stats *,
72 struct bch_ioctl_data);
74 #endif /* _BCACHEFS_MOVE_H */