Commit 84c72755 authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Initialize ec work structs early

We need to ensure that work structs in bch_fs always get initialized -
otherwise an error in filesystem initialization can pop a warning in the
workqueue code when we try to cancel a work struct that wasn't
initialized.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
parent ce6201c4
...@@ -1682,11 +1682,14 @@ void bch2_fs_ec_exit(struct bch_fs *c) ...@@ -1682,11 +1682,14 @@ void bch2_fs_ec_exit(struct bch_fs *c)
bioset_exit(&c->ec_bioset); 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_create_work, ec_stripe_create_work);
INIT_WORK(&c->ec_stripe_delete_work, ec_stripe_delete_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), return bioset_init(&c->ec_bioset, 1, offsetof(struct ec_bio, bio),
BIOSET_NEED_BVECS); BIOSET_NEED_BVECS);
} }
...@@ -224,6 +224,7 @@ void bch2_stripes_heap_to_text(struct printbuf *, struct bch_fs *); ...@@ -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_new_stripes_to_text(struct printbuf *, struct bch_fs *);
void bch2_fs_ec_exit(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 *); int bch2_fs_ec_init(struct bch_fs *);
#endif /* _BCACHEFS_EC_H */ #endif /* _BCACHEFS_EC_H */
...@@ -663,6 +663,7 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts) ...@@ -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_allocator_foreground_init(c);
bch2_fs_rebalance_init(c); bch2_fs_rebalance_init(c);
bch2_fs_quota_init(c); bch2_fs_quota_init(c);
bch2_fs_ec_init_early(c);
INIT_LIST_HEAD(&c->list); INIT_LIST_HEAD(&c->list);
......
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