diff options
Diffstat (limited to 'fs/bcachefs/data_update.c')
-rw-r--r-- | fs/bcachefs/data_update.c | 20 |
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)); |