summaryrefslogtreecommitdiff
path: root/fs/bcachefs/move.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-10-12 14:15:45 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:13 -0400
commite8bde78a178798a414289f2ad5c1f015d8d53139 (patch)
tree0d7e0c8cc3178151adb1bfe902dbb4d58e6c5741 /fs/bcachefs/move.c
parent7bd68c73044f1ba39f505082bbed3b2e26f69a13 (diff)
downloadlwn-e8bde78a178798a414289f2ad5c1f015d8d53139.tar.gz
lwn-e8bde78a178798a414289f2ad5c1f015d8d53139.zip
bcachefs: Fix rereplicate_pred()
It was switching off of the key type incorrectly - this code must've been quite old, and not rereplicating anything that wasn't a btree_ptr_v1 or a plain old extent. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/move.c')
-rw-r--r--fs/bcachefs/move.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index 5e61cd431ef9..fbb6c043ad9b 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -946,16 +946,9 @@ static enum data_cmd rereplicate_pred(struct bch_fs *c, void *arg,
struct data_opts *data_opts)
{
unsigned nr_good = bch2_bkey_durability(c, k);
- unsigned replicas = 0;
-
- switch (k.k->type) {
- case KEY_TYPE_btree_ptr:
- replicas = c->opts.metadata_replicas;
- break;
- case KEY_TYPE_extent:
- replicas = io_opts->data_replicas;
- break;
- }
+ unsigned replicas = bkey_is_btree_ptr(k.k)
+ ? c->opts.metadata_replicas
+ : io_opts->data_replicas;
if (!nr_good || nr_good >= replicas)
return DATA_SKIP;