bcachefs: BCH_FS_recovery_running
If we're autofixing topology errors, we shouldn't shutdown if we're still in recovery. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
@@ -614,6 +614,7 @@ struct bch_dev {
|
||||
x(going_ro) \
|
||||
x(write_disable_complete) \
|
||||
x(clean_shutdown) \
|
||||
x(recovery_running) \
|
||||
x(fsck_running) \
|
||||
x(initial_gc_unfixed) \
|
||||
x(need_delete_dead_snapshots) \
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ bool bch2_inconsistent_error(struct bch_fs *c)
|
||||
int bch2_topology_error(struct bch_fs *c)
|
||||
{
|
||||
set_bit(BCH_FS_topology_error, &c->flags);
|
||||
if (!test_bit(BCH_FS_fsck_running, &c->flags)) {
|
||||
if (!test_bit(BCH_FS_recovery_running, &c->flags)) {
|
||||
bch2_inconsistent_error(c);
|
||||
return -BCH_ERR_btree_need_topology_repair;
|
||||
} else {
|
||||
|
||||
@@ -774,6 +774,7 @@ int bch2_fs_recovery(struct bch_fs *c)
|
||||
set_bit(BCH_FS_fsck_running, &c->flags);
|
||||
if (c->sb.clean)
|
||||
set_bit(BCH_FS_clean_recovery, &c->flags);
|
||||
set_bit(BCH_FS_recovery_running, &c->flags);
|
||||
|
||||
ret = bch2_blacklist_table_initialize(c);
|
||||
if (ret) {
|
||||
@@ -925,6 +926,7 @@ use_clean:
|
||||
*/
|
||||
set_bit(BCH_FS_may_go_rw, &c->flags);
|
||||
clear_bit(BCH_FS_fsck_running, &c->flags);
|
||||
clear_bit(BCH_FS_recovery_running, &c->flags);
|
||||
|
||||
/* in case we don't run journal replay, i.e. norecovery mode */
|
||||
set_bit(BCH_FS_accounting_replay_done, &c->flags);
|
||||
|
||||
Reference in New Issue
Block a user