diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-10-12 14:15:45 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:13 -0400 |
commit | e8bde78a178798a414289f2ad5c1f015d8d53139 (patch) | |
tree | 0d7e0c8cc3178151adb1bfe902dbb4d58e6c5741 /fs/bcachefs/move.c | |
parent | 7bd68c73044f1ba39f505082bbed3b2e26f69a13 (diff) | |
download | lwn-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.c | 13 |
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; |