From 8e3f913e2ab6ac2cb9e75a0a8635d0b44f838c33 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 18 Mar 2022 00:42:09 -0400 Subject: bcachefs: Copygc now uses backpointers Previously, copygc needed to walk the entire extents & reflink btrees to find extents that needed to be moved. Now that we have backpointers, this patch implements bch2_evacuate_bucket() in the move code, which copygc now uses for evacuating mostly empty buckets. Also, thanks to the new backpointers code, copygc can now move btree nodes. Signed-off-by: Kent Overstreet --- fs/bcachefs/move.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'fs/bcachefs/move.h') diff --git a/fs/bcachefs/move.h b/fs/bcachefs/move.h index 2eb6a15542e0..b14f679f6904 100644 --- a/fs/bcachefs/move.h +++ b/fs/bcachefs/move.h @@ -15,6 +15,7 @@ struct moving_context { struct bch_move_stats *stats; struct write_point_specifier wp; bool wait_on_copygc; + bool write_error; /* For waiting on outstanding reads and writes: */ struct closure cl; @@ -46,6 +47,15 @@ int bch2_move_data(struct bch_fs *, bool, move_pred_fn, void *); +int __bch2_evacuate_bucket(struct moving_context *, + struct bpos, int, + struct data_update_opts); +int bch2_evacuate_bucket(struct bch_fs *, struct bpos, int, + struct data_update_opts, + struct bch_ratelimit *, + struct bch_move_stats *, + struct write_point_specifier, + bool); int bch2_data_job(struct bch_fs *, struct bch_move_stats *, struct bch_ioctl_data); -- cgit v1.2.3