summaryrefslogtreecommitdiff
path: root/fs/bcachefs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/super.c')
-rw-r--r--fs/bcachefs/super.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c
index 32b12311928e..de1e8912975c 100644
--- a/fs/bcachefs/super.c
+++ b/fs/bcachefs/super.c
@@ -833,6 +833,8 @@ int bch2_fs_init_rw(struct bch_fs *c)
if (test_bit(BCH_FS_rw_init_done, &c->flags))
return 0;
+ bch_verbose(c, "doing rw allocations");
+
if (!(c->btree_update_wq = alloc_workqueue("bcachefs",
WQ_HIGHPRI|WQ_FREEZABLE|WQ_MEM_RECLAIM|WQ_UNBOUND, 512)) ||
!(c->btree_write_complete_wq = alloc_workqueue("bcachefs_btree_write_complete",
@@ -1286,7 +1288,12 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts *opts,
if (ret)
goto err;
- if (go_rw_in_recovery(c)) {
+ /*
+ * just make sure this is always allocated if we might need it - mount
+ * failing due to kthread_create() failing is _very_ annoying
+ */
+ if (!(c->sb.features & BIT_ULL(BCH_FEATURE_no_alloc_info)) ||
+ go_rw_in_recovery(c)) {
/*
* start workqueues/kworkers early - kthread creation checks for
* pending signals, which is _very_ annoying