summaryrefslogtreecommitdiff
path: root/fs/bcachefs/data_update.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/data_update.c')
-rw-r--r--fs/bcachefs/data_update.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/fs/bcachefs/data_update.c b/fs/bcachefs/data_update.c
index a314d70c6b8e..b7e0e31407bf 100644
--- a/fs/bcachefs/data_update.c
+++ b/fs/bcachefs/data_update.c
@@ -460,17 +460,11 @@ restart_drop_extra_replicas:
this_cpu_add(c->counters[BCH_COUNTER_io_move_finish], new->k.size);
if (trace_io_move_finish_enabled())
trace_io_move_finish2(m, &new->k_i, insert);
+ goto next;
err:
- if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
- ret = 0;
- if (ret)
+ if (!bch2_err_matches(ret, BCH_ERR_transaction_restart))
break;
-next:
- while (bkey_ge(iter.pos, bch2_keylist_front(&op->insert_keys)->k.p)) {
- bch2_keylist_pop_front(&op->insert_keys);
- if (bch2_keylist_empty(&op->insert_keys))
- goto out;
- }
+
continue;
nowork:
if (m->stats) {
@@ -479,11 +473,15 @@ nowork:
atomic64_add(k.k->p.offset - iter.pos.offset,
&m->stats->sectors_raced);
}
-
count_event(c, io_move_fail);
bch2_btree_iter_advance(&iter);
- goto next;
+next:
+ while (bkey_ge(iter.pos, bch2_keylist_front(&op->insert_keys)->k.p)) {
+ bch2_keylist_pop_front(&op->insert_keys);
+ if (bch2_keylist_empty(&op->insert_keys))
+ goto out;
+ }
}
out:
BUG_ON(bch2_err_matches(ret, BCH_ERR_transaction_restart));