public inbox for [email protected]
 help / color / mirror / Atom feed
* [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/[email protected]/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 <[email protected]>

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:19 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox