Re: [rcu:rcu/next 64/99] kernel/rcu/srcu.c:517:15: error: redefinition of 'srcu_batches_completed'

From: Paul E. McKenney
Date: Tue Jun 06 2017 - 11:20:15 EST


On Tue, Jun 06, 2017 at 06:22:32AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next
> head: 5c246613fb794485c9af0c20dff8218abfc848aa
> commit: dec7813dfa40f7a48b0f3d9e48fe7bcf0b1b622d [64/99] srcu: Shrink srcu.h by moving docbook and private function
> config: x86_64-randconfig-x006-201723 (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
> git checkout dec7813dfa40f7a48b0f3d9e48fe7bcf0b1b622d
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> Note: the rcu/rcu/next HEAD 5c246613fb794485c9af0c20dff8218abfc848aa builds fine.
> It only hurts bisectibility.

Good catch!

However, given that you have to have !SMP&&CLASSIC_SRCU to hit this,
and given that CLASSIC_SRCU goes away in this series, you would have to
work to have a bisection problem in this range.

In theory, I could move commit 0ce2e8a0aa44 ("srcu: Remove Classic SRCU")
before commit dec7813dfa40 ("srcu: Shrink srcu.h by moving docbook and
private function"), but in practice, this would introduce more risk than
leaving the bisection window open. So I will leave this one alone.

Thanx, Paul

> All errors (new ones prefixed by >>):
>
> >> kernel/rcu/srcu.c:517:15: error: redefinition of 'srcu_batches_completed'
> unsigned long srcu_batches_completed(struct srcu_struct *sp)
> ^~~~~~~~~~~~~~~~~~~~~~
> In file included from kernel/rcu/srcu.c:39:0:
> kernel/rcu/rcu.h:495:29: note: previous definition of 'srcu_batches_completed' was here
> static inline unsigned long srcu_batches_completed(struct srcu_struct *sp)
> ^~~~~~~~~~~~~~~~~~~~~~
>
> vim +/srcu_batches_completed +517 kernel/rcu/srcu.c
>
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 511 * srcu_batches_completed - return batches completed.
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 512 * @sp: srcu_struct on which to report batch completion.
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 513 *
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 514 * Report the number of batches, correlated with, but not necessarily
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 515 * precisely the same as, the number of grace periods that have elapsed.
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 516 */
> a5c198f4 kernel/rcu/srcu.c Paul E. McKenney 2014-11-23 @517 unsigned long srcu_batches_completed(struct srcu_struct *sp)
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 518 {
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 519 return sp->completed;
> 621934ee kernel/srcu.c Paul E. McKenney 2006-10-04 520 }
>
> :::::: The code at line 517 was first introduced by commit
> :::::: a5c198f4f7da6cc48116ca239c59c9f44b753364 rcu: Expand SRCU ->completed to 64 bits
>
> :::::: TO: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> :::::: CC: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation