Re: [RFC PATCH 6/8] rcuscale: Allow rcu_scale_ops::get_gp_seq to be NULL

Paul E. McKenney
2025-07-11T01:00:21Z

On Sun, Apr 13, 2025 at 11:00:53PM -0700, Boqun Feng wrote:
> For synchronization mechanisms similar to RCU, there could be no "grace
> period" concept (e.g. hazard pointers), therefore allow
> rcu_scale_ops::get_gp_seq to be a NULL pointer for these cases, and
> simply treat started and finished grace period as 0.
>
> Signed-off-by: Boqun Feng <boqun.feng@gmail.com>

Reviewed-by: Paul E. McKenney <paulmck@kernel.org>

> ---
> kernel/rcu/rcuscale.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
> index 0f3059b1b80d..d9bff4b1928b 100644
> --- a/kernel/rcu/rcuscale.c
> +++ b/kernel/rcu/rcuscale.c
> @@ -568,8 +568,10 @@ rcu_scale_writer(void *arg)
> if (gp_exp) {
> b_rcu_gp_test_started =
> cur_ops->exp_completed() / 2;
> - } else {
> + } else if (cur_ops->get_gp_seq) {
> b_rcu_gp_test_started = cur_ops->get_gp_seq();
> + } else {
> + b_rcu_gp_test_started = 0;
> }
> }
>
> @@ -625,9 +627,11 @@ rcu_scale_writer(void *arg)
> if (gp_exp) {
> b_rcu_gp_test_finished =
> cur_ops->exp_completed() / 2;
> - } else {
> + } else if (cur_ops->get_gp_seq) {
> b_rcu_gp_test_finished =
> cur_ops->get_gp_seq();
> + } else {
> + b_rcu_gp_test_finished = 0;
> }
> if (shutdown) {
> smp_mb(); /* Assign before wake. */
> --
> 2.47.1
>