All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [rcu:willy-maple 125/202] lib/maple_tree.c:3273:6: warning: no previous prototype for 'mas_is_span_wr'
Date: Wed, 03 Feb 2021 07:30:39 +0800	[thread overview]
Message-ID: <202102030733.ToNwP3su-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 7056 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: 824aa5e4af0be646da193e90e3383651b93f1c8d [125/202] Maple Tree: Add new data structure
config: alpha-defconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=824aa5e4af0be646da193e90e3383651b93f1c8d
        git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
        git fetch --no-tags rcu willy-maple
        git checkout 824aa5e4af0be646da193e90e3383651b93f1c8d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha 

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:3273:6: warning: no previous prototype for 'mas_is_span_wr' [-Wmissing-prototypes]
    3273 | bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
         |      ^~~~~~~~~~~~~~
>> lib/maple_tree.c:3373:6: warning: no previous prototype for 'mas_wr_walk' [-Wmissing-prototypes]
    3373 | bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
         |      ^~~~~~~~~~~
>> lib/maple_tree.c:5633:5: warning: no previous prototype for 'mtree_store' [-Wmissing-prototypes]
    5633 | int mtree_store(struct maple_tree *mt, unsigned long index, void *entry,
         |     ^~~~~~~~~~~
>> lib/maple_tree.c:5692:5: warning: no previous prototype for 'mtree_alloc_range' [-Wmissing-prototypes]
    5692 | int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~
>> lib/maple_tree.c:5727:5: warning: no previous prototype for 'mtree_alloc_rrange' [-Wmissing-prototypes]
    5727 | int mtree_alloc_rrange(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:31:28: warning: 'mt_max' defined but not used [-Wunused-const-variable=]
      31 | static const unsigned long mt_max[] = {
         |                            ^~~~~~


vim +/mas_is_span_wr +3273 lib/maple_tree.c

  3259	
  3260	/*
  3261	 * mas_is_span_wr() - Check if the write needs to be treated as a write that
  3262	 * spans the node.
  3263	 * @mas: The maple state
  3264	 * @piv: The pivot value being written
  3265	 * @type: The maple node type
  3266	 * @entry: The data to write
  3267	 *
  3268	 * Spanning writes are writes that start in one node and end in another OR if
  3269	 * the write of a %NULL will cause the node to end with a %NULL.
  3270	 *
  3271	 * Return: True if this is a spanning write, false otherwise.
  3272	 */
> 3273	bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
  3274					  enum maple_type type, void *entry)
  3275	{
  3276		unsigned long max;
  3277		unsigned long last = mas->last;
  3278	
  3279		if (piv > last) // Contained in this pivot
  3280			return false;
  3281	
  3282		max = mas->max;
  3283		if (unlikely(ma_is_leaf(type))) {
  3284			if (last < max) // Fits in the node, but may span slots.
  3285				return false;
  3286	
  3287			if ((last == max) && entry) // Writes to the end of the node but not null.
  3288				return false;
  3289		} else if ((piv == last) && entry) {
  3290			return false;
  3291		}
  3292	
  3293		/* Writing ULONG_MAX is not a spanning write regardless of the value
  3294		 * being written as long as the range fits in the node.
  3295		 */
  3296		if ((last == ULONG_MAX) && (last == max))
  3297			return false;
  3298	
  3299		trace_mas_is_span_wr(mas, piv, entry);
  3300	
  3301		return true;
  3302	}
  3303	
  3304	/*
  3305	 * mas_node_walk() - Walk a maple node to offset of the index.
  3306	 * @mas: The maple state
  3307	 * @type: The maple node type
  3308	 * @*range_min: Pointer to store the minimum range of the offset
  3309	 * @*range_max: Pointer to store the maximum range of the offset
  3310	 *
  3311	 * The offset will be stored in the maple state.
  3312	 *
  3313	 */
  3314	static inline void mas_node_walk(struct ma_state *mas, enum maple_type type,
  3315			unsigned long *range_min, unsigned long *range_max)
  3316	{
  3317		unsigned long *pivots = ma_pivots(mas_mn(mas), type);
  3318		unsigned char offset, count;
  3319		unsigned long min, max, index;
  3320	
  3321		if (unlikely(ma_is_dense(type))) {
  3322			(*range_max) = (*range_min) = mas->index;
  3323			mas->offset = mas->index = mas->min;
  3324			return;
  3325		}
  3326	
  3327		offset = mas->offset;
  3328		min = mas_safe_min(mas, pivots, offset);
  3329		count = mt_pivots[type];
  3330		if (unlikely(offset == count))
  3331			goto max;
  3332	
  3333		index = mas->index;
  3334		max = pivots[offset];
  3335		if (unlikely(index <= max))
  3336			goto done;
  3337	
  3338		if (unlikely(!max && offset))
  3339			goto max;
  3340	
  3341		offset++;
  3342		min = max + 1;
  3343		while (offset < count) {
  3344			max = pivots[offset];
  3345			if (index <= max)
  3346				goto done;
  3347	
  3348			if (unlikely(!max))
  3349				break;
  3350	
  3351			min = max + 1;
  3352			offset++;
  3353		}
  3354	
  3355	max:
  3356		max = mas->max;
  3357	done:
  3358		*range_max = max;
  3359		*range_min = min;
  3360		mas->offset = offset;
  3361	}
  3362	
  3363	/*
  3364	 * mas_wr_walk(): Walk the tree for a write.
  3365	 * @range_min - pointer that will be set to the minimum of the slot range
  3366	 * @range_max - pointer that will be set to the maximum of the slot range
  3367	 * @entry - the value that will be written.
  3368	 *
  3369	 * Uses mas_slot_locked() and does not need to worry about dead nodes.
  3370	 *
  3371	 * Return: True if it's contained in a node, false on spanning write.
  3372	 */
> 3373	bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
  3374			unsigned long *range_max, void *entry)
  3375	{
  3376		enum maple_type type;
  3377	
  3378		while (true) {
  3379			type = mte_node_type(mas->node);
  3380			mas->depth++;
  3381	
  3382			mas_node_walk(mas, type, range_min, range_max);
  3383			if (mas_is_span_wr(mas, *range_max, type, entry))
  3384				return false;
  3385	
  3386			if (ma_is_leaf(type))
  3387				return true;
  3388	
  3389			// Traverse.
  3390			mas->max = *range_max;
  3391			mas->min = *range_min;
  3392			mas->node = mas_slot_locked(mas, ma_slots(mas_mn(mas), type),
  3393					     mas->offset);
  3394			mas->offset = 0;
  3395		}
  3396		return true;
  3397	}
  3398	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 13878 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>
Subject: [rcu:willy-maple 125/202] lib/maple_tree.c:3273:6: warning: no previous prototype for 'mas_is_span_wr'
Date: Wed, 3 Feb 2021 07:30:39 +0800	[thread overview]
Message-ID: <202102030733.ToNwP3su-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 6868 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: 824aa5e4af0be646da193e90e3383651b93f1c8d [125/202] Maple Tree: Add new data structure
config: alpha-defconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=824aa5e4af0be646da193e90e3383651b93f1c8d
        git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
        git fetch --no-tags rcu willy-maple
        git checkout 824aa5e4af0be646da193e90e3383651b93f1c8d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha 

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:3273:6: warning: no previous prototype for 'mas_is_span_wr' [-Wmissing-prototypes]
    3273 | bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
         |      ^~~~~~~~~~~~~~
>> lib/maple_tree.c:3373:6: warning: no previous prototype for 'mas_wr_walk' [-Wmissing-prototypes]
    3373 | bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
         |      ^~~~~~~~~~~
>> lib/maple_tree.c:5633:5: warning: no previous prototype for 'mtree_store' [-Wmissing-prototypes]
    5633 | int mtree_store(struct maple_tree *mt, unsigned long index, void *entry,
         |     ^~~~~~~~~~~
>> lib/maple_tree.c:5692:5: warning: no previous prototype for 'mtree_alloc_range' [-Wmissing-prototypes]
    5692 | int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~
>> lib/maple_tree.c:5727:5: warning: no previous prototype for 'mtree_alloc_rrange' [-Wmissing-prototypes]
    5727 | int mtree_alloc_rrange(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:31:28: warning: 'mt_max' defined but not used [-Wunused-const-variable=]
      31 | static const unsigned long mt_max[] = {
         |                            ^~~~~~


vim +/mas_is_span_wr +3273 lib/maple_tree.c

  3259	
  3260	/*
  3261	 * mas_is_span_wr() - Check if the write needs to be treated as a write that
  3262	 * spans the node.
  3263	 * @mas: The maple state
  3264	 * @piv: The pivot value being written
  3265	 * @type: The maple node type
  3266	 * @entry: The data to write
  3267	 *
  3268	 * Spanning writes are writes that start in one node and end in another OR if
  3269	 * the write of a %NULL will cause the node to end with a %NULL.
  3270	 *
  3271	 * Return: True if this is a spanning write, false otherwise.
  3272	 */
> 3273	bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
  3274					  enum maple_type type, void *entry)
  3275	{
  3276		unsigned long max;
  3277		unsigned long last = mas->last;
  3278	
  3279		if (piv > last) // Contained in this pivot
  3280			return false;
  3281	
  3282		max = mas->max;
  3283		if (unlikely(ma_is_leaf(type))) {
  3284			if (last < max) // Fits in the node, but may span slots.
  3285				return false;
  3286	
  3287			if ((last == max) && entry) // Writes to the end of the node but not null.
  3288				return false;
  3289		} else if ((piv == last) && entry) {
  3290			return false;
  3291		}
  3292	
  3293		/* Writing ULONG_MAX is not a spanning write regardless of the value
  3294		 * being written as long as the range fits in the node.
  3295		 */
  3296		if ((last == ULONG_MAX) && (last == max))
  3297			return false;
  3298	
  3299		trace_mas_is_span_wr(mas, piv, entry);
  3300	
  3301		return true;
  3302	}
  3303	
  3304	/*
  3305	 * mas_node_walk() - Walk a maple node to offset of the index.
  3306	 * @mas: The maple state
  3307	 * @type: The maple node type
  3308	 * @*range_min: Pointer to store the minimum range of the offset
  3309	 * @*range_max: Pointer to store the maximum range of the offset
  3310	 *
  3311	 * The offset will be stored in the maple state.
  3312	 *
  3313	 */
  3314	static inline void mas_node_walk(struct ma_state *mas, enum maple_type type,
  3315			unsigned long *range_min, unsigned long *range_max)
  3316	{
  3317		unsigned long *pivots = ma_pivots(mas_mn(mas), type);
  3318		unsigned char offset, count;
  3319		unsigned long min, max, index;
  3320	
  3321		if (unlikely(ma_is_dense(type))) {
  3322			(*range_max) = (*range_min) = mas->index;
  3323			mas->offset = mas->index = mas->min;
  3324			return;
  3325		}
  3326	
  3327		offset = mas->offset;
  3328		min = mas_safe_min(mas, pivots, offset);
  3329		count = mt_pivots[type];
  3330		if (unlikely(offset == count))
  3331			goto max;
  3332	
  3333		index = mas->index;
  3334		max = pivots[offset];
  3335		if (unlikely(index <= max))
  3336			goto done;
  3337	
  3338		if (unlikely(!max && offset))
  3339			goto max;
  3340	
  3341		offset++;
  3342		min = max + 1;
  3343		while (offset < count) {
  3344			max = pivots[offset];
  3345			if (index <= max)
  3346				goto done;
  3347	
  3348			if (unlikely(!max))
  3349				break;
  3350	
  3351			min = max + 1;
  3352			offset++;
  3353		}
  3354	
  3355	max:
  3356		max = mas->max;
  3357	done:
  3358		*range_max = max;
  3359		*range_min = min;
  3360		mas->offset = offset;
  3361	}
  3362	
  3363	/*
  3364	 * mas_wr_walk(): Walk the tree for a write.
  3365	 * @range_min - pointer that will be set to the minimum of the slot range
  3366	 * @range_max - pointer that will be set to the maximum of the slot range
  3367	 * @entry - the value that will be written.
  3368	 *
  3369	 * Uses mas_slot_locked() and does not need to worry about dead nodes.
  3370	 *
  3371	 * Return: True if it's contained in a node, false on spanning write.
  3372	 */
> 3373	bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
  3374			unsigned long *range_max, void *entry)
  3375	{
  3376		enum maple_type type;
  3377	
  3378		while (true) {
  3379			type = mte_node_type(mas->node);
  3380			mas->depth++;
  3381	
  3382			mas_node_walk(mas, type, range_min, range_max);
  3383			if (mas_is_span_wr(mas, *range_max, type, entry))
  3384				return false;
  3385	
  3386			if (ma_is_leaf(type))
  3387				return true;
  3388	
  3389			// Traverse.
  3390			mas->max = *range_max;
  3391			mas->min = *range_min;
  3392			mas->node = mas_slot_locked(mas, ma_slots(mas_mn(mas), type),
  3393					     mas->offset);
  3394			mas->offset = 0;
  3395		}
  3396		return true;
  3397	}
  3398	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 13878 bytes --]

             reply	other threads:[~2021-02-02 23:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-02 23:30 kernel test robot [this message]
2021-02-02 23:30 ` [rcu:willy-maple 125/202] lib/maple_tree.c:3273:6: warning: no previous prototype for 'mas_is_span_wr' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202102030733.ToNwP3su-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.