summaryrefslogtreecommitdiff
path: root/fs/bcachefs/data_update.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/data_update.h')
-rw-r--r--fs/bcachefs/data_update.h40
1 files changed, 16 insertions, 24 deletions
diff --git a/fs/bcachefs/data_update.h b/fs/bcachefs/data_update.h
index 81388a442a95..e64505453a55 100644
--- a/fs/bcachefs/data_update.h
+++ b/fs/bcachefs/data_update.h
@@ -3,44 +3,36 @@
#ifndef _BCACHEFS_DATA_UPDATE_H
#define _BCACHEFS_DATA_UPDATE_H
+#include "bkey_buf.h"
#include "io_types.h"
-enum data_cmd {
- DATA_SKIP,
- DATA_SCRUB,
- DATA_ADD_REPLICAS,
- DATA_REWRITE,
- DATA_PROMOTE,
-};
+struct moving_context;
-struct data_opts {
+struct data_update_opts {
+ unsigned rewrite_ptrs;
u16 target;
- u8 rewrite_dev;
- u8 nr_replicas;
- int btree_insert_flags;
+ u8 extra_replicas;
+ unsigned btree_insert_flags;
+ unsigned write_flags;
};
struct data_update {
+ /* extent being updated: */
enum btree_id btree_id;
- enum data_cmd data_cmd;
- struct data_opts data_opts;
-
- unsigned nr_ptrs_reserved;
-
+ struct bkey_buf k;
+ struct data_update_opts data_opts;
struct moving_context *ctxt;
-
- /* what we read: */
- struct bch_extent_ptr ptr;
- u64 offset;
-
struct bch_write_op op;
};
-void bch2_data_update_read_done(struct data_update *, struct bch_read_bio *);
+void bch2_data_update_read_done(struct data_update *,
+ struct bch_extent_crc_unpacked,
+ struct closure *);
+
+void bch2_data_update_exit(struct data_update *);
int bch2_data_update_init(struct bch_fs *, struct data_update *,
struct write_point_specifier,
- struct bch_io_opts,
- enum data_cmd, struct data_opts,
+ struct bch_io_opts, struct data_update_opts,
enum btree_id, struct bkey_s_c);
#endif /* _BCACHEFS_DATA_UPDATE_H */