* [ammarfaizi2-block:dhowells/linux-fs/netfs-maple 19/40] lib/maple_tree.c:3941:1: warning: the frame size of 1040 bytes is larger than 1024 bytes
@ 2022-04-05 5:19 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-05 5:19 UTC (permalink / raw)
To: Liam R. Howlett
Cc: kbuild-all, GNU/Weeb Mailing List, linux-kernel, David Howells,
Matthew Wilcox (Oracle)
tree: https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/netfs-maple
head: 674eea41fc70a740ff83ec590f9833f805852464
commit: 51b63e667ad83864c161cf2b8ef462e907536070 [19/40] Maple Tree: Add new data structure
config: h8300-randconfig-c003-20220405 (https://download.01.org/0day-ci/archive/20220405/202204051345.4c9QlJeF-lkp@intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
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
# https://github.com/ammarfaizi2/linux-block/commit/51b63e667ad83864c161cf2b8ef462e907536070
git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/netfs-maple
git checkout 51b63e667ad83864c161cf2b8ef462e907536070
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=h8300 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
lib/maple_tree.c:5556:6: warning: no previous prototype for 'mas_wr_store_setup' [-Wmissing-prototypes]
5556 | void mas_wr_store_setup(struct ma_wr_state *wr_mas)
| ^~~~~~~~~~~~~~~~~~
lib/maple_tree.c:6184:5: warning: no previous prototype for 'mtree_alloc_range' [-Wmissing-prototypes]
6184 | int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp,
| ^~~~~~~~~~~~~~~~~
lib/maple_tree.c:6219:5: warning: no previous prototype for 'mtree_alloc_rrange' [-Wmissing-prototypes]
6219 | int mtree_alloc_rrange(struct maple_tree *mt, unsigned long *startp,
| ^~~~~~~~~~~~~~~~~~
lib/maple_tree.c:6526:6: warning: no previous prototype for 'mt_dump_range' [-Wmissing-prototypes]
6526 | void mt_dump_range(unsigned long min, unsigned long max, unsigned int depth)
| ^~~~~~~~~~~~~
lib/maple_tree.c:6536:6: warning: no previous prototype for 'mt_dump_entry' [-Wmissing-prototypes]
6536 | void mt_dump_entry(void *entry, unsigned long min, unsigned long max,
| ^~~~~~~~~~~~~
lib/maple_tree.c:6552:6: warning: no previous prototype for 'mt_dump_range64' [-Wmissing-prototypes]
6552 | void mt_dump_range64(const struct maple_tree *mt, void *entry,
| ^~~~~~~~~~~~~~~
lib/maple_tree.c:6591:6: warning: no previous prototype for 'mt_dump_arange64' [-Wmissing-prototypes]
6591 | void mt_dump_arange64(const struct maple_tree *mt, void *entry,
| ^~~~~~~~~~~~~~~~
lib/maple_tree.c:6683:6: warning: no previous prototype for 'mas_validate_gaps' [-Wmissing-prototypes]
6683 | void mas_validate_gaps(struct ma_state *mas)
| ^~~~~~~~~~~~~~~~~
lib/maple_tree.c:6770:6: warning: no previous prototype for 'mas_validate_parent_slot' [-Wmissing-prototypes]
6770 | void mas_validate_parent_slot(struct ma_state *mas)
| ^~~~~~~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:6803:6: warning: no previous prototype for 'mas_validate_child_slot' [-Wmissing-prototypes]
6803 | void mas_validate_child_slot(struct ma_state *mas)
| ^~~~~~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:6841:6: warning: no previous prototype for 'mas_validate_limits' [-Wmissing-prototypes]
6841 | void mas_validate_limits(struct ma_state *mas)
| ^~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:6891:6: warning: no previous prototype for 'mt_validate_nulls' [-Wmissing-prototypes]
6891 | void mt_validate_nulls(struct maple_tree *mt)
| ^~~~~~~~~~~~~~~~~
lib/maple_tree.c:6932:6: warning: no previous prototype for 'mt_validate' [-Wmissing-prototypes]
6932 | void mt_validate(struct maple_tree *mt)
| ^~~~~~~~~~~
lib/maple_tree.c: In function 'mas_wr_spanning_store.isra':
>> lib/maple_tree.c:3941:1: warning: the frame size of 1040 bytes is larger than 1024 bytes [-Wframe-larger-than=]
3941 | }
| ^
vim +3941 lib/maple_tree.c
3805
3806 /*
3807 * mas_new_root() - Create a new root node that only contains the entry passed
3808 * in.
3809 * @mas: The maple state
3810 * @entry: The entry to store.
3811 *
3812 * Only valid when the index == 0 and the last == ULONG_MAX
3813 *
3814 * Return 0 on error, 1 on success.
3815 */
3816 static inline int mas_new_root(struct ma_state *mas, void *entry)
3817 {
3818 struct maple_enode *root = mas_root_locked(mas);
3819 enum maple_type type = maple_leaf_64;
3820 struct maple_node *node;
3821 void __rcu **slots;
3822 unsigned long *pivots;
3823
3824 if (!entry && !mas->index && mas->last == ULONG_MAX) {
3825 mas->depth = 0;
3826 mas_set_height(mas);
3827 rcu_assign_pointer(mas->tree->ma_root, entry);
3828 mas->node = MAS_START;
3829 goto done;
3830 }
3831
3832 mas_node_count(mas, 1);
3833 if (mas_is_err(mas))
3834 return 0;
3835
3836 node = mas_pop_node(mas);
3837 pivots = ma_pivots(node, type);
3838 slots = ma_slots(node, type);
3839 node->parent = ma_parent_ptr(
3840 ((unsigned long)mas->tree | MA_ROOT_PARENT));
3841 mas->node = mt_mk_node(node, type);
3842 rcu_assign_pointer(slots[0], entry);
3843 pivots[0] = mas->last;
3844 mas->depth = 1;
3845 mas_set_height(mas);
3846 rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node));
3847
3848 done:
3849 if (xa_is_node(root))
3850 mte_destroy_walk(root, mas->tree);
3851
3852 return 1;
3853 }
3854 /*
3855 * mas_spanning_store() - Create a subtree with the store operation completed
3856 * and new nodes where necessary, then place the sub-tree in the actual tree.
3857 * Note that mas is expected to point to the node which caused the store to
3858 * span.
3859 * @wr_mas: The maple write state
3860 *
3861 * Return: 0 on error, positive on success.
3862 */
3863 static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas)
3864 {
3865 struct maple_subtree_state mast;
3866 struct maple_big_node b_node;
3867 struct ma_state *mas;
3868 unsigned char height;
3869
3870 /* Left and Right side of spanning store */
3871 MA_STATE(l_mas, NULL, 0, 0);
3872 MA_STATE(r_mas, NULL, 0, 0);
3873
3874 MA_WR_STATE(r_wr_mas, &r_mas, wr_mas->entry);
3875 MA_WR_STATE(l_wr_mas, &l_mas, wr_mas->entry);
3876
3877 /*
3878 * A store operation that spans multiple nodes is called a spanning
3879 * store and is handled early in the store call stack by the function
3880 * mas_is_span_wr(). When a spanning store is identified, the maple
3881 * state is duplicated. The first maple state walks the left tree path
3882 * to ``index``, the duplicate walks the right tree path to ``last``.
3883 * The data in the two nodes are combined into a single node, two nodes,
3884 * or possibly three nodes (see the 3-way split above). A ``NULL``
3885 * written to the last entry of a node is considered a spanning store as
3886 * a rebalance is required for the operation to complete and an overflow
3887 * of data may happen.
3888 */
3889 mas = wr_mas->mas;
3890 trace_ma_op(__func__, mas);
3891
3892 if (unlikely(!mas->index && mas->last == ULONG_MAX))
3893 return mas_new_root(mas, wr_mas->entry);
3894 /*
3895 * Node rebalancing may occur due to this store, so there may be two new
3896 * entries per level plus a new root.
3897 */
3898 height = mas_mt_height(mas);
3899 mas_node_count(mas, 1 + height * 3);
3900 if (mas_is_err(mas))
3901 return 0;
3902
3903 /*
3904 * Set up right side. Need to get to the next offset after the spanning
3905 * store to ensure it's not NULL and to combine both the next node and
3906 * the node with the start together.
3907 */
3908 r_mas = *mas;
3909 /* Avoid overflow, walk to next slot in the tree. */
3910 if (r_mas.last + 1)
3911 r_mas.last++;
3912
3913 r_mas.index = r_mas.last;
3914 mas_wr_walk_index(&r_wr_mas);
3915 r_mas.last = r_mas.index = mas->last;
3916
3917 /* Set up left side. */
3918 l_mas = *mas;
3919 mas_wr_walk_index(&l_wr_mas);
3920
3921 if (!wr_mas->entry) {
3922 mas_extend_spanning_null(&l_wr_mas, &r_wr_mas);
3923 mas->offset = l_mas.offset;
3924 mas->index = l_mas.index;
3925 mas->last = l_mas.last = r_mas.last;
3926 }
3927
3928 /* Copy l_mas and store the value in b_node. */
3929 b_node.b_end = mas_store_b_node(&l_wr_mas, &b_node, l_wr_mas.node_end);
3930 /* Copy r_mas into b_node. */
3931 mas_mab_cp(&r_mas, r_mas.offset, r_wr_mas.node_end,
3932 &b_node, b_node.b_end + 1);
3933 /* Stop spanning searches by searching for just index. */
3934 l_mas.index = l_mas.last = mas->index;
3935
3936 mast.bn = &b_node;
3937 mast.orig_l = &l_mas;
3938 mast.orig_r = &r_mas;
3939 /* Combine l_mas and r_mas and split them up evenly again. */
3940 return mas_spanning_rebalance(mas, &mast, height + 1);
> 3941 }
3942
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-04-05 5:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-05 5:19 [ammarfaizi2-block:dhowells/linux-fs/netfs-maple 19/40] lib/maple_tree.c:3941:1: warning: the frame size of 1040 bytes is larger than 1024 bytes kernel test robot
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.