tree:
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-5.4
head: d2c5af89e80c5b71f1da59879464a930947306a2
commit: b9261330db0b8da110db4761197e9601d4d4124d [112/132] btrfs: avoid double put of
block group when emptying cluster
config: arm-randconfig-r023-20210318 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
436c6c9c20cc522c92a923440a5fc509c342a7db)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
#
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/c...
git remote add sashal-linux-stable
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
git fetch --no-tags sashal-linux-stable queue-5.4
git checkout b9261330db0b8da110db4761197e9601d4d4124d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
> fs/btrfs/free-space-cache.c:2555:3: error: non-void function
'__btrfs_return_cluster_to_free_space' should return a value [-Wreturn-type]
return;
^
1 error generated.
vim +/__btrfs_return_cluster_to_free_space +2555 fs/btrfs/free-space-cache.c
2536
2537 /*
2538 * for a given cluster, put all of its extents back into the free
2539 * space cache. If the block group passed doesn't match the block group
2540 * pointed to by the cluster, someone else raced in and freed the
2541 * cluster already. In that case, we just return without changing anything
2542 */
2543 static int
2544 __btrfs_return_cluster_to_free_space(
2545 struct btrfs_block_group_cache *block_group,
2546 struct btrfs_free_cluster *cluster)
2547 {
2548 struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
2549 struct btrfs_free_space *entry;
2550 struct rb_node *node;
2551
2552 spin_lock(&cluster->lock);
2553 if (cluster->block_group != block_group) {
2554 spin_unlock(&cluster->lock);
2555 return;
2556 }
2557
2558 cluster->block_group = NULL;
2559 cluster->window_start = 0;
2560 list_del_init(&cluster->block_group_list);
2561
2562 node = rb_first(&cluster->root);
2563 while (node) {
2564 bool bitmap;
2565
2566 entry = rb_entry(node, struct btrfs_free_space, offset_index);
2567 node = rb_next(&entry->offset_index);
2568 rb_erase(&entry->offset_index, &cluster->root);
2569 RB_CLEAR_NODE(&entry->offset_index);
2570
2571 bitmap = (entry->bitmap != NULL);
2572 if (!bitmap) {
2573 try_merge_free_space(ctl, entry, false);
2574 steal_from_bitmap(ctl, entry, false);
2575 }
2576 tree_insert_offset(&ctl->free_space_offset,
2577 entry->offset, &entry->offset_index, bitmap);
2578 }
2579 cluster->root = RB_ROOT;
2580 spin_unlock(&cluster->lock);
2581 btrfs_put_block_group(block_group);
2582 return 0;
2583 }
2584
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org