Message ID | 5e023dcf8f086296da987f8ba2b43be0aca15b86.1733695544.git.beckerlee3@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | btrfs: edits tree_insert() to use rb helpers | 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-edits-tree_insert-to-use-rb-helpers/20241209-064230 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/5e023dcf8f086296da987f8ba2b43be0aca15b86.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edits tree_insert() to use rb helpers config: arc-randconfig-002-20241209 (https://download.01.org/0day-ci/archive/20241209/202412090944.g3jpT1Cz-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/202412090944.g3jpT1Cz-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/202412090944.g3jpT1Cz-lkp@intel.com/ All error/warnings (new ones prefixed by >>): fs/btrfs/delayed-ref.c: In function 'tree_insert': >> fs/btrfs/delayed-ref.c:342:17: error: implicit declaration of function 'rb_find_add_cached'; did you mean 'rb_find_add_rcu'? [-Werror=implicit-function-declaration] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^~~~~~~~~~~~~~~~~~ | rb_find_add_rcu >> fs/btrfs/delayed-ref.c:342:15: warning: assignment to 'struct rb_node *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^ cc1: some warnings being treated as errors vim +342 fs/btrfs/delayed-ref.c 334 335 static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, 336 struct btrfs_delayed_ref_node *ins) 337 { 338 struct rb_node *node = &ins->ref_node; 339 struct rb_node *exist; 340 struct btrfs_delayed_ref_node *entry; 341 > 342 exist = rb_find_add_cached(node, root, comp_refs_node); 343 if (exist != NULL) { 344 entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); 345 return entry; 346 } 347 return NULL; 348 } 349
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-edits-tree_insert-to-use-rb-helpers/20241209-064230 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/5e023dcf8f086296da987f8ba2b43be0aca15b86.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edits tree_insert() to use rb helpers config: i386-buildonly-randconfig-003-20241209 (https://download.01.org/0day-ci/archive/20241209/202412091004.4vQ7P5Kl-lkp@intel.com/config) compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241209/202412091004.4vQ7P5Kl-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/202412091004.4vQ7P5Kl-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from fs/btrfs/delayed-ref.c:10: 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-ref.c:342:10: error: call to undeclared function 'rb_find_add_cached'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^ >> fs/btrfs/delayed-ref.c:342:8: error: incompatible integer to pointer conversion assigning to 'struct rb_node *' from 'int' [-Wint-conversion] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning and 2 errors generated. vim +/rb_find_add_cached +342 fs/btrfs/delayed-ref.c 334 335 static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, 336 struct btrfs_delayed_ref_node *ins) 337 { 338 struct rb_node *node = &ins->ref_node; 339 struct rb_node *exist; 340 struct btrfs_delayed_ref_node *entry; 341 > 342 exist = rb_find_add_cached(node, root, comp_refs_node); 343 if (exist != NULL) { 344 entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); 345 return entry; 346 } 347 return NULL; 348 } 349
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-20241209] [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-edits-tree_insert-to-use-rb-helpers/20241209-104108 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/5e023dcf8f086296da987f8ba2b43be0aca15b86.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edits tree_insert() to use rb helpers config: x86_64-buildonly-randconfig-001-20241209 (https://download.01.org/0day-ci/archive/20241209/202412092033.josUXvY4-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241209/202412092033.josUXvY4-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/202412092033.josUXvY4-lkp@intel.com/ All errors (new ones prefixed by >>): fs/btrfs/delayed-ref.c: In function 'tree_insert': >> fs/btrfs/delayed-ref.c:342:17: error: implicit declaration of function 'rb_find_add_cached'; did you mean 'rb_find_add_rcu'? [-Werror=implicit-function-declaration] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^~~~~~~~~~~~~~~~~~ | rb_find_add_rcu fs/btrfs/delayed-ref.c:342:15: warning: assignment to 'struct rb_node *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 342 | exist = rb_find_add_cached(node, root, comp_refs_node); | ^ cc1: some warnings being treated as errors vim +342 fs/btrfs/delayed-ref.c 334 335 static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, 336 struct btrfs_delayed_ref_node *ins) 337 { 338 struct rb_node *node = &ins->ref_node; 339 struct rb_node *exist; 340 struct btrfs_delayed_ref_node *entry; 341 > 342 exist = rb_find_add_cached(node, root, comp_refs_node); 343 if (exist != NULL) { 344 entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); 345 return entry; 346 } 347 return NULL; 348 } 349
On Sun, Dec 8, 2024 at 10:39 PM Roger L. Beckermeyer III <beckerlee3@gmail.com> wrote: > > Edits tree_insert() to use rb_find_add_cached(). Also adds a > comparison function for use in rb_find_add_cached() to compare. > > Reviewed-by: Roger L. Beckermeyer III <beckerlee3@gmail.com> > Tested-by: Roger L. Beckermeyer III <beckerlee3@gmail.com> > Signed-off-by: Roger L. Beckermeyer III <beckerlee3@gmail.com> > --- > fs/btrfs/delayed-ref.c | 43 +++++++++++++++++++++--------------------- > 1 file changed, 21 insertions(+), 22 deletions(-) > > diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c > index 30f7079fa28e..d77ac8d05b2a 100644 > --- a/fs/btrfs/delayed-ref.c > +++ b/fs/btrfs/delayed-ref.c > @@ -317,34 +317,33 @@ static int comp_refs(struct btrfs_delayed_ref_node *ref1, > return 0; > } > > +static int comp_refs_node(struct rb_node *node, const struct rb_node *node2) > +{ > + struct btrfs_delayed_ref_node *ref1; > + struct btrfs_delayed_ref_node *ref2; > + > + ref1 = rb_entry(node, struct btrfs_delayed_ref_node, ref_node); > + ref2 = rb_entry(node2, struct btrfs_delayed_ref_node, ref_node); > + > + bool check_seq = true; > + int ret; Please don't use this style of declaring variables in the middle of the code. The style we use is to declare them at the top of a scope. > + > + ret = comp_refs(ref1, ref2, check_seq); > + return ret; For this just do: return comp_refs(ref1, ref2, check_seq); > +} > + > static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, > struct btrfs_delayed_ref_node *ins) > { > - struct rb_node **p = &root->rb_root.rb_node; > struct rb_node *node = &ins->ref_node; > - struct rb_node *parent_node = NULL; > + struct rb_node *exist; > struct btrfs_delayed_ref_node *entry; > - bool leftmost = true; > - > - while (*p) { > - int comp; > - > - parent_node = *p; > - entry = rb_entry(parent_node, struct btrfs_delayed_ref_node, > - ref_node); > - comp = comp_refs(ins, entry, true); > - if (comp < 0) { > - p = &(*p)->rb_left; > - } else if (comp > 0) { > - p = &(*p)->rb_right; > - leftmost = false; > - } else { > - return entry; > - } > - } > > - rb_link_node(node, parent_node, p); > - rb_insert_color_cached(node, root, leftmost); > + exist = rb_find_add_cached(node, root, comp_refs_node); > + if (exist != NULL) { > + entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); > + return entry; return rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); Thanks. > + } > return NULL; > } > > -- > 2.45.2 > >
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-edits-tree_insert-to-use-rb-helpers/20241209-104108 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next patch link: https://lore.kernel.org/r/5e023dcf8f086296da987f8ba2b43be0aca15b86.1733695544.git.beckerlee3%40gmail.com patch subject: [PATCH] btrfs: edits tree_insert() to use rb helpers config: s390-defconfig (https://download.01.org/0day-ci/archive/20241212/202412120640.485KsaTz-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/202412120640.485KsaTz-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/202412120640.485KsaTz-lkp@intel.com/ All errors (new ones prefixed by >>): >> fs/btrfs/delayed-ref.c:342: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(node, root, comp_refs_node); ^ fs/btrfs/delayed-ref.c:342:8: error: incompatible integer to pointer conversion assigning to 'struct rb_node *' from 'int' [-Wint-conversion] exist = rb_find_add_cached(node, root, comp_refs_node); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 errors generated. vim +/rb_find_add_cached +342 fs/btrfs/delayed-ref.c 334 335 static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, 336 struct btrfs_delayed_ref_node *ins) 337 { 338 struct rb_node *node = &ins->ref_node; 339 struct rb_node *exist; 340 struct btrfs_delayed_ref_node *entry; 341 > 342 exist = rb_find_add_cached(node, root, comp_refs_node); 343 if (exist != NULL) { 344 entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); 345 return entry; 346 } 347 return NULL; 348 } 349
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c index 30f7079fa28e..d77ac8d05b2a 100644 --- a/fs/btrfs/delayed-ref.c +++ b/fs/btrfs/delayed-ref.c @@ -317,34 +317,33 @@ static int comp_refs(struct btrfs_delayed_ref_node *ref1, return 0; } +static int comp_refs_node(struct rb_node *node, const struct rb_node *node2) +{ + struct btrfs_delayed_ref_node *ref1; + struct btrfs_delayed_ref_node *ref2; + + ref1 = rb_entry(node, struct btrfs_delayed_ref_node, ref_node); + ref2 = rb_entry(node2, struct btrfs_delayed_ref_node, ref_node); + + bool check_seq = true; + int ret; + + ret = comp_refs(ref1, ref2, check_seq); + return ret; +} + static struct btrfs_delayed_ref_node* tree_insert(struct rb_root_cached *root, struct btrfs_delayed_ref_node *ins) { - struct rb_node **p = &root->rb_root.rb_node; struct rb_node *node = &ins->ref_node; - struct rb_node *parent_node = NULL; + struct rb_node *exist; struct btrfs_delayed_ref_node *entry; - bool leftmost = true; - - while (*p) { - int comp; - - parent_node = *p; - entry = rb_entry(parent_node, struct btrfs_delayed_ref_node, - ref_node); - comp = comp_refs(ins, entry, true); - if (comp < 0) { - p = &(*p)->rb_left; - } else if (comp > 0) { - p = &(*p)->rb_right; - leftmost = false; - } else { - return entry; - } - } - rb_link_node(node, parent_node, p); - rb_insert_color_cached(node, root, leftmost); + exist = rb_find_add_cached(node, root, comp_refs_node); + if (exist != NULL) { + entry = rb_entry(exist, struct btrfs_delayed_ref_node, ref_node); + return entry; + } return NULL; }