diff options
Diffstat (limited to 'fs/bcachefs/super.c')
-rw-r--r-- | fs/bcachefs/super.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c index 7748dafb324e..9dc201ab095f 100644 --- a/fs/bcachefs/super.c +++ b/fs/bcachefs/super.c @@ -29,6 +29,7 @@ #include "io.h" #include "journal.h" #include "journal_reclaim.h" +#include "journal_seq_blacklist.h" #include "move.h" #include "migrate.h" #include "movinggc.h" @@ -499,6 +500,7 @@ static void bch2_fs_free(struct bch_fs *c) kfree(c->replicas.entries); kfree(c->replicas_gc.entries); kfree(rcu_dereference_protected(c->disk_groups, 1)); + kfree(c->journal_seq_blacklist_table); if (c->journal_reclaim_wq) destroy_workqueue(c->journal_reclaim_wq); @@ -527,6 +529,10 @@ void bch2_fs_stop(struct bch_fs *c) bch_verbose(c, "shutting down"); + set_bit(BCH_FS_STOPPING, &c->flags); + + cancel_work_sync(&c->journal_seq_blacklist_gc_work); + for_each_member_device(ca, c, i) if (ca->kobj.state_in_sysfs && ca->disk_sb.bdev) @@ -663,6 +669,9 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts) spin_lock_init(&c->btree_write_error_lock); INIT_WORK(&c->btree_write_error_work, bch2_btree_write_error_work); + INIT_WORK(&c->journal_seq_blacklist_gc_work, + bch2_blacklist_entries_gc); + INIT_LIST_HEAD(&c->fsck_errors); mutex_init(&c->fsck_error_lock); |