Message ID | 9b85bdbc269d20886590f0a70de66c602d72aa9d.1733695544.git.beckerlee3@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | btrfs: edit __btrfs_add_delayed_item() to use rb helper | expand |
Hi Roger, kernel test robot noticed the following build errors: [auto build test ERROR on kdave/for-next] [also build test ERROR on linus/master v6.13-rc2 next-20241206] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Roger-L-Beckermeyer-III/btrfs-edit-__btrfs_add_delayed_item-to-use-rb-helper/20241209-064154 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/9b85bdbc269d20886590f0a70de66c602d72aa9d.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edit __btrfs_add_delayed_item() to use rb helper config: arc-randconfig-002-20241209 (https://download.01.org/0day-ci/archive/20241209/202412090921.E0n0Ioce-lkp@intel.com/config) compiler: arc-elf-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241209/202412090921.E0n0Ioce-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/202412090921.E0n0Ioce-lkp@intel.com/ All error/warnings (new ones prefixed by >>): fs/btrfs/delayed-inode.c: In function '__btrfs_add_delayed_item': >> fs/btrfs/delayed-inode.c:392:17: error: implicit declaration of function 'rb_find_add_cached'; did you mean 'rb_find_add_rcu'? [-Werror=implicit-function-declaration] 392 | exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); | ^~~~~~~~~~~~~~~~~~ | rb_find_add_rcu >> fs/btrfs/delayed-inode.c:392:15: warning: assignment to 'struct rb_node *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 392 | exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); | ^ cc1: some warnings being treated as errors vim +392 fs/btrfs/delayed-inode.c 380 381 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, 382 struct btrfs_delayed_item *ins) 383 { 384 struct rb_root_cached *root; 385 struct rb_node *exist; 386 387 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM) 388 root = &delayed_node->ins_root; 389 else 390 root = &delayed_node->del_root; 391 > 392 exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); 393 if (exist != NULL) 394 return -EEXIST; 395 396 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM && 397 ins->index >= delayed_node->index_cnt) 398 delayed_node->index_cnt = ins->index + 1; 399 400 delayed_node->count++; 401 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); 402 return 0; 403 } 404
Hi Roger, kernel test robot noticed the following build errors: [auto build test ERROR on kdave/for-next] [also build test ERROR on linus/master v6.13-rc2 next-20241206] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Roger-L-Beckermeyer-III/btrfs-edit-__btrfs_add_delayed_item-to-use-rb-helper/20241209-064154 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/9b85bdbc269d20886590f0a70de66c602d72aa9d.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edit __btrfs_add_delayed_item() to use rb helper config: arm-randconfig-001-20241209 (https://download.01.org/0day-ci/archive/20241209/202412091036.JGaCqbvL-lkp@intel.com/config) compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241209/202412091036.JGaCqbvL-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/202412091036.JGaCqbvL-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from fs/btrfs/delayed-inode.c:9: In file included from fs/btrfs/ctree.h:10: In file included from include/linux/pagemap.h:8: In file included from include/linux/mm.h:2223: include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ >> fs/btrfs/delayed-inode.c:392:10: error: call to undeclared function 'rb_find_add_cached'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 392 | exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); | ^ >> fs/btrfs/delayed-inode.c:392:8: error: incompatible integer to pointer conversion assigning to 'struct rb_node *' from 'int' [-Wint-conversion] 392 | exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning and 2 errors generated. vim +/rb_find_add_cached +392 fs/btrfs/delayed-inode.c 380 381 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, 382 struct btrfs_delayed_item *ins) 383 { 384 struct rb_root_cached *root; 385 struct rb_node *exist; 386 387 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM) 388 root = &delayed_node->ins_root; 389 else 390 root = &delayed_node->del_root; 391 > 392 exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); 393 if (exist != NULL) 394 return -EEXIST; 395 396 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM && 397 ins->index >= delayed_node->index_cnt) 398 delayed_node->index_cnt = ins->index + 1; 399 400 delayed_node->count++; 401 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); 402 return 0; 403 } 404
Hi Roger, kernel test robot noticed the following build errors: [auto build test ERROR on kdave/for-next] [also build test ERROR on linus/master v6.13-rc2 next-20241211] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Roger-L-Beckermeyer-III/btrfs-edit-__btrfs_add_delayed_item-to-use-rb-helper/20241209-104443 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/9b85bdbc269d20886590f0a70de66c602d72aa9d.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edit __btrfs_add_delayed_item() to use rb helper config: s390-defconfig (https://download.01.org/0day-ci/archive/20241212/202412120959.0utuK69J-lkp@intel.com/config) compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241212/202412120959.0utuK69J-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/202412120959.0utuK69J-lkp@intel.com/ All errors (new ones prefixed by >>): >> fs/btrfs/delayed-inode.c:392:10: error: call to undeclared function 'rb_find_add_cached'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration] exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); ^ fs/btrfs/delayed-inode.c:392:8: error: incompatible integer to pointer conversion assigning to 'struct rb_node *' from 'int' [-Wint-conversion] exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 errors generated. vim +/rb_find_add_cached +392 fs/btrfs/delayed-inode.c 380 381 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, 382 struct btrfs_delayed_item *ins) 383 { 384 struct rb_root_cached *root; 385 struct rb_node *exist; 386 387 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM) 388 root = &delayed_node->ins_root; 389 else 390 root = &delayed_node->del_root; 391 > 392 exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); 393 if (exist != NULL) 394 return -EEXIST; 395 396 if (ins->type == BTRFS_DELAYED_INSERTION_ITEM && 397 ins->index >= delayed_node->index_cnt) 398 delayed_node->index_cnt = ins->index + 1; 399 400 delayed_node->count++; 401 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); 402 return 0; 403 } 404
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 508bdbae29a0..7d62224bc49c 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -366,40 +366,32 @@ static struct btrfs_delayed_item *__btrfs_lookup_delayed_item( return NULL; } +static int btrfs_add_delayed_item_cmp(struct rb_node *rb_node, const struct rb_node *exist_node) +{ + struct btrfs_delayed_item *item = rb_entry(rb_node, struct btrfs_delayed_item, rb_node); + struct btrfs_delayed_item *exist = rb_entry(exist_node, struct btrfs_delayed_item, rb_node); + + if (item->index < exist->index) + return -1; + if (item->index > exist->index) + return 1; + return 0; +} + static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, struct btrfs_delayed_item *ins) { - struct rb_node **p, *node; - struct rb_node *parent_node = NULL; struct rb_root_cached *root; - struct btrfs_delayed_item *item; - bool leftmost = true; + struct rb_node *exist; if (ins->type == BTRFS_DELAYED_INSERTION_ITEM) root = &delayed_node->ins_root; else root = &delayed_node->del_root; - p = &root->rb_root.rb_node; - node = &ins->rb_node; - - while (*p) { - parent_node = *p; - item = rb_entry(parent_node, struct btrfs_delayed_item, - rb_node); - - if (item->index < ins->index) { - p = &(*p)->rb_right; - leftmost = false; - } else if (item->index > ins->index) { - p = &(*p)->rb_left; - } else { - return -EEXIST; - } - } - - rb_link_node(node, parent_node, p); - rb_insert_color_cached(node, root, leftmost); + exist = rb_find_add_cached(&ins->rb_node, root, btrfs_add_delayed_item_cmp); + if (exist != NULL) + return -EEXIST; if (ins->type == BTRFS_DELAYED_INSERTION_ITEM && ins->index >= delayed_node->index_cnt)