[PATCH] defer: Fix typos across Chapter 9
Kunwu Chan <[email protected]> Mon, 16 Feb 2026 12:43:09 +0800
| Newsgroups | org.kernel.vger.perfbook |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Kunwu Chan <[email protected]> --- defer/rcu.tex | 2 +- defer/rcuapi.tex | 4 ++-- defer/rcufundamental.tex | 2 +- defer/rcuintro.tex | 2 +- defer/rcurelated.tex | 2 +- defer/rcuusage.tex | 10 +++++----- defer/updates.tex | 2 +- defer/whichtochoose.tex | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/defer/rcu.tex b/defer/rcu.tex index c54da410..13078687 100644 --- a/defer/rcu.tex +++ b/defer/rcu.tex @@ -66,7 +66,7 @@ applied to virtually any data structure''. On the other hand, making good use of RCU often requires that you think differently about concurrency in general and about your use case in particular. -Much of the remainder of this section therofore provides a guide to +Much of the remainder of this section therefore provides a guide to mapping use cases onto RCU. \QuickQuiz{ diff --git a/defer/rcuapi.tex b/defer/rcuapi.tex index 54c94233..9fa11626 100644 --- a/defer/rcuapi.tex +++ b/defer/rcuapi.tex @@ -135,7 +135,7 @@ and by which shows the publish-subscribe portions of the API~\cite{PaulEMcKenney2024RCUAPI}.\footnote{ This citation covers v6.10 and later. - Documetation for earlier versions of the Linux-kernel RCU API may + Documentation for earlier versions of the Linux-kernel RCU API may be found elsewhere~\cite{PaulEMcKenney2008WhatIsRCUAPI,PaulEMcKenney2014RCUAPI,PaulEMcKenney2019RCUAPI}.} \begin{sidewaystable*}[tbp] @@ -597,7 +597,7 @@ However, there are situations where this ease of use gets in the way, for example, when a cache of RCU-protected objects might be subject to reuse during the grace period that otherwise would have allowed them to be freed. -Although this can be handed through careful use of flags that interact +Although this can be handled through careful use of flags that interact with the RCU callback queued by \co{call_rcu()}, this can be inconvenient and can waste CPU times due to the overhead of the doomed \co{call_rcu()} invocations. diff --git a/defer/rcufundamental.tex b/defer/rcufundamental.tex index 0efdf406..c3bcc4f0 100644 --- a/defer/rcufundamental.tex +++ b/defer/rcufundamental.tex @@ -484,7 +484,7 @@ In contrast, in \cref{fig:defer:Multiple RCU Data-Structure Versions} the reader sees a version that never actually existed! -One way to resolve this strange situation is via weaker semanitics. +One way to resolve this strange situation is via weaker semantics. A reader traversal must encounter any data item that was present during the full traversal (B, C, and~D), and might or might not encounter data items that were present for only part of the diff --git a/defer/rcuintro.tex b/defer/rcuintro.tex index d3a55a47..48de32e2 100644 --- a/defer/rcuintro.tex +++ b/defer/rcuintro.tex @@ -145,7 +145,7 @@ the state, as indicated by the ``2~Versions'' in the figure. to model. Real-world algorithms therefore absolutely must tolerate - inconsistancies between external reality and the in-computer + inconsistencies between external reality and the in-computer data reflecting that reality. Many of those algorithms are also able to tolerate some degree of inconsistency within the in-computer data. diff --git a/defer/rcurelated.tex b/defer/rcurelated.tex index 8846825f..cf4b7b49 100644 --- a/defer/rcurelated.tex +++ b/defer/rcurelated.tex @@ -391,7 +391,7 @@ sleepable RCU (SRCU)~\cite{PaulEMcKenney2006c}. Finally, \ppl{Michalis}{Kokologiannakis} and \ppl{Konstantinos}{Sagonas} (National Technical University of Athens)~\cite{MichalisKokologiannakis2017NidhuggRCU,MichalisKokologiannakis2019RCUstatelessModelCheck} -used the Nighugg tool~\cite{CarlLeonardsson2014Nidhugg} +used the Nidhugg tool~\cite{CarlLeonardsson2014Nidhugg} to produce a mechanical proof of correctness of a somewhat larger portion of Linux-kernel Tree RCU\@. diff --git a/defer/rcuusage.tex b/defer/rcuusage.tex index 6225c672..63e12a40 100644 --- a/defer/rcuusage.tex +++ b/defer/rcuusage.tex @@ -226,7 +226,7 @@ that of the ideal synchronization-free workload. \end{figure*} Although Pre-BSD routing is an excellent RCU use case, it is worthwhile -looking at the relationships betweeen the wider spectrum of use cases +looking at the relationships between the wider spectrum of use cases shown in \cref{fig:defer:Relationships Between RCU Use Cases}. This task is taken up by the following sections. @@ -520,7 +520,7 @@ run concurrently with \co{do_maint()} to complete, and finally function's load from \co{be_careful} and any memory loads executed by the \co{cco_quickly()} function. Because there is no ordering, without that second call to - \co{syncrhonize_rcu()}, memory ordering could cause loads + \co{synchronize_rcu()}, memory ordering could cause loads in \co{cco_quickly()} to overlap with stores by \co{do_maint()}. Another alternative would be to compensate for the removal of @@ -852,7 +852,7 @@ and \clnref{ret_0:b} indicates failure to delete the specified key. \QuickQuizE{ The RCU-based algorithm shown in \cref{lst:defer:Existence Guarantees Enable Per-Element Locking} - locks very similar to that in + looks very similar to that in \cref{lst:locking:Per-Element Locking With Lock-Based Existence Guarantees}, so why should the RCU-based approach be any better? }\QuickQuizAnswerE{ @@ -1057,7 +1057,7 @@ which was generated on a 448-CPU 2.10\,GHz Intel x86 system. Nor was this a theoretical problem: A failure actually manifested in 2019. - \ppl{Herbert}{Xu} tracked down this failure down and + \ppl{Herbert}{Xu} tracked down this failure and \ppl{Linus}{Torvalds} therefore queued a commit to upgrade \co{rcu_read_lock()} and \co{rcu_read_unlock()} to unconditionally include a call to @@ -1356,7 +1356,7 @@ analysis~\cite[Figures 3 and 5]{VishakhaRamani2023LockBasedLocklessFresh}. at the time that it arrives, and extremely stale in the case of astronomical data. The finite speed of light also places a sharp limit on the - consistency of data arriving from different sources of via + consistency of data arriving from different sources or via different paths. You might as well face the fact that the laws of physics diff --git a/defer/updates.tex b/defer/updates.tex index 92e1fe93..7536e172 100644 --- a/defer/updates.tex +++ b/defer/updates.tex @@ -21,7 +21,7 @@ scalability for writers, namely the counting algorithms surveyed in These algorithms featured partially partitioned data structures so that updates can operate locally, while the more-expensive reads must sum across the entire data structure. -Silas Boyd-Wickhizer has generalized this notion to produce +Silas Boyd-Wickizer has generalized this notion to produce OpLog, which he has applied to Linux-kernel pathname lookup, VM reverse mappings, and the \co{stat()} system call~\cite{SilasBoydWickizerPhD}. diff --git a/defer/whichtochoose.tex b/defer/whichtochoose.tex index dfa19426..775da269 100644 --- a/defer/whichtochoose.tex +++ b/defer/whichtochoose.tex @@ -397,7 +397,7 @@ instructions. This limits lock contention and prevents both preemption and interrupts from delaying execution while those locks are held, in turn providing excellent forward - progrees~\cite{BjoernBrandenburgPhD,DanielBristot2019RTtrace,Hillier86,DipankarSarma2004OLSscalability}. + progress~\cite{BjoernBrandenburgPhD,DanielBristot2019RTtrace,Hillier86,DipankarSarma2004OLSscalability}. In short, formalisms such as wait-free synchronization have their place, but the really important thing is to figure out what your -- 2.25.1