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>
This commit is contained in:
parent
7bd68c7304
commit
e8bde78a17
@ -946,16 +946,9 @@ static enum data_cmd rereplicate_pred(struct bch_fs *c, void *arg,
|
|||||||
struct data_opts *data_opts)
|
struct data_opts *data_opts)
|
||||||
{
|
{
|
||||||
unsigned nr_good = bch2_bkey_durability(c, k);
|
unsigned nr_good = bch2_bkey_durability(c, k);
|
||||||
unsigned replicas = 0;
|
unsigned replicas = bkey_is_btree_ptr(k.k)
|
||||||
|
? c->opts.metadata_replicas
|
||||||
switch (k.k->type) {
|
: io_opts->data_replicas;
|
||||||
case KEY_TYPE_btree_ptr:
|
|
||||||
replicas = c->opts.metadata_replicas;
|
|
||||||
break;
|
|
||||||
case KEY_TYPE_extent:
|
|
||||||
replicas = io_opts->data_replicas;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!nr_good || nr_good >= replicas)
|
if (!nr_good || nr_good >= replicas)
|
||||||
return DATA_SKIP;
|
return DATA_SKIP;
|
||||||
|
Loading…
Reference in New Issue
Block a user