fs/bcachefs/btree_gc.c:1304:17: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot
Date: Wed Nov 08 2023 - 03:51:20 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 305230142ae0637213bf6e04f6d9f10bbcb74af8
commit: 822835ffeae411bbc8af104da9331fdf63a7bc12 bcachefs: Fold bucket_state in to BCH_DATA_TYPES()
date: 2 weeks ago
config: loongarch-randconfig-r132-20231107 (https://download.01.org/0day-ci/archive/20231108/202311081639.wRdkh0hk-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231108/202311081639.wRdkh0hk-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311081639.wRdkh0hk-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
fs/bcachefs/btree_gc.c: note: in included file (through fs/bcachefs/btree_locking.h):
fs/bcachefs/btree_iter.h:204:8: sparse: sparse: duplicate inline
fs/bcachefs/btree_gc.c: note: in included file (through fs/bcachefs/bcachefs.h):
fs/bcachefs/bcachefs_format.h:1274:45: sparse: sparse: array of flexible structures
fs/bcachefs/bcachefs_format.h:1289:42: sparse: sparse: array of flexible structures
fs/bcachefs/btree_gc.c: note: in included file:
fs/bcachefs/bcachefs.h:834:9: sparse: sparse: array of flexible structures
fs/bcachefs/btree_gc.c:854:45: sparse: sparse: mixing different enum types:
fs/bcachefs/btree_gc.c:854:45: sparse: unsigned int enum btree_id
fs/bcachefs/btree_gc.c:854:45: sparse: unsigned int enum btree_node_type
fs/bcachefs/btree_gc.c:1000:45: sparse: sparse: mixing different enum types:
fs/bcachefs/btree_gc.c:1000:45: sparse: unsigned int enum btree_id
fs/bcachefs/btree_gc.c:1000:45: sparse: unsigned int enum btree_node_type
fs/bcachefs/btree_gc.c:1215:47: sparse: sparse: cast removes address space '__percpu' of expression
fs/bcachefs/btree_gc.c:1215:47: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [noderef] [usertype] __percpu * @@ got void * @@
fs/bcachefs/btree_gc.c:1215:47: sparse: expected unsigned long long [noderef] [usertype] __percpu *
fs/bcachefs/btree_gc.c:1215:47: sparse: got void *
fs/bcachefs/btree_gc.c:1231:47: sparse: sparse: cast removes address space '__percpu' of expression
fs/bcachefs/btree_gc.c:1231:47: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [noderef] [usertype] __percpu * @@ got void * @@
fs/bcachefs/btree_gc.c:1231:47: sparse: expected unsigned long long [noderef] [usertype] __percpu *
fs/bcachefs/btree_gc.c:1231:47: sparse: got void *
>> fs/bcachefs/btree_gc.c:1304:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned long long [noderef] __percpu * @@
fs/bcachefs/btree_gc.c:1304:17: sparse: expected void *ptr
fs/bcachefs/btree_gc.c:1304:17: sparse: got unsigned long long [noderef] __percpu *
>> fs/bcachefs/btree_gc.c:1304:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned long long [noderef] __percpu * @@
fs/bcachefs/btree_gc.c:1304:17: sparse: expected void *ptr
fs/bcachefs/btree_gc.c:1304:17: sparse: got unsigned long long [noderef] __percpu *
>> fs/bcachefs/btree_gc.c:1304:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned long long [noderef] __percpu * @@
fs/bcachefs/btree_gc.c:1304:17: sparse: expected void *ptr
fs/bcachefs/btree_gc.c:1304:17: sparse: got unsigned long long [noderef] __percpu *
>> fs/bcachefs/btree_gc.c:1304:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned long long [noderef] __percpu * @@
fs/bcachefs/btree_gc.c:1304:17: sparse: expected void *ptr
fs/bcachefs/btree_gc.c:1304:17: sparse: got unsigned long long [noderef] __percpu *
fs/bcachefs/btree_gc.c: note: in included file (through fs/bcachefs/buckets.h, fs/bcachefs/alloc_background.h):
fs/bcachefs/extents.h:145:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] @@ got unsigned int const [usertype] csum @@
fs/bcachefs/extents.h:145:44: sparse: expected restricted __le32 [usertype]
fs/bcachefs/extents.h:145:44: sparse: got unsigned int const [usertype] csum
fs/bcachefs/extents.h:159:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] @@ got unsigned long long const [usertype] csum_hi:16 @@
fs/bcachefs/extents.h:159:44: sparse: expected restricted __le16 [usertype]
fs/bcachefs/extents.h:159:44: sparse: got unsigned long long const [usertype] csum_hi:16
fs/bcachefs/extents.h:145:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] @@ got unsigned int const [usertype] csum @@
fs/bcachefs/extents.h:145:44: sparse: expected restricted __le32 [usertype]
fs/bcachefs/extents.h:145:44: sparse: got unsigned int const [usertype] csum
fs/bcachefs/extents.h:159:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] @@ got unsigned long long const [usertype] csum_hi:16 @@
fs/bcachefs/extents.h:159:44: sparse: expected restricted __le16 [usertype]
fs/bcachefs/extents.h:159:44: sparse: got unsigned long long const [usertype] csum_hi:16
fs/bcachefs/btree_gc.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/xarray.h, ...):
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *
include/linux/seqlock.h:269:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
include/linux/seqlock.h:269:9: sparse: expected void *ptr
include/linux/seqlock.h:269:9: sparse: got unsigned int [noderef] __percpu *

vim +1304 fs/bcachefs/btree_gc.c

1277
1278 static int bch2_gc_start(struct bch_fs *c,
1279 bool metadata_only)
1280 {
1281 struct bch_dev *ca = NULL;
1282 unsigned i;
1283
1284 BUG_ON(c->usage_gc);
1285
1286 c->usage_gc = __alloc_percpu_gfp(fs_usage_u64s(c) * sizeof(u64),
1287 sizeof(u64), GFP_KERNEL);
1288 if (!c->usage_gc) {
1289 bch_err(c, "error allocating c->usage_gc");
1290 return -ENOMEM;
1291 }
1292
1293 for_each_member_device(ca, c, i) {
1294 BUG_ON(ca->buckets_gc);
1295 BUG_ON(ca->usage_gc);
1296
1297 ca->usage_gc = alloc_percpu(struct bch_dev_usage);
1298 if (!ca->usage_gc) {
1299 bch_err(c, "error allocating ca->usage_gc");
1300 percpu_ref_put(&ca->ref);
1301 return -ENOMEM;
1302 }
1303
> 1304 this_cpu_write(ca->usage_gc->d[BCH_DATA_free].buckets,
1305 ca->mi.nbuckets - ca->mi.first_bucket);
1306 }
1307
1308 return 0;
1309 }
1310

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki