From: kernel test robot <lkp@intel.com>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: oe-kbuild-all@lists.linux.dev,
Kent Overstreet <kent.overstreet@linux.dev>
Subject: [bcachefs:bcachefs-testing 118/120] fs/bcachefs/btree_journal_iter.c:385:34: sparse: sparse: incorrect type in initializer (different address spaces)
Date: Sat, 30 Nov 2024 11:10:32 +0800 [thread overview]
Message-ID: <202411301111.0WNF8OOc-lkp@intel.com> (raw)
tree: https://evilpiepirate.org/git/bcachefs.git bcachefs-testing
head: 9409825501d87ecf84b2f59aed749647d86b72f2
commit: c22bd3413784c8b22dd7388fdca7af62364678ca [118/120] bcachefs: fix O(n^2) issue with whiteouts in journal keys
config: nios2-randconfig-r111-20241118 (https://download.01.org/0day-ci/archive/20241130/202411301111.0WNF8OOc-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 14.2.0
reproduce: (https://download.01.org/0day-ci/archive/20241130/202411301111.0WNF8OOc-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/202411301111.0WNF8OOc-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
fs/bcachefs/btree_journal_iter.c: note: in included file:
fs/bcachefs/bcachefs.h:992:9: sparse: sparse: array of flexible structures
>> fs/bcachefs/btree_journal_iter.c:385:34: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct journal_key_range_overwritten *prev_range @@ got struct journal_key_range_overwritten [noderef] __rcu * @@
fs/bcachefs/btree_journal_iter.c:385:34: sparse: expected struct journal_key_range_overwritten *prev_range
fs/bcachefs/btree_journal_iter.c:385:34: sparse: got struct journal_key_range_overwritten [noderef] __rcu *
>> fs/bcachefs/btree_journal_iter.c:387:34: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct journal_key_range_overwritten *next_range @@ got struct journal_key_range_overwritten [noderef] __rcu * @@
fs/bcachefs/btree_journal_iter.c:387:34: sparse: expected struct journal_key_range_overwritten *next_range
fs/bcachefs/btree_journal_iter.c:387:34: sparse: got struct journal_key_range_overwritten [noderef] __rcu *
>> fs/bcachefs/btree_journal_iter.c:395:51: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct journal_key_range_overwritten [noderef] __rcu *overwritten_range @@ got struct journal_key_range_overwritten *prev_range @@
fs/bcachefs/btree_journal_iter.c:395:51: sparse: expected struct journal_key_range_overwritten [noderef] __rcu *overwritten_range
fs/bcachefs/btree_journal_iter.c:395:51: sparse: got struct journal_key_range_overwritten *prev_range
>> fs/bcachefs/btree_journal_iter.c:398:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
fs/bcachefs/btree_journal_iter.c:398:25: sparse: struct journal_key_range_overwritten [noderef] __rcu *
fs/bcachefs/btree_journal_iter.c:398:25: sparse: struct journal_key_range_overwritten *
>> fs/bcachefs/btree_journal_iter.c:659:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got struct journal_key_range_overwritten [noderef] __rcu *overwritten_range @@
fs/bcachefs/btree_journal_iter.c: note: in included file (through fs/bcachefs/bcachefs.h):
fs/bcachefs/bcachefs_format.h:1265:38: sparse: sparse: array of flexible structures
fs/bcachefs/btree_journal_iter.c:141:9: sparse: sparse: context imbalance in 'bch2_journal_keys_peek_prev_min' - different lock contexts for basic block
fs/bcachefs/btree_journal_iter.c: note: in included file (through include/linux/backing-dev-defs.h, fs/bcachefs/bcachefs.h):
include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
fs/bcachefs/btree_journal_iter.c:653:9: sparse: sparse: self-comparison always evaluates to false
fs/bcachefs/btree_journal_iter.c:756:9: sparse: sparse: self-comparison always evaluates to false
fs/bcachefs/btree_journal_iter.c:775:9: sparse: sparse: self-comparison always evaluates to false
vim +385 fs/bcachefs/btree_journal_iter.c
370
371 static void __bch2_journal_key_overwritten(struct journal_keys *keys, size_t pos)
372 {
373 struct journal_key *k = keys->data + pos;
374 size_t idx = pos_to_idx(keys, pos);
375
376 k->overwritten = true;
377
378 struct journal_key *prev = idx > 0 ? keys->data + idx_to_pos(keys, idx - 1) : NULL;
379 struct journal_key *next = idx + 1 < keys->nr ? keys->data + idx_to_pos(keys, idx + 1) : NULL;
380
381 bool prev_overwritten = prev && prev->overwritten;
382 bool next_overwritten = next && next->overwritten;
383
384 struct journal_key_range_overwritten *prev_range =
> 385 prev_overwritten ? prev->overwritten_range : NULL;
386 struct journal_key_range_overwritten *next_range =
> 387 next_overwritten ? next->overwritten_range : NULL;
388
389 BUG_ON(prev_range && prev_range->end != idx);
390 BUG_ON(next_range && next_range->start != idx + 1);
391
392 if (prev_range && next_range) {
393 prev_range->end = next_range->end;
394
> 395 keys->data[pos].overwritten_range = prev_range;
396 for (size_t i = next_range->start; i < next_range->end; i++) {
397 struct journal_key *ip = keys->data + idx_to_pos(keys, i);
> 398 BUG_ON(ip->overwritten_range != next_range);
399 ip->overwritten_range = prev_range;
400 }
401
402 kfree_rcu_mightsleep(next_range);
403 } else if (prev_range) {
404 prev_range->end++;
405 k->overwritten_range = prev_range;
406 if (next_overwritten) {
407 prev_range->end++;
408 next->overwritten_range = prev_range;
409 }
410 } else if (next_range) {
411 next_range->start--;
412 k->overwritten_range = next_range;
413 if (prev_overwritten) {
414 next_range->start--;
415 prev->overwritten_range = next_range;
416 }
417 } else if (prev_overwritten || next_overwritten) {
418 struct journal_key_range_overwritten *r = kmalloc(sizeof(*r), GFP_KERNEL);
419 if (!r)
420 return;
421
422 r->start = idx - (size_t) prev_overwritten;
423 r->end = idx + 1 + (size_t) next_overwritten;
424
425 rcu_assign_pointer(k->overwritten_range, r);
426 if (prev_overwritten)
427 prev->overwritten_range = r;
428 if (next_overwritten)
429 next->overwritten_range = r;
430 }
431 }
432
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-11-30 3:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-30 3:10 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-11-18 12:33 [bcachefs:bcachefs-testing 118/120] fs/bcachefs/btree_journal_iter.c:385:34: sparse: sparse: incorrect type in initializer (different address spaces) kernel test robot
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=202411301111.0WNF8OOc-lkp@intel.com \
--to=lkp@intel.com \
--cc=kent.overstreet@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.