All of lore.kernel.org
 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/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.