2024-01-11 10:10:45

by Onkarnarth

[permalink] [raw]
Subject: [PATCH 1/1] rcu/sync: remove un-used rcu_sync_enter_start function

From: Onkarnath <[email protected]>

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 <[email protected]>
Signed-off-by: Maninder Singh <[email protected]>
---
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



2024-01-16 16:50:48

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH 1/1] rcu/sync: remove un-used rcu_sync_enter_start function

On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> From: Onkarnath <[email protected]>
>
> 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 <[email protected]>
> Signed-off-by: Maninder Singh <[email protected]>

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
>

2024-01-16 18:13:28

by Oleg Nesterov

[permalink] [raw]
Subject: Re: [PATCH 1/1] rcu/sync: remove un-used rcu_sync_enter_start function

On 01/16, Paul E. McKenney wrote:
>
> On Thu, Jan 11, 2024 at 02:57:22PM +0530, Onkarnarth wrote:
> > From: Onkarnath <[email protected]>
> >
> > 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 <[email protected]>
> > Signed-off-by: Maninder Singh <[email protected]>

Acked-by: Oleg Nesterov <[email protected]>



For the record, this was already discussed, see
https://lore.kernel.org/all/[email protected]/

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.


2024-01-16 18:14:55

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 1/1] rcu/sync: remove un-used rcu_sync_enter_start function

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 <[email protected]>
> >
> > 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 <[email protected]>
> > Signed-off-by: Maninder Singh <[email protected]>
>
> Adding Oleg, Peter, and Tejun for their thoughts. Any objections?

Looks good to me. FWIW,

Acked-by: Tejun Heo <[email protected]>

Thanks.

--
tejun

2024-01-16 19:10:53

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH 1/1] rcu/sync: remove un-used rcu_sync_enter_start function

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 <[email protected]>
> > >
> > > 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 <[email protected]>
> > > Signed-off-by: Maninder Singh <[email protected]>
>
> Acked-by: Oleg Nesterov <[email protected]>

Queued, thank you all!

> For the record, this was already discussed, see
> https://lore.kernel.org/all/[email protected]/

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/[email protected]/

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

> 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