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
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
>
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.
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
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