[1/1] rcu/sync: remove un-used rcu_sync_enter_start function

Message ID 20240111092722.322454-1-onkarnath.1@samsung.com
State New
Headers
Series [1/1] rcu/sync: remove un-used rcu_sync_enter_start function |

Commit Message

Onkarnath Jan. 11, 2024, 9:27 a.m. UTC
  From: Onkarnath <onkarnath.1@samsung.com>

With commit '6a010a49b63a ("cgroup: Make !percpu threadgroup_rwsem
operations optional")' usage of rcu_sync_enter_start is removed.

So this function can also be removed.

Signed-off-by: Onkarnath <onkarnath.1@samsung.com>
Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
---
 include/linux/rcu_sync.h |  1 -
 kernel/rcu/sync.c        | 16 ----------------
 2 files changed, 17 deletions(-)
  

Comments

Paul E. McKenney Jan. 16, 2024, 4:50 p.m. UTC | #1
On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> From: Onkarnath <onkarnath.1@samsung.com>
> 
> With commit '6a010a49b63a ("cgroup: Make !percpu threadgroup_rwsem
> operations optional")' usage of rcu_sync_enter_start is removed.
> 
> So this function can also be removed.
> 
> Signed-off-by: Onkarnath <onkarnath.1@samsung.com>
> Signed-off-by: Maninder Singh <maninder1.s@samsung.com>

Adding Oleg, Peter, and Tejun for their thoughts.  Any objections?

							Thanx, Paul

> ---
>  include/linux/rcu_sync.h |  1 -
>  kernel/rcu/sync.c        | 16 ----------------
>  2 files changed, 17 deletions(-)
> 
> diff --git a/include/linux/rcu_sync.h b/include/linux/rcu_sync.h
> index 0027d4c8087c..3860dbb9107a 100644
> --- a/include/linux/rcu_sync.h
> +++ b/include/linux/rcu_sync.h
> @@ -37,7 +37,6 @@ static inline bool rcu_sync_is_idle(struct rcu_sync *rsp)
>  }
>  
>  extern void rcu_sync_init(struct rcu_sync *);
> -extern void rcu_sync_enter_start(struct rcu_sync *);
>  extern void rcu_sync_enter(struct rcu_sync *);
>  extern void rcu_sync_exit(struct rcu_sync *);
>  extern void rcu_sync_dtor(struct rcu_sync *);
> diff --git a/kernel/rcu/sync.c b/kernel/rcu/sync.c
> index e550f97779b8..86df878a2fee 100644
> --- a/kernel/rcu/sync.c
> +++ b/kernel/rcu/sync.c
> @@ -24,22 +24,6 @@ void rcu_sync_init(struct rcu_sync *rsp)
>  	init_waitqueue_head(&rsp->gp_wait);
>  }
>  
> -/**
> - * rcu_sync_enter_start - Force readers onto slow path for multiple updates
> - * @rsp: Pointer to rcu_sync structure to use for synchronization
> - *
> - * Must be called after rcu_sync_init() and before first use.
> - *
> - * Ensures rcu_sync_is_idle() returns false and rcu_sync_{enter,exit}()
> - * pairs turn into NO-OPs.
> - */
> -void rcu_sync_enter_start(struct rcu_sync *rsp)
> -{
> -	rsp->gp_count++;
> -	rsp->gp_state = GP_PASSED;
> -}
> -
> -
>  static void rcu_sync_func(struct rcu_head *rhp);
>  
>  static void rcu_sync_call(struct rcu_sync *rsp)
> -- 
> 2.25.1
>
  
Oleg Nesterov Jan. 16, 2024, 6:10 p.m. UTC | #2
On 01/16, Paul E. McKenney wrote:
>
> On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> > From: Onkarnath <onkarnath.1@samsung.com>
> >
> > With commit '6a010a49b63a ("cgroup: Make !percpu threadgroup_rwsem
> > operations optional")' usage of rcu_sync_enter_start is removed.
> >
> > So this function can also be removed.
> >
> > Signed-off-by: Onkarnath <onkarnath.1@samsung.com>
> > Signed-off-by: Maninder Singh <maninder1.s@samsung.com>

Acked-by: Oleg Nesterov <oleg@redhat.com>



For the record, this was already discussed, see
https://lore.kernel.org/all/20220725121208.GB28662@redhat.com/

Note also the patch in this message, __rcu_sync_enter(wait => false)
is a better alternative if someone needs rcu_sync_enter_start() again.

This patch probably makes sense anyway. Not only cgroup_favor_dynmods()
can use __rcu_sync_enter(), freeze_super() can use it too to avoid
3 synchronize_rcu()'s in a row.

Oleg.
  
Tejun Heo Jan. 16, 2024, 6:14 p.m. UTC | #3
On Tue, Jan 16, 2024 at 08:50:35AM -0800, Paul E. McKenney wrote:
> On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> > From: Onkarnath <onkarnath.1@samsung.com>
> > 
> > With commit '6a010a49b63a ("cgroup: Make !percpu threadgroup_rwsem
> > operations optional")' usage of rcu_sync_enter_start is removed.
> > 
> > So this function can also be removed.
> > 
> > Signed-off-by: Onkarnath <onkarnath.1@samsung.com>
> > Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
> 
> Adding Oleg, Peter, and Tejun for their thoughts.  Any objections?

Looks good to me. FWIW,

Acked-by: Tejun Heo <tj@kernel.org>

Thanks.
  
Paul E. McKenney Jan. 16, 2024, 7:10 p.m. UTC | #4
On Tue, Jan 16, 2024 at 07:10:59PM +0100, Oleg Nesterov wrote:
> On 01/16, Paul E. McKenney wrote:
> >
> > On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> > > From: Onkarnath <onkarnath.1@samsung.com>
> > >
> > > With commit '6a010a49b63a ("cgroup: Make !percpu threadgroup_rwsem
> > > operations optional")' usage of rcu_sync_enter_start is removed.
> > >
> > > So this function can also be removed.
> > >
> > > Signed-off-by: Onkarnath <onkarnath.1@samsung.com>
> > > Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
> 
> Acked-by: Oleg Nesterov <oleg@redhat.com>

Queued, thank you all!

> For the record, this was already discussed, see
> https://lore.kernel.org/all/20220725121208.GB28662@redhat.com/

I am clearly not keeping up.  ;-)

> Note also the patch in this message, __rcu_sync_enter(wait => false)
> is a better alternative if someone needs rcu_sync_enter_start() again.

Good to know!  I added this to the commit log, so please let me know
if this is in any way inappropriate:

------------------------------------------------------------------------

In the words of Oleg Nesterov:

	__rcu_sync_enter(wait => false) is a better alternative if
	someone needs rcu_sync_enter_start() again.

Link: https://lore.kernel.org/all/20220725121208.GB28662@redhat.com/

------------------------------------------------------------------------

> This patch probably makes sense anyway. Not only cgroup_favor_dynmods()
> can use __rcu_sync_enter(), freeze_super() can use it too to avoid
> 3 synchronize_rcu()'s in a row.

Thank you for the background information, much appreciated!

							Thanx, Paul
  

Patch

diff --git a/include/linux/rcu_sync.h b/include/linux/rcu_sync.h
index 0027d4c8087c..3860dbb9107a 100644
--- a/include/linux/rcu_sync.h
+++ b/include/linux/rcu_sync.h
@@ -37,7 +37,6 @@  static inline bool rcu_sync_is_idle(struct rcu_sync *rsp)
 }
 
 extern void rcu_sync_init(struct rcu_sync *);
-extern void rcu_sync_enter_start(struct rcu_sync *);
 extern void rcu_sync_enter(struct rcu_sync *);
 extern void rcu_sync_exit(struct rcu_sync *);
 extern void rcu_sync_dtor(struct rcu_sync *);
diff --git a/kernel/rcu/sync.c b/kernel/rcu/sync.c
index e550f97779b8..86df878a2fee 100644
--- a/kernel/rcu/sync.c
+++ b/kernel/rcu/sync.c
@@ -24,22 +24,6 @@  void rcu_sync_init(struct rcu_sync *rsp)
 	init_waitqueue_head(&rsp->gp_wait);
 }
 
-/**
- * rcu_sync_enter_start - Force readers onto slow path for multiple updates
- * @rsp: Pointer to rcu_sync structure to use for synchronization
- *
- * Must be called after rcu_sync_init() and before first use.
- *
- * Ensures rcu_sync_is_idle() returns false and rcu_sync_{enter,exit}()
- * pairs turn into NO-OPs.
- */
-void rcu_sync_enter_start(struct rcu_sync *rsp)
-{
-	rsp->gp_count++;
-	rsp->gp_state = GP_PASSED;
-}
-
-
 static void rcu_sync_func(struct rcu_head *rhp);
 
 static void rcu_sync_call(struct rcu_sync *rsp)