* [PATCH 00/10] Manually convert RCU text files to ReST format
@ 2020-04-21 17:04 Mauro Carvalho Chehab
2020-04-21 17:04 ` [PATCH 04/10] docs: RCU: convert rculist_nulls.txt to ReST Mauro Carvalho Chehab
2020-04-21 17:58 ` [PATCH 00/10] Manually convert RCU text files to ReST format Paul E. McKenney
0 siblings, 2 replies; 3+ messages in thread
From: Mauro Carvalho Chehab @ 2020-04-21 17:04 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, linux-kernel, Jonathan Corbet,
David S. Miller, Josh Triplett, Vito Caputo, Alexey Dobriyan,
Jakub Kicinski, Davidlohr Bueso, Joe Stringer, Joel Fernandes,
Martin KaFai Lau, Lai Jiangshan, Thomas Gleixner,
Daniel Borkmann, Eric Dumazet, Peter Zijlstra, Jakub Sitnicki,
rcu, Ingo Molnar, Paul E. McKenney, zhanglin, netdev,
Greg Kroah-Hartman, Will Deacon, Steven Rostedt,
Mathieu Desnoyers, Rob Herring
This patch series convert RCU patches to ReST.
One interesting point to be noticed hereis that the RTFP.txt file contain a
broken TeX bib file. I suspect that someone added some new articles
directly there without trying to use LaTeX to check if the addition is
valid. Or maybe it is just due to some version differences from the time
such references were added.
During the RTFP.txt conversion, I fixed the bibtex problems in order for it
to be properly parsed by LaTeX, and used the fixed file to produce a list of
the actually used references inside the RTFP.txt file., manually adding them
to the converted RTFP.rst.
As not all references were mentioned there, I opted to preserve the
converted RTFP.bib, as it could be useful for someone doing any
research around RCU.
The results of those changes (together with other changes from my pending
doc patches) are available at:
https://www.infradead.org/~mchehab/kernel_docs/RCU/index.html
And the series is on my git tree:
https://git.linuxtv.org/mchehab/experimental.git/log/?h=rcu-docs
Mauro Carvalho Chehab (10):
docs: RCU: convert checklist.txt to ReST
docs: RCU: convert lockdep-splat.txt to ReST
docs: RCU: convert lockdep.txt to ReST
docs: RCU: convert rculist_nulls.txt to ReST
docs: RCU: convert torture.txt to ReST
docs: RCU: convert rcuref.txt to ReST
docs: RCU: RTFP: fix bibtex entries
docs: RCU: convert RTFP.txt to ReST
docs: RCU: stallwarn.txt: convert it to ReST
docs: RCU: rculist_nulls.rst: don't duplicate chapter names
Documentation/RCU/{RTFP.txt => RTFP.bib} | 323 ++--------
Documentation/RCU/RTFP.rst | 593 ++++++++++++++++++
.../RCU/{checklist.txt => checklist.rst} | 17 +-
Documentation/RCU/index.rst | 11 +
.../{lockdep-splat.txt => lockdep-splat.rst} | 99 +--
.../RCU/{lockdep.txt => lockdep.rst} | 12 +-
Documentation/RCU/rcu.rst | 4 +-
Documentation/RCU/rculist_nulls.rst | 200 ++++++
Documentation/RCU/rculist_nulls.txt | 172 -----
Documentation/RCU/{rcuref.txt => rcuref.rst} | 193 +++---
.../RCU/{stallwarn.txt => stallwarn.rst} | 55 +-
.../RCU/{torture.txt => torture.rst} | 115 ++--
Documentation/locking/locktorture.rst | 2 +-
MAINTAINERS | 4 +-
include/linux/rculist_nulls.h | 2 +-
kernel/rcu/rcutorture.c | 2 +-
kernel/rcu/tree_stall.h | 4 +-
net/core/sock.c | 4 +-
18 files changed, 1139 insertions(+), 673 deletions(-)
rename Documentation/RCU/{RTFP.txt => RTFP.bib} (82%)
create mode 100644 Documentation/RCU/RTFP.rst
rename Documentation/RCU/{checklist.txt => checklist.rst} (98%)
rename Documentation/RCU/{lockdep-splat.txt => lockdep-splat.rst} (54%)
rename Documentation/RCU/{lockdep.txt => lockdep.rst} (96%)
create mode 100644 Documentation/RCU/rculist_nulls.rst
delete mode 100644 Documentation/RCU/rculist_nulls.txt
rename Documentation/RCU/{rcuref.txt => rcuref.rst} (50%)
rename Documentation/RCU/{stallwarn.txt => stallwarn.rst} (90%)
rename Documentation/RCU/{torture.txt => torture.rst} (76%)
--
2.25.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 04/10] docs: RCU: convert rculist_nulls.txt to ReST
2020-04-21 17:04 [PATCH 00/10] Manually convert RCU text files to ReST format Mauro Carvalho Chehab
@ 2020-04-21 17:04 ` Mauro Carvalho Chehab
2020-04-21 17:58 ` [PATCH 00/10] Manually convert RCU text files to ReST format Paul E. McKenney
1 sibling, 0 replies; 3+ messages in thread
From: Mauro Carvalho Chehab @ 2020-04-21 17:04 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, linux-kernel, Jonathan Corbet,
Paul E. McKenney, Josh Triplett, Steven Rostedt,
Mathieu Desnoyers, Lai Jiangshan, Joel Fernandes,
David S. Miller, Jakub Kicinski, Eric Dumazet, Martin KaFai Lau,
Daniel Borkmann, Jakub Sitnicki, Alexey Dobriyan, Joe Stringer,
zhanglin, Thomas Gleixner, Vito Caputo, rcu, netdev
- Add a SPDX header;
- Adjust document title;
- Some whitespace fixes and new line breaks;
- Mark literal blocks as such;
- Add it to RCU/index.rst.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Documentation/RCU/index.rst | 1 +
Documentation/RCU/rculist_nulls.rst | 194 ++++++++++++++++++++++++++++
Documentation/RCU/rculist_nulls.txt | 172 ------------------------
include/linux/rculist_nulls.h | 2 +-
net/core/sock.c | 4 +-
5 files changed, 198 insertions(+), 175 deletions(-)
create mode 100644 Documentation/RCU/rculist_nulls.rst
delete mode 100644 Documentation/RCU/rculist_nulls.txt
diff --git a/Documentation/RCU/index.rst b/Documentation/RCU/index.rst
index fa7a2a8949b7..577a47e27f5d 100644
--- a/Documentation/RCU/index.rst
+++ b/Documentation/RCU/index.rst
@@ -17,6 +17,7 @@ RCU concepts
rcu_dereference
whatisRCU
rcu
+ rculist_nulls
listRCU
NMI-RCU
UP
diff --git a/Documentation/RCU/rculist_nulls.rst b/Documentation/RCU/rculist_nulls.rst
new file mode 100644
index 000000000000..d40374221d69
--- /dev/null
+++ b/Documentation/RCU/rculist_nulls.rst
@@ -0,0 +1,194 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=================================================
+Using RCU hlist_nulls to protect list and objects
+=================================================
+
+This section describes how to use hlist_nulls to
+protect read-mostly linked lists and
+objects using SLAB_TYPESAFE_BY_RCU allocations.
+
+Please read the basics in Documentation/RCU/listRCU.rst
+
+Using special makers (called 'nulls') is a convenient way
+to solve following problem :
+
+A typical RCU linked list managing objects which are
+allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can
+use following algos :
+
+1) Lookup algo
+--------------
+
+::
+
+ rcu_read_lock()
+ begin:
+ obj = lockless_lookup(key);
+ if (obj) {
+ if (!try_get_ref(obj)) // might fail for free objects
+ goto begin;
+ /*
+ * Because a writer could delete object, and a writer could
+ * reuse these object before the RCU grace period, we
+ * must check key after getting the reference on object
+ */
+ if (obj->key != key) { // not the object we expected
+ put_ref(obj);
+ goto begin;
+ }
+ }
+ rcu_read_unlock();
+
+Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu()
+but a version with an additional memory barrier (smp_rmb())
+
+::
+
+ lockless_lookup(key)
+ {
+ struct hlist_node *node, *next;
+ for (pos = rcu_dereference((head)->first);
+ pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
+ pos = rcu_dereference(next))
+ if (obj->key == key)
+ return obj;
+ return NULL;
+ }
+
+And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb()::
+
+ struct hlist_node *node;
+ for (pos = rcu_dereference((head)->first);
+ pos && ({ prefetch(pos->next); 1; }) &&
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
+ pos = rcu_dereference(pos->next))
+ if (obj->key == key)
+ return obj;
+ return NULL;
+
+Quoting Corey Minyard::
+
+ "If the object is moved from one list to another list in-between the
+ time the hash is calculated and the next field is accessed, and the
+ object has moved to the end of a new list, the traversal will not
+ complete properly on the list it should have, since the object will
+ be on the end of the new list and there's not a way to tell it's on a
+ new list and restart the list traversal. I think that this can be
+ solved by pre-fetching the "next" field (with proper barriers) before
+ checking the key."
+
+2) Insert algo
+--------------
+
+We need to make sure a reader cannot read the new 'obj->obj_next' value
+and previous value of 'obj->key'. Or else, an item could be deleted
+from a chain, and inserted into another chain. If new chain was empty
+before the move, 'next' pointer is NULL, and lockless reader can
+not detect it missed following items in original chain.
+
+::
+
+ /*
+ * Please note that new inserts are done at the head of list,
+ * not in the middle or end.
+ */
+ obj = kmem_cache_alloc(...);
+ lock_chain(); // typically a spin_lock()
+ obj->key = key;
+ /*
+ * we need to make sure obj->key is updated before obj->next
+ * or obj->refcnt
+ */
+ smp_wmb();
+ atomic_set(&obj->refcnt, 1);
+ hlist_add_head_rcu(&obj->obj_node, list);
+ unlock_chain(); // typically a spin_unlock()
+
+
+3) Remove algo
+--------------
+Nothing special here, we can use a standard RCU hlist deletion.
+But thanks to SLAB_TYPESAFE_BY_RCU, beware a deleted object can be reused
+very very fast (before the end of RCU grace period)
+
+::
+
+ if (put_last_reference_on(obj) {
+ lock_chain(); // typically a spin_lock()
+ hlist_del_init_rcu(&obj->obj_node);
+ unlock_chain(); // typically a spin_unlock()
+ kmem_cache_free(cachep, obj);
+ }
+
+
+
+--------------------------------------------------------------------------
+
+With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
+and extra smp_wmb() in insert function.
+
+For example, if we choose to store the slot number as the 'nulls'
+end-of-list marker for each slot of the hash table, we can detect
+a race (some writer did a delete and/or a move of an object
+to another chain) checking the final 'nulls' value if
+the lookup met the end of chain. If final 'nulls' value
+is not the slot number, then we must restart the lookup at
+the beginning. If the object was moved to the same chain,
+then the reader doesn't care : It might eventually
+scan the list again without harm.
+
+
+1) lookup algo
+--------------
+
+::
+
+ head = &table[slot];
+ rcu_read_lock();
+ begin:
+ hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
+ if (obj->key == key) {
+ if (!try_get_ref(obj)) // might fail for free objects
+ goto begin;
+ if (obj->key != key) { // not the object we expected
+ put_ref(obj);
+ goto begin;
+ }
+ goto out;
+ }
+ /*
+ * if the nulls value we got at the end of this lookup is
+ * not the expected one, we must restart lookup.
+ * We probably met an item that was moved to another chain.
+ */
+ if (get_nulls_value(node) != slot)
+ goto begin;
+ obj = NULL;
+
+ out:
+ rcu_read_unlock();
+
+2) Insert function
+------------------
+
+::
+
+ /*
+ * Please note that new inserts are done at the head of list,
+ * not in the middle or end.
+ */
+ obj = kmem_cache_alloc(cachep);
+ lock_chain(); // typically a spin_lock()
+ obj->key = key;
+ /*
+ * changes to obj->key must be visible before refcnt one
+ */
+ smp_wmb();
+ atomic_set(&obj->refcnt, 1);
+ /*
+ * insert obj in RCU way (readers might be traversing chain)
+ */
+ hlist_nulls_add_head_rcu(&obj->obj_node, list);
+ unlock_chain(); // typically a spin_unlock()
diff --git a/Documentation/RCU/rculist_nulls.txt b/Documentation/RCU/rculist_nulls.txt
deleted file mode 100644
index 23f115dc87cf..000000000000
--- a/Documentation/RCU/rculist_nulls.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-Using hlist_nulls to protect read-mostly linked lists and
-objects using SLAB_TYPESAFE_BY_RCU allocations.
-
-Please read the basics in Documentation/RCU/listRCU.rst
-
-Using special makers (called 'nulls') is a convenient way
-to solve following problem :
-
-A typical RCU linked list managing objects which are
-allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can
-use following algos :
-
-1) Lookup algo
---------------
-rcu_read_lock()
-begin:
-obj = lockless_lookup(key);
-if (obj) {
- if (!try_get_ref(obj)) // might fail for free objects
- goto begin;
- /*
- * Because a writer could delete object, and a writer could
- * reuse these object before the RCU grace period, we
- * must check key after getting the reference on object
- */
- if (obj->key != key) { // not the object we expected
- put_ref(obj);
- goto begin;
- }
-}
-rcu_read_unlock();
-
-Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu()
-but a version with an additional memory barrier (smp_rmb())
-
-lockless_lookup(key)
-{
- struct hlist_node *node, *next;
- for (pos = rcu_dereference((head)->first);
- pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
- ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
- pos = rcu_dereference(next))
- if (obj->key == key)
- return obj;
- return NULL;
-
-And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb() :
-
- struct hlist_node *node;
- for (pos = rcu_dereference((head)->first);
- pos && ({ prefetch(pos->next); 1; }) &&
- ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
- pos = rcu_dereference(pos->next))
- if (obj->key == key)
- return obj;
- return NULL;
-}
-
-Quoting Corey Minyard :
-
-"If the object is moved from one list to another list in-between the
- time the hash is calculated and the next field is accessed, and the
- object has moved to the end of a new list, the traversal will not
- complete properly on the list it should have, since the object will
- be on the end of the new list and there's not a way to tell it's on a
- new list and restart the list traversal. I think that this can be
- solved by pre-fetching the "next" field (with proper barriers) before
- checking the key."
-
-2) Insert algo :
-----------------
-
-We need to make sure a reader cannot read the new 'obj->obj_next' value
-and previous value of 'obj->key'. Or else, an item could be deleted
-from a chain, and inserted into another chain. If new chain was empty
-before the move, 'next' pointer is NULL, and lockless reader can
-not detect it missed following items in original chain.
-
-/*
- * Please note that new inserts are done at the head of list,
- * not in the middle or end.
- */
-obj = kmem_cache_alloc(...);
-lock_chain(); // typically a spin_lock()
-obj->key = key;
-/*
- * we need to make sure obj->key is updated before obj->next
- * or obj->refcnt
- */
-smp_wmb();
-atomic_set(&obj->refcnt, 1);
-hlist_add_head_rcu(&obj->obj_node, list);
-unlock_chain(); // typically a spin_unlock()
-
-
-3) Remove algo
---------------
-Nothing special here, we can use a standard RCU hlist deletion.
-But thanks to SLAB_TYPESAFE_BY_RCU, beware a deleted object can be reused
-very very fast (before the end of RCU grace period)
-
-if (put_last_reference_on(obj) {
- lock_chain(); // typically a spin_lock()
- hlist_del_init_rcu(&obj->obj_node);
- unlock_chain(); // typically a spin_unlock()
- kmem_cache_free(cachep, obj);
-}
-
-
-
---------------------------------------------------------------------------
-With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
-and extra smp_wmb() in insert function.
-
-For example, if we choose to store the slot number as the 'nulls'
-end-of-list marker for each slot of the hash table, we can detect
-a race (some writer did a delete and/or a move of an object
-to another chain) checking the final 'nulls' value if
-the lookup met the end of chain. If final 'nulls' value
-is not the slot number, then we must restart the lookup at
-the beginning. If the object was moved to the same chain,
-then the reader doesn't care : It might eventually
-scan the list again without harm.
-
-
-1) lookup algo
-
- head = &table[slot];
- rcu_read_lock();
-begin:
- hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
- if (obj->key == key) {
- if (!try_get_ref(obj)) // might fail for free objects
- goto begin;
- if (obj->key != key) { // not the object we expected
- put_ref(obj);
- goto begin;
- }
- goto out;
- }
-/*
- * if the nulls value we got at the end of this lookup is
- * not the expected one, we must restart lookup.
- * We probably met an item that was moved to another chain.
- */
- if (get_nulls_value(node) != slot)
- goto begin;
- obj = NULL;
-
-out:
- rcu_read_unlock();
-
-2) Insert function :
---------------------
-
-/*
- * Please note that new inserts are done at the head of list,
- * not in the middle or end.
- */
-obj = kmem_cache_alloc(cachep);
-lock_chain(); // typically a spin_lock()
-obj->key = key;
-/*
- * changes to obj->key must be visible before refcnt one
- */
-smp_wmb();
-atomic_set(&obj->refcnt, 1);
-/*
- * insert obj in RCU way (readers might be traversing chain)
- */
-hlist_nulls_add_head_rcu(&obj->obj_node, list);
-unlock_chain(); // typically a spin_unlock()
diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h
index 9670b54b484a..ff3e94779e73 100644
--- a/include/linux/rculist_nulls.h
+++ b/include/linux/rculist_nulls.h
@@ -162,7 +162,7 @@ static inline void hlist_nulls_add_fake(struct hlist_nulls_node *n)
* The barrier() is needed to make sure compiler doesn't cache first element [1],
* as this loop can be restarted [2]
* [1] Documentation/core-api/atomic_ops.rst around line 114
- * [2] Documentation/RCU/rculist_nulls.txt around line 146
+ * [2] Documentation/RCU/rculist_nulls.rst around line 146
*/
#define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \
for (({barrier();}), \
diff --git a/net/core/sock.c b/net/core/sock.c
index 90509c37d291..da7eb3f5c03e 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1883,7 +1883,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)
/*
* Before updating sk_refcnt, we must commit prior changes to memory
- * (Documentation/RCU/rculist_nulls.txt for details)
+ * (Documentation/RCU/rculist_nulls.rst for details)
*/
smp_wmb();
refcount_set(&newsk->sk_refcnt, 2);
@@ -2945,7 +2945,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
sk_rx_queue_clear(sk);
/*
* Before updating sk_refcnt, we must commit prior changes to memory
- * (Documentation/RCU/rculist_nulls.txt for details)
+ * (Documentation/RCU/rculist_nulls.rst for details)
*/
smp_wmb();
refcount_set(&sk->sk_refcnt, 1);
--
2.25.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 00/10] Manually convert RCU text files to ReST format
2020-04-21 17:04 [PATCH 00/10] Manually convert RCU text files to ReST format Mauro Carvalho Chehab
2020-04-21 17:04 ` [PATCH 04/10] docs: RCU: convert rculist_nulls.txt to ReST Mauro Carvalho Chehab
@ 2020-04-21 17:58 ` Paul E. McKenney
1 sibling, 0 replies; 3+ messages in thread
From: Paul E. McKenney @ 2020-04-21 17:58 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Doc Mailing List, linux-kernel, Jonathan Corbet,
David S. Miller, Josh Triplett, Vito Caputo, Alexey Dobriyan,
Jakub Kicinski, Davidlohr Bueso, Joe Stringer, Joel Fernandes,
Martin KaFai Lau, Lai Jiangshan, Thomas Gleixner,
Daniel Borkmann, Eric Dumazet, Peter Zijlstra, Jakub Sitnicki,
rcu, Ingo Molnar, zhanglin, netdev, Greg Kroah-Hartman,
Will Deacon, Steven Rostedt, Mathieu Desnoyers, Rob Herring
On Tue, Apr 21, 2020 at 07:04:01PM +0200, Mauro Carvalho Chehab wrote:
> This patch series convert RCU patches to ReST.
>
> One interesting point to be noticed hereis that the RTFP.txt file contain a
> broken TeX bib file. I suspect that someone added some new articles
> directly there without trying to use LaTeX to check if the addition is
> valid. Or maybe it is just due to some version differences from the time
> such references were added.
>
> During the RTFP.txt conversion, I fixed the bibtex problems in order for it
> to be properly parsed by LaTeX, and used the fixed file to produce a list of
> the actually used references inside the RTFP.txt file., manually adding them
> to the converted RTFP.rst.
>
> As not all references were mentioned there, I opted to preserve the
> converted RTFP.bib, as it could be useful for someone doing any
> research around RCU.
>
> The results of those changes (together with other changes from my pending
> doc patches) are available at:
>
> https://www.infradead.org/~mchehab/kernel_docs/RCU/index.html
>
> And the series is on my git tree:
>
> https://git.linuxtv.org/mchehab/experimental.git/log/?h=rcu-docs
I queued all but 7/10 and 8/10, for which I have the bibtex-to-ReST
conversion question. Thank you for dragging these files kicking and
screaming into the year 2020! ;-)
Thanx, Paul
> Mauro Carvalho Chehab (10):
> docs: RCU: convert checklist.txt to ReST
> docs: RCU: convert lockdep-splat.txt to ReST
> docs: RCU: convert lockdep.txt to ReST
> docs: RCU: convert rculist_nulls.txt to ReST
> docs: RCU: convert torture.txt to ReST
> docs: RCU: convert rcuref.txt to ReST
> docs: RCU: RTFP: fix bibtex entries
> docs: RCU: convert RTFP.txt to ReST
> docs: RCU: stallwarn.txt: convert it to ReST
> docs: RCU: rculist_nulls.rst: don't duplicate chapter names
>
> Documentation/RCU/{RTFP.txt => RTFP.bib} | 323 ++--------
> Documentation/RCU/RTFP.rst | 593 ++++++++++++++++++
> .../RCU/{checklist.txt => checklist.rst} | 17 +-
> Documentation/RCU/index.rst | 11 +
> .../{lockdep-splat.txt => lockdep-splat.rst} | 99 +--
> .../RCU/{lockdep.txt => lockdep.rst} | 12 +-
> Documentation/RCU/rcu.rst | 4 +-
> Documentation/RCU/rculist_nulls.rst | 200 ++++++
> Documentation/RCU/rculist_nulls.txt | 172 -----
> Documentation/RCU/{rcuref.txt => rcuref.rst} | 193 +++---
> .../RCU/{stallwarn.txt => stallwarn.rst} | 55 +-
> .../RCU/{torture.txt => torture.rst} | 115 ++--
> Documentation/locking/locktorture.rst | 2 +-
> MAINTAINERS | 4 +-
> include/linux/rculist_nulls.h | 2 +-
> kernel/rcu/rcutorture.c | 2 +-
> kernel/rcu/tree_stall.h | 4 +-
> net/core/sock.c | 4 +-
> 18 files changed, 1139 insertions(+), 673 deletions(-)
> rename Documentation/RCU/{RTFP.txt => RTFP.bib} (82%)
> create mode 100644 Documentation/RCU/RTFP.rst
> rename Documentation/RCU/{checklist.txt => checklist.rst} (98%)
> rename Documentation/RCU/{lockdep-splat.txt => lockdep-splat.rst} (54%)
> rename Documentation/RCU/{lockdep.txt => lockdep.rst} (96%)
> create mode 100644 Documentation/RCU/rculist_nulls.rst
> delete mode 100644 Documentation/RCU/rculist_nulls.txt
> rename Documentation/RCU/{rcuref.txt => rcuref.rst} (50%)
> rename Documentation/RCU/{stallwarn.txt => stallwarn.rst} (90%)
> rename Documentation/RCU/{torture.txt => torture.rst} (76%)
>
> --
> 2.25.2
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-04-21 17:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-21 17:04 [PATCH 00/10] Manually convert RCU text files to ReST format Mauro Carvalho Chehab
2020-04-21 17:04 ` [PATCH 04/10] docs: RCU: convert rculist_nulls.txt to ReST Mauro Carvalho Chehab
2020-04-21 17:58 ` [PATCH 00/10] Manually convert RCU text files to ReST format Paul E. McKenney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).