]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: plumb btree_id through move_pred_fd
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 3 Apr 2025 23:51:05 +0000 (19:51 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 22 May 2025 00:14:22 +0000 (20:14 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/move.c
fs/bcachefs/move.h
fs/bcachefs/rebalance.c

index d40e2d14ec528d14afcb693026fa2898f3e9c857..07cea68b04f00e4010deb177528e181a7360c9b4 100644 (file)
@@ -667,7 +667,7 @@ static int bch2_move_data_btree(struct moving_context *ctxt,
                        continue;
 
                memset(&data_opts, 0, sizeof(data_opts));
-               if (!pred(c, arg, k, io_opts, &data_opts))
+               if (!pred(c, arg, extent_iter->btree_id, k, io_opts, &data_opts))
                        goto next;
 
                /*
@@ -851,7 +851,7 @@ static int __bch2_move_data_phys(struct moving_context *ctxt,
                }
 
                struct data_update_opts data_opts = {};
-               if (!pred(c, arg, k, &io_opts, &data_opts)) {
+               if (!pred(c, arg, bp.v->btree_id, k, &io_opts, &data_opts)) {
                        bch2_trans_iter_exit(trans, &iter);
                        goto next;
                }
@@ -934,7 +934,8 @@ struct evacuate_bucket_arg {
        struct data_update_opts data_opts;
 };
 
-static bool evacuate_bucket_pred(struct bch_fs *c, void *_arg, struct bkey_s_c k,
+static bool evacuate_bucket_pred(struct bch_fs *c, void *_arg,
+                                enum btree_id btree, struct bkey_s_c k,
                                 struct bch_io_opts *io_opts,
                                 struct data_update_opts *data_opts)
 {
@@ -1048,7 +1049,7 @@ next:
 }
 
 static bool rereplicate_pred(struct bch_fs *c, void *arg,
-                            struct bkey_s_c k,
+                            enum btree_id btree, struct bkey_s_c k,
                             struct bch_io_opts *io_opts,
                             struct data_update_opts *data_opts)
 {
@@ -1080,7 +1081,7 @@ static bool rereplicate_pred(struct bch_fs *c, void *arg,
 }
 
 static bool migrate_pred(struct bch_fs *c, void *arg,
-                        struct bkey_s_c k,
+                        enum btree_id btree, struct bkey_s_c k,
                         struct bch_io_opts *io_opts,
                         struct data_update_opts *data_opts)
 {
@@ -1107,7 +1108,7 @@ static bool rereplicate_btree_pred(struct bch_fs *c, void *arg,
                                   struct bch_io_opts *io_opts,
                                   struct data_update_opts *data_opts)
 {
-       return rereplicate_pred(c, arg, bkey_i_to_s_c(&b->key), io_opts, data_opts);
+       return rereplicate_pred(c, arg, b->c.btree_id, bkey_i_to_s_c(&b->key), io_opts, data_opts);
 }
 
 /*
@@ -1163,7 +1164,7 @@ int bch2_scan_old_btree_nodes(struct bch_fs *c, struct bch_move_stats *stats)
 }
 
 static bool drop_extra_replicas_pred(struct bch_fs *c, void *arg,
-                            struct bkey_s_c k,
+                            enum btree_id btree, struct bkey_s_c k,
                             struct bch_io_opts *io_opts,
                             struct data_update_opts *data_opts)
 {
@@ -1196,11 +1197,12 @@ static bool drop_extra_replicas_btree_pred(struct bch_fs *c, void *arg,
                                   struct bch_io_opts *io_opts,
                                   struct data_update_opts *data_opts)
 {
-       return drop_extra_replicas_pred(c, arg, bkey_i_to_s_c(&b->key), io_opts, data_opts);
+       return drop_extra_replicas_pred(c, arg, b->c.btree_id, bkey_i_to_s_c(&b->key),
+                                       io_opts, data_opts);
 }
 
 static bool scrub_pred(struct bch_fs *c, void *_arg,
-                      struct bkey_s_c k,
+                      enum btree_id btree, struct bkey_s_c k,
                       struct bch_io_opts *io_opts,
                       struct data_update_opts *data_opts)
 {
index 1ab6dd4621d699d2b0fe1e6d9e36a2537e09aa5e..9c6c229e583e48dfcc5175065a4047d45fbd9680 100644 (file)
@@ -72,7 +72,7 @@ do {                                                                  \
                break;                                                  \
 } while (1)
 
-typedef bool (*move_pred_fn)(struct bch_fs *, void *, struct bkey_s_c,
+typedef bool (*move_pred_fn)(struct bch_fs *, void *, enum btree_id, struct bkey_s_c,
                             struct bch_io_opts *, struct data_update_opts *);
 
 extern const char * const bch2_data_ops_strs[];
index 3c45500c1a2807af489b29b61811991a30f1e66e..d2a7001cf8722e6d8de270b2a910b208fd50f6c0 100644 (file)
@@ -454,7 +454,7 @@ out:
 }
 
 static bool rebalance_pred(struct bch_fs *c, void *arg,
-                          struct bkey_s_c k,
+                          enum btree_id btree, struct bkey_s_c k,
                           struct bch_io_opts *io_opts,
                           struct data_update_opts *data_opts)
 {