bcachefs: Don't quash error in bch2_bucket_alloc_set_trans()
We were incorrectly returning -BCH_ERR_insufficient_devices when we'd received a different error from bch2_bucket_alloc_trans(), which (erronously) turns into -EROFS further up the call chain. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
685e0f0c47
commit
943f9946a6
@ -671,7 +671,7 @@ static int bch2_bucket_alloc_set_trans(struct btree_trans *trans,
|
||||
bch2_dev_alloc_list(c, stripe, devs_may_alloc);
|
||||
unsigned dev;
|
||||
struct bch_dev *ca;
|
||||
int ret = 0;
|
||||
int ret = -BCH_ERR_insufficient_devices;
|
||||
unsigned i;
|
||||
|
||||
BUG_ON(*nr_effective >= nr_replicas);
|
||||
@ -701,8 +701,8 @@ static int bch2_bucket_alloc_set_trans(struct btree_trans *trans,
|
||||
bch2_dev_stripe_increment(ca, stripe);
|
||||
percpu_ref_put(&ca->ref);
|
||||
|
||||
ret = PTR_ERR_OR_ZERO(ob);
|
||||
if (ret) {
|
||||
if (IS_ERR(ob)) {
|
||||
ret = PTR_ERR(ob);
|
||||
if (bch2_err_matches(ret, BCH_ERR_transaction_restart) || cl)
|
||||
break;
|
||||
continue;
|
||||
@ -711,15 +711,12 @@ static int bch2_bucket_alloc_set_trans(struct btree_trans *trans,
|
||||
add_new_bucket(c, ptrs, devs_may_alloc,
|
||||
nr_effective, have_cache, flags, ob);
|
||||
|
||||
if (*nr_effective >= nr_replicas)
|
||||
if (*nr_effective >= nr_replicas) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (*nr_effective >= nr_replicas)
|
||||
ret = 0;
|
||||
else if (!ret)
|
||||
ret = -BCH_ERR_insufficient_devices;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user