struct bkey_s_c_alloc_v4 a = bkey_s_c_to_alloc_v4(k);
        int ret = 0;
 
-       bkey_fsck_err_on(alloc_v4_u64s(a.v) > bkey_val_u64s(k.k), c, err,
+       bkey_fsck_err_on(alloc_v4_u64s_noerror(a.v) > bkey_val_u64s(k.k), c, err,
                         alloc_v4_val_size_bad,
                         "bad val size (%u > %zu)",
-                        alloc_v4_u64s(a.v), bkey_val_u64s(k.k));
+                        alloc_v4_u64s_noerror(a.v), bkey_val_u64s(k.k));
 
        bkey_fsck_err_on(!BCH_ALLOC_V4_BACKPOINTERS_START(a.v) &&
                         BCH_ALLOC_V4_NR_BACKPOINTERS(a.v), c, err,
 
        return pos;
 }
 
-static inline unsigned alloc_v4_u64s(const struct bch_alloc_v4 *a)
+static inline unsigned alloc_v4_u64s_noerror(const struct bch_alloc_v4 *a)
 {
-       unsigned ret = (BCH_ALLOC_V4_BACKPOINTERS_START(a) ?:
+       return (BCH_ALLOC_V4_BACKPOINTERS_START(a) ?:
                        BCH_ALLOC_V4_U64s_V0) +
                BCH_ALLOC_V4_NR_BACKPOINTERS(a) *
                (sizeof(struct bch_backpointer) / sizeof(u64));
+}
 
+static inline unsigned alloc_v4_u64s(const struct bch_alloc_v4 *a)
+{
+       unsigned ret = alloc_v4_u64s_noerror(a);
        BUG_ON(ret > U8_MAX - BKEY_U64s);
        return ret;
 }