From: kernel test robot <lkp@intel.com>
To: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
"Gustavo A. R. Silva" <gustavo@embeddedor.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: [gustavoars:testing/wfamnae-next20260302 13/13] drivers/md/bcache/btree.c:120:19: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *'
Date: Wed, 04 Mar 2026 20:51:00 +0800 [thread overview]
Message-ID: <202603042032.gn5QBN3e-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git testing/wfamnae-next20260302
head: edaeb7365fb0decc352db789ed93ef51bc8ebafa
commit: edaeb7365fb0decc352db789ed93ef51bc8ebafa [13/13] bcachefs: Avoid dozens of -Wflex-array-member-not-at-end warnings
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260304/202603042032.gn5QBN3e-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 9a109fbb6e184ec9bcce10615949f598f4c974a9)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260304/202603042032.gn5QBN3e-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603042032.gn5QBN3e-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/md/bcache/btree.c:120:19: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
120 | if (b->written < btree_blocks(b))
| ^~~~~~~~~~~~~~~
drivers/md/bcache/bcache.h:770:28: note: expanded from macro 'btree_blocks'
770 | ((unsigned int) (KEY_SIZE(&b->key) >> (b)->c->block_bits))
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:171:20: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
171 | b->written < btree_blocks(b) && i->seq == b->keys.set[0].data->seq;
| ^~~~~~~~~~~~~~~
drivers/md/bcache/bcache.h:770:28: note: expanded from macro 'btree_blocks'
770 | ((unsigned int) (KEY_SIZE(&b->key) >> (b)->c->block_bits))
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:179:7: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
179 | btree_blocks(b))
| ^~~~~~~~~~~~~~~
drivers/md/bcache/bcache.h:770:28: note: expanded from macro 'btree_blocks'
770 | ((unsigned int) (KEY_SIZE(&b->key) >> (b)->c->block_bits))
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:209:50: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
209 | bset_sector_offset(&b->keys, i) < KEY_SIZE(&b->key);
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:219:15: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
219 | bkey_cmp(&b->key, &b->keys.set[0].end) < 0)
| ^~~~~~~
drivers/md/bcache/bset.h:425:60: note: passing argument to parameter 'l' here
425 | static __always_inline int64_t bkey_cmp(const struct bkey *l,
| ^
drivers/md/bcache/btree.c:222:19: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
222 | if (b->written < btree_blocks(b))
| ^~~~~~~~~~~~~~~
drivers/md/bcache/bcache.h:770:28: note: expanded from macro 'btree_blocks'
770 | ((unsigned int) (KEY_SIZE(&b->key) >> (b)->c->block_bits))
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:231:33: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
231 | err, PTR_BUCKET_NR(b->c, &b->key, 0),
| ^~~~~~~
drivers/md/bcache/bcache.h:821:27: note: passing argument to parameter 'k' here
821 | const struct bkey *k,
| ^
drivers/md/bcache/btree.c:254:34: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
254 | bio->bi_iter.bi_size = KEY_SIZE(&b->key) << 9;
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
>> drivers/md/bcache/btree.c:261:29: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'struct bkey *' [-Wincompatible-pointer-types]
261 | bch_submit_bbio(bio, b->c, &b->key, 0);
| ^~~~~~~
drivers/md/bcache/bcache.h:985:21: note: passing argument to parameter 'k' here
985 | struct bkey *k, unsigned int ptr);
| ^
drivers/md/bcache/btree.c:278:28: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
278 | PTR_BUCKET_NR(b->c, &b->key, 0));
| ^~~~~~~
drivers/md/bcache/bcache.h:821:27: note: passing argument to parameter 'k' here
821 | const struct bkey *k,
| ^
drivers/md/bcache/btree.c:371:20: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
371 | bkey_copy(&k.key, &b->key);
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:121:70: note: expanded from macro 'bkey_copy'
121 | #define bkey_copy(_dest, _src) unsafe_memcpy(_dest, _src, bkey_bytes(_src), \
| ^~~~
include/linux/string.h:390:19: note: expanded from macro 'unsafe_memcpy'
390 | memcpy(dst, src, bytes)
| ^~~~~
arch/sparc/include/asm/string.h:15:48: note: expanded from macro 'memcpy'
15 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
| ^
drivers/md/bcache/bcache_ondisk.h:116:59: note: passing argument to parameter 'k' here
116 | static inline unsigned long bkey_bytes(const struct bkey *k)
| ^
drivers/md/bcache/btree.c:412:23: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
412 | BUG_ON(b->written >= btree_blocks(b));
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
drivers/md/bcache/bcache.h:770:28: note: expanded from macro 'btree_blocks'
770 | ((unsigned int) (KEY_SIZE(&b->key) >> (b)->c->block_bits))
| ^
include/asm-generic/bug.h:81:45: note: expanded from macro 'BUG_ON'
81 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
| ~~~~~~~~~^~~~~~~~~~
include/linux/compiler.h:77:42: note: expanded from macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
>> drivers/md/bcache/btree.c:569:50: error: incompatible pointer types passing 'const struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
569 | return -cmp_int(a->level, b->level) ?: bkey_cmp(&a->key, &b->key);
| ^~~~~~~
drivers/md/bcache/bset.h:425:60: note: passing argument to parameter 'l' here
425 | static __always_inline int64_t bkey_cmp(const struct bkey *l,
| ^
drivers/md/bcache/btree.c:569:59: error: incompatible pointer types passing 'const struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
569 | return -cmp_int(a->level, b->level) ?: bkey_cmp(&a->key, &b->key);
| ^~~~~~~
drivers/md/bcache/bset.h:426:25: note: passing argument to parameter 'r' here
426 | const struct bkey *r)
| ^
drivers/md/bcache/btree.c:577:19: error: incompatible pointer types passing 'const struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
577 | KEY_INODE(&b->key), KEY_OFFSET(&b->key));
| ^~~~~~~
include/linux/printk.h:511:60: note: expanded from macro 'printk'
511 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/printk.h:483:19: note: expanded from macro 'printk_index_wrap'
483 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:64:1: note: passing argument to parameter 'k' here
64 | KEY_FIELD(KEY_INODE, high, 0, 20)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/btree.c:577:40: error: incompatible pointer types passing 'const struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
577 | KEY_INODE(&b->key), KEY_OFFSET(&b->key));
| ^~~~~~~
include/linux/printk.h:511:60: note: expanded from macro 'printk'
511 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/printk.h:483:19: note: expanded from macro 'printk_index_wrap'
483 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:68:51: note: passing argument to parameter 'k' here
68 | static inline __u64 KEY_OFFSET(const struct bkey *k)
| ^
drivers/md/bcache/btree.c:859:19: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
859 | if (PTR_HASH(c, &b->key) == PTR_HASH(c, k))
| ^~~~~~~
drivers/md/bcache/btree.c:100:45: note: expanded from macro 'PTR_HASH'
100 | (((k)->ptr[0] >> c->bucket_bits) | PTR_GEN(k, 0))
| ^
drivers/md/bcache/bcache_ondisk.h:102:1: note: passing argument to parameter 'k' here
102 | PTR_FIELD(PTR_GEN, 0, 8)
| ^
drivers/md/bcache/bcache_ondisk.h:45:45: note: expanded from macro 'PTR_FIELD'
45 | static inline __u64 name(const struct bkey *k, unsigned int i) \
| ^
drivers/md/bcache/btree.c:1035:19: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
1035 | if (PTR_HASH(c, &b->key) != PTR_HASH(c, k)) {
| ^~~~~~~
drivers/md/bcache/btree.c:100:45: note: expanded from macro 'PTR_HASH'
100 | (((k)->ptr[0] >> c->bucket_bits) | PTR_GEN(k, 0))
| ^
drivers/md/bcache/bcache_ondisk.h:102:1: note: passing argument to parameter 'k' here
102 | PTR_FIELD(PTR_GEN, 0, 8)
| ^
drivers/md/bcache/bcache_ondisk.h:45:45: note: expanded from macro 'PTR_FIELD'
45 | static inline __u64 name(const struct bkey *k, unsigned int i) \
| ^
drivers/md/bcache/btree.c:1110:24: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'struct bkey *' [-Wincompatible-pointer-types]
1110 | bch_bucket_free(b->c, &b->key);
| ^~~~~~~
drivers/md/bcache/bcache.h:994:56: note: passing argument to parameter 'k' here
994 | void bch_bucket_free(struct cache_set *c, struct bkey *k);
| ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--
>> drivers/md/bcache/debug.c:47:21: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
47 | bkey_copy(&v->key, &b->key);
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:121:70: note: expanded from macro 'bkey_copy'
121 | #define bkey_copy(_dest, _src) unsafe_memcpy(_dest, _src, bkey_bytes(_src), \
| ^~~~
include/linux/string.h:390:19: note: expanded from macro 'unsafe_memcpy'
390 | memcpy(dst, src, bytes)
| ^~~~~
arch/sparc/include/asm/string.h:15:48: note: expanded from macro 'memcpy'
15 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
| ^
drivers/md/bcache/bcache_ondisk.h:116:59: note: passing argument to parameter 'k' here
116 | static inline unsigned long bkey_bytes(const struct bkey *k)
| ^
drivers/md/bcache/debug.c:54:38: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
54 | bio->bi_iter.bi_sector = PTR_OFFSET(&b->key, 0);
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:101:1: note: passing argument to parameter 'k' here
101 | PTR_FIELD(PTR_OFFSET, 8, 43)
| ^
drivers/md/bcache/bcache_ondisk.h:45:45: note: expanded from macro 'PTR_FIELD'
45 | static inline __u64 name(const struct bkey *k, unsigned int i) \
| ^
drivers/md/bcache/debug.c:55:34: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
55 | bio->bi_iter.bi_size = KEY_SIZE(&v->key) << 9;
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/debug.c:62:34: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
62 | memcpy(ondisk, sorted, KEY_SIZE(&v->key) << 9);
| ^~~~~~~
arch/sparc/include/asm/string.h:15:48: note: expanded from macro 'memcpy'
15 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
| ^
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/debug.c:83:3: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
83 | for_each_written_bset(b, ondisk, i) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/bcache/debug.c:26:49: note: expanded from macro 'for_each_written_bset'
26 | (void *) i < (void *) (start) + (KEY_SIZE(&b->key) << 9) &&\
| ^~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/debug.c:198:42: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
198 | bch_extent_to_text(kbuf, sizeof(kbuf), &w->key);
| ^~~~~~~
drivers/md/bcache/extents.h:11:68: note: passing argument to parameter 'k' here
11 | void bch_extent_to_text(char *buf, size_t size, const struct bkey *k);
| ^
6 errors generated.
--
>> drivers/md/bcache/movinggc.c:53:34: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'struct bkey *' [-Wincompatible-pointer-types]
53 | trace_bcache_gc_copy_collision(&io->w->key);
| ^~~~~~~~~~~
include/trace/events/bcache.h:328:24: note: passing argument to parameter 'k' here
328 | TP_PROTO(struct bkey *k),
| ^
>> drivers/md/bcache/movinggc.c:83:26: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
83 | DIV_ROUND_UP(KEY_SIZE(&io->w->key), PAGE_SECTORS), 0);
| ^~~~~~~~~~~
include/linux/math.h:49:22: note: expanded from macro 'DIV_ROUND_UP'
49 | #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
| ^
include/uapi/linux/const.h:51:40: note: expanded from macro '__KERNEL_DIV_ROUND_UP'
51 | #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
| ^
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/movinggc.c:87:34: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
87 | bio->bi_iter.bi_size = KEY_SIZE(&io->w->key) << 9;
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/movinggc.c:100:45: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
100 | io->bio.bio.bi_iter.bi_sector = KEY_START(&io->w->key);
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:95:36: note: expanded from macro 'KEY_START'
95 | #define KEY_START(k) (KEY_OFFSET(k) - KEY_SIZE(k))
| ^
drivers/md/bcache/bcache_ondisk.h:68:51: note: passing argument to parameter 'k' here
68 | static inline __u64 KEY_OFFSET(const struct bkey *k)
| ^
drivers/md/bcache/movinggc.c:100:45: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
100 | io->bio.bio.bi_iter.bi_sector = KEY_START(&io->w->key);
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:95:50: note: expanded from macro 'KEY_START'
95 | #define KEY_START(k) (KEY_OFFSET(k) - KEY_SIZE(k))
| ^
drivers/md/bcache/bcache_ondisk.h:63:1: note: passing argument to parameter 'k' here
63 | KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/movinggc.c:104:30: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
104 | op->writeback = KEY_DIRTY(&io->w->key);
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:61:1: note: passing argument to parameter 'k' here
61 | KEY_FIELD(KEY_DIRTY, high, 36, 1)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/movinggc.c:105:24: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
105 | op->csum = KEY_CSUM(&io->w->key);
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:59:1: note: passing argument to parameter 'k' here
59 | KEY_FIELD(KEY_CSUM, high, 56, 2)
| ^
drivers/md/bcache/bcache_ondisk.h:42:2: note: expanded from macro 'KEY_FIELD'
42 | BITMASK(name, struct bkey, field, offset, size)
| ^
drivers/md/bcache/bcache_ondisk.h:12:38: note: expanded from macro 'BITMASK'
12 | static inline __u64 name(const type *k) \
| ^
drivers/md/bcache/movinggc.c:107:31: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
107 | bkey_copy(&op->replace_key, &io->w->key);
| ^~~~~~~~~~~
drivers/md/bcache/bcache_ondisk.h:121:70: note: expanded from macro 'bkey_copy'
121 | #define bkey_copy(_dest, _src) unsafe_memcpy(_dest, _src, bkey_bytes(_src), \
| ^~~~
include/linux/string.h:390:19: note: expanded from macro 'unsafe_memcpy'
390 | memcpy(dst, src, bytes)
| ^~~~~
arch/sparc/include/asm/string.h:15:48: note: expanded from macro 'memcpy'
15 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
| ^
drivers/md/bcache/bcache_ondisk.h:116:59: note: passing argument to parameter 'k' here
116 | static inline unsigned long bkey_bytes(const struct bkey *k)
| ^
drivers/md/bcache/movinggc.c:121:33: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'struct bkey *' [-Wincompatible-pointer-types]
121 | bch_submit_bbio(bio, io->op.c, &io->w->key, 0);
| ^~~~~~~~~~~
drivers/md/bcache/bcache.h:985:21: note: passing argument to parameter 'k' here
985 | struct bkey *k, unsigned int ptr);
| ^
drivers/md/bcache/movinggc.c:143:20: error: incompatible pointer types passing 'struct bkey_fixed *' to parameter of type 'const struct bkey *' [-Wincompatible-pointer-types]
143 | if (ptr_stale(c, &w->key, 0)) {
..
vim +120 drivers/md/bcache/btree.c
a85e968e66a175 Kent Overstreet 2013-12-20 111
2a285686c10981 Kent Overstreet 2014-03-04 112 static void bch_btree_init_next(struct btree *b)
2a285686c10981 Kent Overstreet 2014-03-04 113 {
2a285686c10981 Kent Overstreet 2014-03-04 114 /* If not a leaf node, always sort */
2a285686c10981 Kent Overstreet 2014-03-04 115 if (b->level && b->keys.nsets)
2a285686c10981 Kent Overstreet 2014-03-04 116 bch_btree_sort(&b->keys, &b->c->sort);
2a285686c10981 Kent Overstreet 2014-03-04 117 else
2a285686c10981 Kent Overstreet 2014-03-04 118 bch_btree_sort_lazy(&b->keys, &b->c->sort);
2a285686c10981 Kent Overstreet 2014-03-04 119
2a285686c10981 Kent Overstreet 2014-03-04 @120 if (b->written < btree_blocks(b))
2a285686c10981 Kent Overstreet 2014-03-04 121 bch_bset_init_next(&b->keys, write_block(b),
4a784266c6a75f Coly Li 2020-10-01 122 bset_magic(&b->c->cache->sb));
2a285686c10981 Kent Overstreet 2014-03-04 123
2a285686c10981 Kent Overstreet 2014-03-04 124 }
2a285686c10981 Kent Overstreet 2014-03-04 125
cafe563591446c Kent Overstreet 2013-03-23 126 /* Btree key manipulation */
cafe563591446c Kent Overstreet 2013-03-23 127
3a3b6a4e075188 Kent Overstreet 2013-07-24 128 void bkey_put(struct cache_set *c, struct bkey *k)
e7c590eb63509c Kent Overstreet 2013-09-10 129 {
6f10f7d1b02b1b Coly Li 2018-08-11 130 unsigned int i;
e7c590eb63509c Kent Overstreet 2013-09-10 131
e7c590eb63509c Kent Overstreet 2013-09-10 132 for (i = 0; i < KEY_PTRS(k); i++)
e7c590eb63509c Kent Overstreet 2013-09-10 133 if (ptr_available(c, k, i))
e7c590eb63509c Kent Overstreet 2013-09-10 134 atomic_dec_bug(&PTR_BUCKET(c, k, i)->pin);
e7c590eb63509c Kent Overstreet 2013-09-10 135 }
e7c590eb63509c Kent Overstreet 2013-09-10 136
cafe563591446c Kent Overstreet 2013-03-23 137 /* Btree IO */
cafe563591446c Kent Overstreet 2013-03-23 138
cafe563591446c Kent Overstreet 2013-03-23 139 static uint64_t btree_csum_set(struct btree *b, struct bset *i)
cafe563591446c Kent Overstreet 2013-03-23 140 {
cafe563591446c Kent Overstreet 2013-03-23 141 uint64_t crc = b->key.ptr[0];
fafff81cead781 Kent Overstreet 2013-12-17 142 void *data = (void *) i + 8, *end = bset_bkey_last(i);
cafe563591446c Kent Overstreet 2013-03-23 143
39fa7a95552cc8 Christoph Hellwig 2021-10-20 144 crc = crc64_be(crc, data, end - data);
c19ed23a0b1848 Kent Overstreet 2013-03-26 145 return crc ^ 0xffffffffffffffffULL;
cafe563591446c Kent Overstreet 2013-03-23 146 }
cafe563591446c Kent Overstreet 2013-03-23 147
78b77bf8b20431 Kent Overstreet 2013-12-17 148 void bch_btree_node_read_done(struct btree *b)
cafe563591446c Kent Overstreet 2013-03-23 149 {
cafe563591446c Kent Overstreet 2013-03-23 150 const char *err = "bad btree header";
ee811287c9f241 Kent Overstreet 2013-12-17 151 struct bset *i = btree_bset_first(b);
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 152 struct btree_iter *iter;
cafe563591446c Kent Overstreet 2013-03-23 153
d2f96f487f471b Shenghui Wang 2018-12-13 154 /*
d2f96f487f471b Shenghui Wang 2018-12-13 155 * c->fill_iter can allocate an iterator with more memory space
d2f96f487f471b Shenghui Wang 2018-12-13 156 * than static MAX_BSETS.
d2f96f487f471b Shenghui Wang 2018-12-13 157 * See the comment arount cache_set->fill_iter.
d2f96f487f471b Shenghui Wang 2018-12-13 158 */
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 159 iter = mempool_alloc(&b->c->fill_iter, GFP_NOIO);
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 160 iter->size = b->c->cache->sb.bucket_size / b->c->cache->sb.block_size;
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 161 iter->used = 0;
cafe563591446c Kent Overstreet 2013-03-23 162
280481d06c8a68 Kent Overstreet 2013-10-24 163 #ifdef CONFIG_BCACHE_DEBUG
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 164 iter->b = &b->keys;
280481d06c8a68 Kent Overstreet 2013-10-24 165 #endif
280481d06c8a68 Kent Overstreet 2013-10-24 166
5794351146199b Kent Overstreet 2013-04-25 167 if (!i->seq)
cafe563591446c Kent Overstreet 2013-03-23 168 goto err;
cafe563591446c Kent Overstreet 2013-03-23 169
cafe563591446c Kent Overstreet 2013-03-23 170 for (;
a85e968e66a175 Kent Overstreet 2013-12-20 171 b->written < btree_blocks(b) && i->seq == b->keys.set[0].data->seq;
cafe563591446c Kent Overstreet 2013-03-23 172 i = write_block(b)) {
cafe563591446c Kent Overstreet 2013-03-23 173 err = "unsupported bset version";
cafe563591446c Kent Overstreet 2013-03-23 174 if (i->version > BCACHE_BSET_VERSION)
cafe563591446c Kent Overstreet 2013-03-23 175 goto err;
cafe563591446c Kent Overstreet 2013-03-23 176
cafe563591446c Kent Overstreet 2013-03-23 177 err = "bad btree header";
4e1ebae3ee4e0c Coly Li 2020-10-01 178 if (b->written + set_blocks(i, block_bytes(b->c->cache)) >
ee811287c9f241 Kent Overstreet 2013-12-17 179 btree_blocks(b))
cafe563591446c Kent Overstreet 2013-03-23 180 goto err;
cafe563591446c Kent Overstreet 2013-03-23 181
cafe563591446c Kent Overstreet 2013-03-23 182 err = "bad magic";
4a784266c6a75f Coly Li 2020-10-01 183 if (i->magic != bset_magic(&b->c->cache->sb))
cafe563591446c Kent Overstreet 2013-03-23 184 goto err;
cafe563591446c Kent Overstreet 2013-03-23 185
cafe563591446c Kent Overstreet 2013-03-23 186 err = "bad checksum";
cafe563591446c Kent Overstreet 2013-03-23 187 switch (i->version) {
cafe563591446c Kent Overstreet 2013-03-23 188 case 0:
cafe563591446c Kent Overstreet 2013-03-23 189 if (i->csum != csum_set(i))
cafe563591446c Kent Overstreet 2013-03-23 190 goto err;
cafe563591446c Kent Overstreet 2013-03-23 191 break;
cafe563591446c Kent Overstreet 2013-03-23 192 case BCACHE_BSET_VERSION:
cafe563591446c Kent Overstreet 2013-03-23 193 if (i->csum != btree_csum_set(b, i))
cafe563591446c Kent Overstreet 2013-03-23 194 goto err;
cafe563591446c Kent Overstreet 2013-03-23 195 break;
cafe563591446c Kent Overstreet 2013-03-23 196 }
cafe563591446c Kent Overstreet 2013-03-23 197
cafe563591446c Kent Overstreet 2013-03-23 198 err = "empty set";
a85e968e66a175 Kent Overstreet 2013-12-20 199 if (i != b->keys.set[0].data && !i->keys)
cafe563591446c Kent Overstreet 2013-03-23 200 goto err;
cafe563591446c Kent Overstreet 2013-03-23 201
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 202 bch_btree_iter_push(iter, i->start, bset_bkey_last(i));
cafe563591446c Kent Overstreet 2013-03-23 203
4e1ebae3ee4e0c Coly Li 2020-10-01 204 b->written += set_blocks(i, block_bytes(b->c->cache));
cafe563591446c Kent Overstreet 2013-03-23 205 }
cafe563591446c Kent Overstreet 2013-03-23 206
cafe563591446c Kent Overstreet 2013-03-23 207 err = "corrupted btree";
cafe563591446c Kent Overstreet 2013-03-23 208 for (i = write_block(b);
a85e968e66a175 Kent Overstreet 2013-12-20 209 bset_sector_offset(&b->keys, i) < KEY_SIZE(&b->key);
4e1ebae3ee4e0c Coly Li 2020-10-01 210 i = ((void *) i) + block_bytes(b->c->cache))
a85e968e66a175 Kent Overstreet 2013-12-20 211 if (i->seq == b->keys.set[0].data->seq)
cafe563591446c Kent Overstreet 2013-03-23 212 goto err;
cafe563591446c Kent Overstreet 2013-03-23 213
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 214 bch_btree_sort_and_fix_extents(&b->keys, iter, &b->c->sort);
cafe563591446c Kent Overstreet 2013-03-23 215
a85e968e66a175 Kent Overstreet 2013-12-20 216 i = b->keys.set[0].data;
cafe563591446c Kent Overstreet 2013-03-23 217 err = "short btree key";
a85e968e66a175 Kent Overstreet 2013-12-20 218 if (b->keys.set[0].size &&
a85e968e66a175 Kent Overstreet 2013-12-20 219 bkey_cmp(&b->key, &b->keys.set[0].end) < 0)
cafe563591446c Kent Overstreet 2013-03-23 220 goto err;
cafe563591446c Kent Overstreet 2013-03-23 221
cafe563591446c Kent Overstreet 2013-03-23 222 if (b->written < btree_blocks(b))
a85e968e66a175 Kent Overstreet 2013-12-20 223 bch_bset_init_next(&b->keys, write_block(b),
4a784266c6a75f Coly Li 2020-10-01 224 bset_magic(&b->c->cache->sb));
cafe563591446c Kent Overstreet 2013-03-23 225 out:
48fd7ebe00c1cd Kuan-Wei Chiu 2025-06-15 226 mempool_free(iter, &b->c->fill_iter);
5794351146199b Kent Overstreet 2013-04-25 227 return;
cafe563591446c Kent Overstreet 2013-03-23 228 err:
cafe563591446c Kent Overstreet 2013-03-23 229 set_btree_node_io_error(b);
88b9f8c426f35e Kent Overstreet 2013-12-17 230 bch_cache_set_error(b->c, "%s at bucket %zu, block %u, %u keys",
cafe563591446c Kent Overstreet 2013-03-23 231 err, PTR_BUCKET_NR(b->c, &b->key, 0),
88b9f8c426f35e Kent Overstreet 2013-12-17 232 bset_block_offset(b, i), i->keys);
cafe563591446c Kent Overstreet 2013-03-23 233 goto out;
cafe563591446c Kent Overstreet 2013-03-23 234 }
cafe563591446c Kent Overstreet 2013-03-23 235
4246a0b63bd8f5 Christoph Hellwig 2015-07-20 236 static void btree_node_read_endio(struct bio *bio)
5794351146199b Kent Overstreet 2013-04-25 237 {
5794351146199b Kent Overstreet 2013-04-25 238 struct closure *cl = bio->bi_private;
1fae7cf05293d3 Coly Li 2018-08-11 239
5794351146199b Kent Overstreet 2013-04-25 240 closure_put(cl);
5794351146199b Kent Overstreet 2013-04-25 241 }
5794351146199b Kent Overstreet 2013-04-25 242
78b77bf8b20431 Kent Overstreet 2013-12-17 243 static void bch_btree_node_read(struct btree *b)
cafe563591446c Kent Overstreet 2013-03-23 244 {
5794351146199b Kent Overstreet 2013-04-25 245 uint64_t start_time = local_clock();
5794351146199b Kent Overstreet 2013-04-25 246 struct closure cl;
5794351146199b Kent Overstreet 2013-04-25 247 struct bio *bio;
cafe563591446c Kent Overstreet 2013-03-23 248
c37511b863f36c Kent Overstreet 2013-04-26 249 trace_bcache_btree_read(b);
c37511b863f36c Kent Overstreet 2013-04-26 250
5794351146199b Kent Overstreet 2013-04-25 251 closure_init_stack(&cl);
cafe563591446c Kent Overstreet 2013-03-23 252
5794351146199b Kent Overstreet 2013-04-25 253 bio = bch_bbio_alloc(b->c);
4f024f3797c43c Kent Overstreet 2013-10-11 254 bio->bi_iter.bi_size = KEY_SIZE(&b->key) << 9;
5794351146199b Kent Overstreet 2013-04-25 255 bio->bi_end_io = btree_node_read_endio;
5794351146199b Kent Overstreet 2013-04-25 256 bio->bi_private = &cl;
70fd76140a6cb6 Christoph Hellwig 2016-11-01 257 bio->bi_opf = REQ_OP_READ | REQ_META;
cafe563591446c Kent Overstreet 2013-03-23 258
a85e968e66a175 Kent Overstreet 2013-12-20 259 bch_bio_map(bio, b->keys.set[0].data);
cafe563591446c Kent Overstreet 2013-03-23 260
5794351146199b Kent Overstreet 2013-04-25 @261 bch_submit_bbio(bio, b->c, &b->key, 0);
5794351146199b Kent Overstreet 2013-04-25 262 closure_sync(&cl);
cafe563591446c Kent Overstreet 2013-03-23 263
4e4cbee93d5613 Christoph Hellwig 2017-06-03 264 if (bio->bi_status)
5794351146199b Kent Overstreet 2013-04-25 265 set_btree_node_io_error(b);
cafe563591446c Kent Overstreet 2013-03-23 266
5794351146199b Kent Overstreet 2013-04-25 267 bch_bbio_free(bio, b->c);
5794351146199b Kent Overstreet 2013-04-25 268
5794351146199b Kent Overstreet 2013-04-25 269 if (btree_node_io_error(b))
5794351146199b Kent Overstreet 2013-04-25 270 goto err;
5794351146199b Kent Overstreet 2013-04-25 271
5794351146199b Kent Overstreet 2013-04-25 272 bch_btree_node_read_done(b);
5794351146199b Kent Overstreet 2013-04-25 273 bch_time_stats_update(&b->c->btree_read_time, start_time);
5794351146199b Kent Overstreet 2013-04-25 274
5794351146199b Kent Overstreet 2013-04-25 275 return;
5794351146199b Kent Overstreet 2013-04-25 276 err:
61cbd250f867f9 Geert Uytterhoeven 2013-09-23 277 bch_cache_set_error(b->c, "io error reading bucket %zu",
5794351146199b Kent Overstreet 2013-04-25 278 PTR_BUCKET_NR(b->c, &b->key, 0));
cafe563591446c Kent Overstreet 2013-03-23 279 }
cafe563591446c Kent Overstreet 2013-03-23 280
:::::: The code at line 120 was first introduced by commit
:::::: 2a285686c109816ba71a00b9278262cf02648258 bcache: btree locking rework
:::::: TO: Kent Overstreet <kmo@daterainc.com>
:::::: CC: Kent Overstreet <kmo@daterainc.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-03-04 12:51 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202603042032.gn5QBN3e-lkp@intel.com \
--to=lkp@intel.com \
--cc=gustavo@embeddedor.com \
--cc=gustavoars@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.