diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-11-22 00:15:48 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:17 +0300 |
commit | 7468c4effc8c93464ec0fd4336494312bebb8033 (patch) | |
tree | afe9767e9ecc86a78600e47209cf598d13f9c42c | |
parent | e5464a371d048865cd4fcba48879c4b37727df2e (diff) | |
download | linux-7468c4effc8c93464ec0fd4336494312bebb8033.tar.xz |
bcachefs: Fix BCH_FS_ERROR flag handling
We were setting BCH_FS_ERROR on startup if the superblock was marked as
containing errors, which is not what we wanted - BCH_FS_ERROR indicates
whether errors have been found, so that after a successful fsck we're
able to clear the error bit in the superblock.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/btree_gc.c | 2 | ||||
-rw-r--r-- | fs/bcachefs/super-io.c | 10 |
2 files changed, 1 insertions, 11 deletions
diff --git a/fs/bcachefs/btree_gc.c b/fs/bcachefs/btree_gc.c index ec5b7e2c7271..a15b3bfa9d47 100644 --- a/fs/bcachefs/btree_gc.c +++ b/fs/bcachefs/btree_gc.c @@ -1632,7 +1632,7 @@ again: bch2_mark_superblocks(c); - if (test_bit(BCH_FS_TOPOLOGY_ERROR, &c->flags) && + if (BCH_SB_HAS_TOPOLOGY_ERRORS(c->disk_sb.sb) && !test_bit(BCH_FS_INITIAL_GC_DONE, &c->flags) && c->opts.fix_errors != FSCK_OPT_NO) { bch_info(c, "starting topology repair pass"); diff --git a/fs/bcachefs/super-io.c b/fs/bcachefs/super-io.c index 3cc5d8ea743f..170f7d46fa34 100644 --- a/fs/bcachefs/super-io.c +++ b/fs/bcachefs/super-io.c @@ -445,16 +445,6 @@ int bch2_sb_to_fs(struct bch_fs *c, struct bch_sb *src) __copy_super(&c->disk_sb, src); - if (BCH_SB_HAS_ERRORS(c->disk_sb.sb)) - set_bit(BCH_FS_ERROR, &c->flags); - else - clear_bit(BCH_FS_ERROR, &c->flags); - - if (BCH_SB_HAS_TOPOLOGY_ERRORS(c->disk_sb.sb)) - set_bit(BCH_FS_TOPOLOGY_ERROR, &c->flags); - else - clear_bit(BCH_FS_TOPOLOGY_ERROR, &c->flags); - if (BCH_SB_INITIALIZED(c->disk_sb.sb)) set_bit(BCH_FS_INITIALIZED, &c->flags); |