Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bcachefs: Fix error path in bch2_replicas_gc_end()

We were dropping a lock we hadn't taken when entering with an error.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>

+5 -13
+5 -13
fs/bcachefs/replicas.c
··· 462 462 { 463 463 lockdep_assert_held(&c->replicas_gc_lock); 464 464 465 - if (ret) 466 - goto err; 467 - 468 465 mutex_lock(&c->sb_lock); 469 466 percpu_down_write(&c->mark_lock); 470 467 471 - ret = bch2_cpu_replicas_to_sb_replicas(c, &c->replicas_gc); 472 - if (ret) 473 - goto err; 468 + ret = ret ?: 469 + bch2_cpu_replicas_to_sb_replicas(c, &c->replicas_gc) ?: 470 + replicas_table_update(c, &c->replicas_gc); 474 471 475 - ret = replicas_table_update(c, &c->replicas_gc); 476 - err: 477 472 kfree(c->replicas_gc.entries); 478 473 c->replicas_gc.entries = NULL; 479 474 ··· 574 579 575 580 bch2_cpu_replicas_sort(&new); 576 581 577 - ret = bch2_cpu_replicas_to_sb_replicas(c, &new); 578 - if (ret) 579 - goto err; 582 + ret = bch2_cpu_replicas_to_sb_replicas(c, &new) ?: 583 + replicas_table_update(c, &new); 580 584 581 - ret = replicas_table_update(c, &new); 582 - err: 583 585 kfree(new.entries); 584 586 585 587 percpu_up_write(&c->mark_lock);