Commit 8d65b15f authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Fix BCH_SB_ERRS() so we can reorder



BCH_SB_ERRS() has a field for the actual enum val so that we can reorder
to reorganize, but the way BCH_SB_ERR_MAX was defined didn't allow for
this.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 5612daaf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -776,7 +776,7 @@ struct bch_fs {
		unsigned	nsec_per_time_unit;
		u64		features;
		u64		compat;
		unsigned long	errors_silent[BITS_TO_LONGS(BCH_SB_ERR_MAX)];
		unsigned long	errors_silent[BITS_TO_LONGS(BCH_FSCK_ERR_MAX)];
		u64		btrees_lost_data;
	}			sb;

+2 −3
Original line number Diff line number Diff line
@@ -312,8 +312,7 @@ static void bch2_sb_downgrade_to_text(struct printbuf *out, struct bch_sb *sb,
			if (!first)
				prt_char(out, ',');
			first = false;
			unsigned e = le16_to_cpu(i->errors[j]);
			prt_str(out, e < BCH_SB_ERR_MAX ? bch2_sb_error_strs[e] : "(unknown)");
			bch2_sb_error_id_to_text(out, le16_to_cpu(i->errors[j]));
		}
		prt_newline(out);
	}
@@ -401,7 +400,7 @@ void bch2_sb_set_downgrade(struct bch_fs *c, unsigned new_minor, unsigned old_mi

			for (unsigned j = 0; j < le16_to_cpu(i->nr_errors); j++) {
				unsigned e = le16_to_cpu(i->errors[j]);
				if (e < BCH_SB_ERR_MAX)
				if (e < BCH_FSCK_ERR_MAX)
					__set_bit(e, c->sb.errors_silent);
				if (e < sizeof(ext->errors_silent) * 8)
					__set_bit_le64(e, ext->errors_silent);
+3 −3
Original line number Diff line number Diff line
@@ -7,12 +7,12 @@
const char * const bch2_sb_error_strs[] = {
#define x(t, n, ...) [n] = #t,
	BCH_SB_ERRS()
	NULL
#undef x
};

static void bch2_sb_error_id_to_text(struct printbuf *out, enum bch_sb_error_id id)
void bch2_sb_error_id_to_text(struct printbuf *out, enum bch_sb_error_id id)
{
	if (id < BCH_SB_ERR_MAX)
	if (id < BCH_FSCK_ERR_MAX)
		prt_str(out, bch2_sb_error_strs[id]);
	else
		prt_printf(out, "(unknown error %u)", id);
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@

extern const char * const bch2_sb_error_strs[];

void bch2_sb_error_id_to_text(struct printbuf *, enum bch_sb_error_id);

extern const struct bch_sb_field_ops bch_sb_field_ops_errors;

void bch2_sb_error_count(struct bch_fs *, enum bch_sb_error_id);
+1 −1
Original line number Diff line number Diff line
@@ -292,12 +292,12 @@ enum bch_fsck_flags {
	x(accounting_key_replicas_nr_devs_0,			278,	FSCK_AUTOFIX)	\
	x(accounting_key_replicas_nr_required_bad,		279,	FSCK_AUTOFIX)	\
	x(accounting_key_replicas_devs_unsorted,		280,	FSCK_AUTOFIX)	\
	x(MAX,							281,	0)

enum bch_sb_error_id {
#define x(t, n, ...) BCH_FSCK_ERR_##t = n,
	BCH_SB_ERRS()
#undef x
	BCH_SB_ERR_MAX
};

struct bch_sb_field_errors {