2023-06-15 18:11:29

by SeongJae Park

[permalink] [raw]
Subject: [PATCH v3 1/3] Docs/RCU/rculist_nulls: Specify type of the object in examples

The type of 'obj' in example code of rculist_nulls.rst is implicit.
Provide the specific type of it before the example code.

Suggested-by: aul E. McKenney <[email protected]>
Link: https://lore.kernel.org/rcu/43943609-f80c-4b6a-9844-994eef800757@paulmck-laptop/
Signed-off-by: SeongJae Park <[email protected]>
---
Documentation/RCU/rculist_nulls.rst | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
index 94a8bfe9f560..4b66e2fd2fb5 100644
--- a/Documentation/RCU/rculist_nulls.rst
+++ b/Documentation/RCU/rculist_nulls.rst
@@ -18,7 +18,16 @@ to solve following problem.

Without 'nulls', a typical RCU linked list managing objects which are
allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can use the following
-algorithms:
+algorithms. Following examples assume 'obj' is a pointer to such
+objects, which is having below type.
+
+::
+
+ struct object {
+ struct hlist_node obj_node;
+ refcount_t refcnt;
+ unsigned int key;
+ };

1) Lookup algorithm
-------------------
@@ -142,6 +151,9 @@ the beginning. If the object was moved to the same chain,
then the reader doesn't care: It might occasionally
scan the list again without harm.

+Note that using hlist_nulls means the type of 'obj_node' field of
+'struct object' becomes 'struct hlist_nulls_node'.
+

1) lookup algorithm
-------------------
--
2.25.1



2023-06-16 17:56:44

by Alan Huang

[permalink] [raw]
Subject: Re: [PATCH v3 1/3] Docs/RCU/rculist_nulls: Specify type of the object in examples


> 2023年6月16日 02:10,SeongJae Park <[email protected]> 写道:
>
> The type of 'obj' in example code of rculist_nulls.rst is implicit.
> Provide the specific type of it before the example code.
>
> Suggested-by: aul E. McKenney <[email protected]>

Paul E. McKenney

> Link: https://lore.kernel.org/rcu/43943609-f80c-4b6a-9844-994eef800757@paulmck-laptop/
> Signed-off-by: SeongJae Park <[email protected]>
> ---
> Documentation/RCU/rculist_nulls.rst | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
> index 94a8bfe9f560..4b66e2fd2fb5 100644
> --- a/Documentation/RCU/rculist_nulls.rst
> +++ b/Documentation/RCU/rculist_nulls.rst
> @@ -18,7 +18,16 @@ to solve following problem.
>
> Without 'nulls', a typical RCU linked list managing objects which are
> allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can use the following
> -algorithms:
> +algorithms. Following examples assume 'obj' is a pointer to such
> +objects, which is having below type.
> +
> +::
> +
> + struct object {
> + struct hlist_node obj_node;
> + refcount_t refcnt;

atomic_t

> + unsigned int key;
> + };
>
> 1) Lookup algorithm
> -------------------
> @@ -142,6 +151,9 @@ the beginning. If the object was moved to the same chain,
> then the reader doesn't care: It might occasionally
> scan the list again without harm.
>
> +Note that using hlist_nulls means the type of 'obj_node' field of
> +'struct object' becomes 'struct hlist_nulls_node'.
> +
>
> 1) lookup algorithm
> -------------------
> --
> 2.25.1
>


2023-06-16 19:04:04

by SeongJae Park

[permalink] [raw]
Subject: Re: [PATCH v3 1/3] Docs/RCU/rculist_nulls: Specify type of the object in examples

On Sat, 17 Jun 2023 01:46:16 +0800 Alan Huang <[email protected]> wrote:

>
> > 2023年6月16日 02:10,SeongJae Park <[email protected]> 写道:
> >
> > The type of 'obj' in example code of rculist_nulls.rst is implicit.
> > Provide the specific type of it before the example code.
> >
> > Suggested-by: aul E. McKenney <[email protected]>
>
> Paul E. McKenney

Oops, thank you for finding, and sorry, Paul :)

>
> > Link: https://lore.kernel.org/rcu/43943609-f80c-4b6a-9844-994eef800757@paulmck-laptop/
> > Signed-off-by: SeongJae Park <[email protected]>
> > ---
> > Documentation/RCU/rculist_nulls.rst | 14 +++++++++++++-
> > 1 file changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
> > index 94a8bfe9f560..4b66e2fd2fb5 100644
> > --- a/Documentation/RCU/rculist_nulls.rst
> > +++ b/Documentation/RCU/rculist_nulls.rst
> > @@ -18,7 +18,16 @@ to solve following problem.
> >
> > Without 'nulls', a typical RCU linked list managing objects which are
> > allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can use the following
> > -algorithms:
> > +algorithms. Following examples assume 'obj' is a pointer to such
> > +objects, which is having below type.
> > +
> > +::
> > +
> > + struct object {
> > + struct hlist_node obj_node;
> > + refcount_t refcnt;
>
> atomic_t

I just recalled the example code uses atomic_set_release() for this field.

Thank you, Alan!

I will fix these in the next spin.


Thanks,
SJ

>
> > + unsigned int key;
> > + };
> >
> > 1) Lookup algorithm
> > -------------------
> > @@ -142,6 +151,9 @@ the beginning. If the object was moved to the same chain,
> > then the reader doesn't care: It might occasionally
> > scan the list again without harm.
> >
> > +Note that using hlist_nulls means the type of 'obj_node' field of
> > +'struct object' becomes 'struct hlist_nulls_node'.
> > +
> >
> > 1) lookup algorithm
> > -------------------
> > --
> > 2.25.1
> >
>
>

2023-06-16 23:31:14

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH v3 1/3] Docs/RCU/rculist_nulls: Specify type of the object in examples

On Fri, Jun 16, 2023 at 06:54:11PM +0000, SeongJae Park wrote:
> On Sat, 17 Jun 2023 01:46:16 +0800 Alan Huang <[email protected]> wrote:
>
> >
> > > 2023年6月16日 02:10,SeongJae Park <[email protected]> 写道:
> > >
> > > The type of 'obj' in example code of rculist_nulls.rst is implicit.
> > > Provide the specific type of it before the example code.
> > >
> > > Suggested-by: aul E. McKenney <[email protected]>
> >
> > Paul E. McKenney
>
> Oops, thank you for finding, and sorry, Paul :)

Not a problem, just send new patches and I will replace those currently
in -rcu with those new patches.

Thanx, Paul

> > > Link: https://lore.kernel.org/rcu/43943609-f80c-4b6a-9844-994eef800757@paulmck-laptop/
> > > Signed-off-by: SeongJae Park <[email protected]>
> > > ---
> > > Documentation/RCU/rculist_nulls.rst | 14 +++++++++++++-
> > > 1 file changed, 13 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
> > > index 94a8bfe9f560..4b66e2fd2fb5 100644
> > > --- a/Documentation/RCU/rculist_nulls.rst
> > > +++ b/Documentation/RCU/rculist_nulls.rst
> > > @@ -18,7 +18,16 @@ to solve following problem.
> > >
> > > Without 'nulls', a typical RCU linked list managing objects which are
> > > allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can use the following
> > > -algorithms:
> > > +algorithms. Following examples assume 'obj' is a pointer to such
> > > +objects, which is having below type.
> > > +
> > > +::
> > > +
> > > + struct object {
> > > + struct hlist_node obj_node;
> > > + refcount_t refcnt;
> >
> > atomic_t
>
> I just recalled the example code uses atomic_set_release() for this field.
>
> Thank you, Alan!
>
> I will fix these in the next spin.
>
>
> Thanks,
> SJ
>
> >
> > > + unsigned int key;
> > > + };
> > >
> > > 1) Lookup algorithm
> > > -------------------
> > > @@ -142,6 +151,9 @@ the beginning. If the object was moved to the same chain,
> > > then the reader doesn't care: It might occasionally
> > > scan the list again without harm.
> > >
> > > +Note that using hlist_nulls means the type of 'obj_node' field of
> > > +'struct object' becomes 'struct hlist_nulls_node'.
> > > +
> > >
> > > 1) lookup algorithm
> > > -------------------
> > > --
> > > 2.25.1
> > >
> >
> >