diff --git a/fs/bcachefs/ec.c b/fs/bcachefs/ec.c index 7a524f604875..ae33d3ea8ec1 100644 --- a/fs/bcachefs/ec.c +++ b/fs/bcachefs/ec.c @@ -1682,11 +1682,14 @@ void bch2_fs_ec_exit(struct bch_fs *c) bioset_exit(&c->ec_bioset); } -int bch2_fs_ec_init(struct bch_fs *c) +void bch2_fs_ec_init_early(struct bch_fs *c) { INIT_WORK(&c->ec_stripe_create_work, ec_stripe_create_work); INIT_WORK(&c->ec_stripe_delete_work, ec_stripe_delete_work); +} +int bch2_fs_ec_init(struct bch_fs *c) +{ return bioset_init(&c->ec_bioset, 1, offsetof(struct ec_bio, bio), BIOSET_NEED_BVECS); } diff --git a/fs/bcachefs/ec.h b/fs/bcachefs/ec.h index af7f8eee94b0..a4c13d61af10 100644 --- a/fs/bcachefs/ec.h +++ b/fs/bcachefs/ec.h @@ -224,6 +224,7 @@ void bch2_stripes_heap_to_text(struct printbuf *, struct bch_fs *); void bch2_new_stripes_to_text(struct printbuf *, struct bch_fs *); void bch2_fs_ec_exit(struct bch_fs *); +void bch2_fs_ec_init_early(struct bch_fs *); int bch2_fs_ec_init(struct bch_fs *); #endif /* _BCACHEFS_EC_H */ diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c index 689c82f6cb5d..d2776efa9985 100644 --- a/fs/bcachefs/super.c +++ b/fs/bcachefs/super.c @@ -663,6 +663,7 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts) bch2_fs_allocator_foreground_init(c); bch2_fs_rebalance_init(c); bch2_fs_quota_init(c); + bch2_fs_ec_init_early(c); INIT_LIST_HEAD(&c->list);