{
struct bch_dev *ca;
unsigned i;
- bool wrote;
int ret;
down_read(&c->gc_lock);
}
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)
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: