bcachefs: Start journal reclaim thread earlier
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 21 Jun 2021 20:30:52 +0000 (16:30 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:54 +0000 (17:08 -0400)
Especially in userspace, we sometime run into resource exhaustion issues
with starting up threads after mark and sweep/fsck.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/journal.c
fs/bcachefs/super.c

index c2b1eef6265a1045e812f46333afe8cbe1e360c2..d5bbbf619359a7a15f0af9de5d9b9b1ba0537589 100644 (file)
@@ -1044,7 +1044,7 @@ int bch2_fs_journal_start(struct journal *j, u64 cur_seq,
        bch2_journal_space_available(j);
        spin_unlock(&j->lock);
 
-       return 0;
+       return bch2_journal_reclaim_start(j);
 }
 
 /* init/exit: */
index 0ff80816a54f32363fb2d3160c5539f3e962acdf..8de04bfae800acf9c922ecd663b6924581df61f1 100644 (file)
@@ -276,7 +276,7 @@ static void bch2_writes_disabled(struct percpu_ref *writes)
 void bch2_fs_read_only(struct bch_fs *c)
 {
        if (!test_bit(BCH_FS_RW, &c->flags)) {
-               BUG_ON(c->journal.reclaim_thread);
+               bch2_journal_reclaim_stop(&c->journal);
                return;
        }
 
@@ -431,12 +431,6 @@ static int __bch2_fs_read_write(struct bch_fs *c, bool early)
        for_each_rw_member(ca, c, i)
                bch2_wake_allocator(ca);
 
-       ret = bch2_journal_reclaim_start(&c->journal);
-       if (ret) {
-               bch_err(c, "error starting journal reclaim: %i", ret);
-               return ret;
-       }
-
        if (!early) {
                ret = bch2_fs_read_write_late(c);
                if (ret)