mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 22:22:08 +02:00
bcachefs: Fix key cache assertion
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
0098376f03
commit
4932e07ea0
|
|
@ -489,6 +489,7 @@ enum {
|
|||
BCH_FS_FSCK_DONE,
|
||||
BCH_FS_STARTED,
|
||||
BCH_FS_RW,
|
||||
BCH_FS_WAS_RW,
|
||||
|
||||
/* shutdown: */
|
||||
BCH_FS_STOPPING,
|
||||
|
|
|
|||
|
|
@ -683,7 +683,9 @@ void bch2_fs_btree_key_cache_exit(struct btree_key_cache *bc)
|
|||
kmem_cache_free(bch2_key_cache, ck);
|
||||
}
|
||||
|
||||
BUG_ON(atomic_long_read(&bc->nr_dirty) && !bch2_journal_error(&c->journal));
|
||||
BUG_ON(atomic_long_read(&bc->nr_dirty) &&
|
||||
!bch2_journal_error(&c->journal) &&
|
||||
test_bit(BCH_FS_WAS_RW, &c->flags));
|
||||
BUG_ON(atomic_long_read(&bc->nr_keys));
|
||||
|
||||
mutex_unlock(&bc->lock);
|
||||
|
|
|
|||
|
|
@ -973,7 +973,7 @@ int bch2_fs_recovery(struct bch_fs *c)
|
|||
struct jset *last_journal_entry = NULL;
|
||||
u64 blacklist_seq, journal_seq;
|
||||
bool write_sb = false;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
if (c->sb.clean)
|
||||
clean = read_superblock_clean(c);
|
||||
|
|
@ -1253,10 +1253,9 @@ int bch2_fs_recovery(struct bch_fs *c)
|
|||
if (c->journal_seq_blacklist_table &&
|
||||
c->journal_seq_blacklist_table->nr > 128)
|
||||
queue_work(system_long_wq, &c->journal_seq_blacklist_gc_work);
|
||||
out:
|
||||
|
||||
ret = 0;
|
||||
err:
|
||||
fsck_err:
|
||||
out:
|
||||
set_bit(BCH_FS_FSCK_DONE, &c->flags);
|
||||
bch2_flush_fsck_errs(c);
|
||||
|
||||
|
|
@ -1270,6 +1269,10 @@ int bch2_fs_recovery(struct bch_fs *c)
|
|||
else
|
||||
bch_verbose(c, "ret %i", ret);
|
||||
return ret;
|
||||
err:
|
||||
fsck_err:
|
||||
bch2_fs_emergency_read_only(c);
|
||||
goto out;
|
||||
}
|
||||
|
||||
int bch2_fs_initialize(struct bch_fs *c)
|
||||
|
|
|
|||
|
|
@ -441,6 +441,7 @@ static int __bch2_fs_read_write(struct bch_fs *c, bool early)
|
|||
|
||||
percpu_ref_reinit(&c->writes);
|
||||
set_bit(BCH_FS_RW, &c->flags);
|
||||
set_bit(BCH_FS_WAS_RW, &c->flags);
|
||||
return 0;
|
||||
err:
|
||||
__bch2_fs_read_only(c);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user