Commit 86a225c4 authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: fix a deadlock on startup

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 3c5fa33a
......@@ -1678,7 +1678,6 @@ int bch2_fs_allocator_start(struct bch_fs *c)
{
struct bch_dev *ca;
unsigned i;
bool wrote;
int ret;
down_read(&c->gc_lock);
......@@ -1697,8 +1696,7 @@ int bch2_fs_allocator_start(struct bch_fs *c)
}
set_bit(BCH_FS_ALLOCATOR_RUNNING, &c->flags);
return bch2_alloc_write(c, false, &wrote);
return 0;
}
void bch2_fs_allocator_background_init(struct bch_fs *c)
......
......@@ -888,9 +888,18 @@ int bch2_journal_replay(struct bch_fs *c, struct list_head *list)
static unsigned journal_dev_buckets_available(struct journal *j,
struct journal_device *ja)
{
struct bch_fs *c = container_of(j, struct bch_fs, journal);
unsigned next = (ja->cur_idx + 1) % ja->nr;
unsigned available = (ja->last_idx + ja->nr - next) % ja->nr;
/*
* Allocator startup needs some journal space before we can do journal
* replay:
*/
if (available &&
test_bit(BCH_FS_ALLOCATOR_STARTED, &c->flags))
available--;
/*
* Don't use the last bucket unless writing the new last_seq
* will make another bucket available:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment