diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-03 14:27:44 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-03 20:38:51 -0400 |
commit | 5a6a42ab42de7376a1c71dff0e4c012770945acb (patch) | |
tree | 13f8b28cafd9e40199dc59215ac2f6391bd88755 | |
parent | 45d0c2596758c0d050972783dcb139e979e0b434 (diff) |
fixup! bcachefs: bch_sb_field_journal_v2
-rw-r--r-- | fs/bcachefs/journal.c | 11 | ||||
-rw-r--r-- | fs/bcachefs/journal_sb.c | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/fs/bcachefs/journal.c b/fs/bcachefs/journal.c index 505e8367b5f2..d01b1cd4000d 100644 --- a/fs/bcachefs/journal.c +++ b/fs/bcachefs/journal.c @@ -964,6 +964,7 @@ int bch2_set_nr_journal_buckets(struct bch_fs *c, struct bch_dev *ca, int bch2_dev_journal_alloc(struct bch_dev *ca) { unsigned nr; + int ret; if (dynamic_fault("bcachefs:add:journal_alloc")) return -ENOMEM; @@ -980,7 +981,15 @@ int bch2_dev_journal_alloc(struct bch_dev *ca) min(1 << 13, (1 << 24) / ca->mi.bucket_size)); - return __bch2_set_nr_journal_buckets(ca, nr, true, NULL); + if (ca->fs) + mutex_lock(&ca->fs->sb_lock); + + ret = __bch2_set_nr_journal_buckets(ca, nr, true, NULL); + + if (ca->fs) + mutex_unlock(&ca->fs->sb_lock); + + return ret; } /* startup/shutdown: */ diff --git a/fs/bcachefs/journal_sb.c b/fs/bcachefs/journal_sb.c index 8efe7b7e3dcb..506044e358db 100644 --- a/fs/bcachefs/journal_sb.c +++ b/fs/bcachefs/journal_sb.c @@ -186,7 +186,8 @@ int bch2_journal_buckets_to_sb(struct bch_fs *c, struct bch_dev *ca) struct bch_sb_field_journal_v2 *j; unsigned i, dst = 0, nr = 1; - lockdep_assert_held(&c->sb_lock); + if (c) + lockdep_assert_held(&c->sb_lock); if (!ja->nr) { bch2_sb_field_delete(&ca->disk_sb, BCH_SB_FIELD_journal); |