Commit 9963a14d authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: BCH_FS_recovery_running



If we're autofixing topology errors, we shouldn't shutdown if we're
still in recovery.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 124e1081
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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 {
+2 −0
Original line number Diff line number Diff line
@@ -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 @@ int bch2_fs_recovery(struct bch_fs *c)
	 */
	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);