On Wed, Sep 30, 2020 at 04:26:56PM +0800, Ming Lei wrote:
> diff --git a/include/linux/percpu-refcount.h b/include/linux/percpu-refcount.h
> index 87d8a38bdea1..1d6ed9ca23dd 100644
> --- a/include/linux/percpu-refcount.h
> +++ b/include/linux/percpu-refcount.h
> @@ -92,18 +92,23 @@ enum {
>       PERCPU_REF_ALLOW_REINIT = 1 << 2,
>  };
>  
> -struct percpu_ref {
> +struct percpu_ref_data {
>       atomic_long_t           count;
> -     /*
> -      * The low bit of the pointer indicates whether the ref is in percpu
> -      * mode; if set, then get/put will manipulate the atomic_t.
> -      */
> -     unsigned long           percpu_count_ptr;
>       percpu_ref_func_t       *release;
>       percpu_ref_func_t       *confirm_switch;
>       bool                    force_atomic:1;
>       bool                    allow_reinit:1;
>       struct rcu_head         rcu;
> +     struct percpu_ref       *ref;
> +};
> +
> +struct percpu_ref {
> +     /*
> +      * The low bit of the pointer indicates whether the ref is in percpu
> +      * mode; if set, then get/put will manipulate the atomic_t.
> +      */
> +     unsigned long           percpu_count_ptr;
> +     struct percpu_ref_data  *data;
>  };

Can you please add a comment explaining why the two structs are split?

Thanks.

-- 
tejun

Reply via email to