Commit 805b535a authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Check btree ptr min_key in .invalid

parent bb660099
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -189,13 +189,18 @@ int bch2_btree_ptr_v2_invalid(struct bch_fs *c, struct bkey_s_c k,
			      enum bkey_invalid_flags flags,
			      struct printbuf *err)
{
	struct bkey_s_c_btree_ptr_v2 bp = bkey_s_c_to_btree_ptr_v2(k);
	int ret = 0;

	bkey_fsck_err_on(bkey_val_u64s(k.k) > BKEY_BTREE_PTR_VAL_U64s_MAX, c, err,
			 btree_ptr_v2_val_too_big,
	bkey_fsck_err_on(bkey_val_u64s(k.k) > BKEY_BTREE_PTR_VAL_U64s_MAX,
			 c, err, btree_ptr_v2_val_too_big,
			 "value too big (%zu > %zu)",
			 bkey_val_u64s(k.k), BKEY_BTREE_PTR_VAL_U64s_MAX);

	bkey_fsck_err_on(bpos_ge(bp.v->min_key, bp.k->p),
			 c, err, btree_ptr_v2_min_key_bad,
			 "min_key > key");

	ret = bch2_bkey_ptrs_invalid(c, k, flags, err);
fsck_err:
	return ret;
+2 −1
Original line number Diff line number Diff line
@@ -266,7 +266,8 @@
	x(subvol_loop,						258)	\
	x(subvol_unreachable,					259)	\
	x(btree_node_bkey_bad_u64s,				260)	\
	x(btree_node_topology_empty_interior_node,		261)
	x(btree_node_topology_empty_interior_node,		261)	\
	x(btree_ptr_v2_min_key_bad,				262)

enum bch_sb_error_id {
#define x(t, n) BCH_FSCK_ERR_##t = n,