From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: perfbook@vger.kernel.org
Subject: Re: [PATCH] datastruct/hash: Fix trivial typo
Date: Sun, 6 Jan 2019 17:06:04 -0800 [thread overview]
Message-ID: <20190107010604.GR4170@linux.ibm.com> (raw)
In-Reply-To: <e06562fd-e309-7cf8-a19f-370fc758cbed@gmail.com>
On Sun, Jan 06, 2019 at 04:47:53PM +0900, Akira Yokosawa wrote:
> >From e098b7a00c75e0a1605e7986c0b48e8a9a56dc8c Mon Sep 17 00:00:00 2001
> From: Akira Yokosawa <akiyks@gmail.com>
> Date: Sun, 6 Jan 2019 15:39:47 +0900
> Subject: [PATCH] datastruct/hash: Fix trivial typo
>
> List of fixes:
>
> o Non-breakable spaces for single letter parameters such as
> "parameter b" and "parameter h"
>
> o Trivial typo ("ths" -> "the")
>
> o Remnant of the old way of presenting code snippets
> ("figure" -> "listing")
>
> o Missing \ref{} command
>
> o Redundant words: ("be be"), ("the each")
>
> o Missing "are" in passive voice
>
> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
Good catches, queued and pushed this one plus your earlier macroization
of SeongJae's patch, thank you!
Thanx, Paul
> ---
> Hi Paul,
>
> I've read through the updated Section 10.4.2.
> It becomes much easier to follow, partly because I have a better
> understanding of the code now. Quick Quizzes 10.12 and 10.13 make
> a lot of sense.
>
> This patch fixes what I noticed while reading.
> It might not necessarily reflect your intention, though.
> For example, "ths" can be "this" rather than "the".
> Feel free to make any adjustment.
>
> Thanks, Akira
> --
> datastruct/datastruct.tex | 28 ++++++++++++++--------------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/datastruct/datastruct.tex b/datastruct/datastruct.tex
> index f9685d8..5c61bf5 100644
> --- a/datastruct/datastruct.tex
> +++ b/datastruct/datastruct.tex
> @@ -973,23 +973,23 @@ The \co{ht_get_bucket_single()} function returns a reference to the bucket
> corresponding to the specified key in the specified hash table, without
> making any allowances for resizing.
> It also stores the bucket index corresponding to the key into the location
> -referenced by parameter \co{b} on
> +referenced by parameter~\co{b} on
> line~\lnref{single:gethash}, and the corresponding
> hash value corresponding to the key into the location
> -referenced by parameter \co{h} (if non-\co{NULL}) on line~\lnref{single:h}.
> +referenced by parameter~\co{h} (if non-\co{NULL}) on line~\lnref{single:h}.
> Line~\lnref{single:return} then returns a reference to the corresponding bucket.
>
> The \co{ht_get_bucket()} function handles hash-table selection, invoking
> \co{ht_get_bucket_single()} on
> line~\lnref{call_single} to select the bucket
> corresponding to the hash in the current
> -hash table, storing the hash value through parameter \co{b}.
> +hash table, storing the hash value through parameter~\co{b}.
> If line~\lnref{resized} determines that the table is being resized and that
> line~\lnref{call_single}'s bucket has already been distributed across the new hash
> table, then line~\lnref{newtable} selects the new hash table and
> line~\lnref{newbucket}
> selects the bucket corresponding to the hash in the new hash table,
> -again storing the hash value through parameter \co{b}.
> +again storing the hash value through parameter~\co{b}.
> \end{lineref}
>
> \QuickQuiz{}
> @@ -1005,7 +1005,7 @@ again storing the hash value through parameter \co{b}.
> } \QuickQuizEnd
>
> \begin{lineref}[ln:datastruct:hash_resize:get_bucket]
> -If line~\lnref{chk_i} finds that parameter \co{i} is non-\co{NULL}, then
> +If line~\lnref{chk_i} finds that parameter~\co{i} is non-\co{NULL}, then
> line~\lnref{set_idx} stores the pointer-set index for the selected hash table.
> Finally, line~\lnref{return} returns a reference to the selected hash bucket.
> \end{lineref}
> @@ -1053,7 +1053,7 @@ resizing operation from distributing that bucket, though of course it
> will have no effect if that bucket has already been distributed.
> Lines~\lnref{lsp0b}-\lnref{lsp0e} store the bucket pointer,
> pointer-set index, and hash value into their respective fields in the
> -\co{ht_lock_state} structure, which communicates ths information to
> +\co{ht_lock_state} structure, which communicates the information to
> \co{hashtab_add()}, \co{hashtab_del()}, and \co{hashtab_unlock_mod()}.
> Line~\lnref{ifresized} then checks to see if a concurrent resize
> operation has already distributed this bucket across the new hash table,
> @@ -1068,7 +1068,7 @@ line~\lnref{get_newbkt} selects the bucket corresponding to the key,
> and line~\lnref{acq_newbkt} acquires the bucket's lock.
> Lines~\lnref{lsp1b}-\lnref{lsp1e} store the bucket pointer,
> pointer-set index, and hash value into their respective fields in the
> -\co{ht_lock_state} structure, which communicates ths information to
> +\co{ht_lock_state} structure, which communicates the information to
> \co{hashtab_add()}, \co{hashtab_del()}, and \co{hashtab_unlock_mod()}.
> Note that in this case, two locks are held, one in the old \co{ht_bucket}
> structure to prevent resizing that bucket (if not already resized),
> @@ -1105,7 +1105,7 @@ section.
> Furthermore, the insertion operation takes place within an
> RCU read-side critical section.
> As we will see when we examine the \co{hashtab_resize()}
> - function, this means that the each resize operation uses
> + function, this means that each resize operation uses
> \co{synchronize_rcu()} invocations to wait for the insertion's
> read-side critical section to complete.
> } \QuickQuizEnd
> @@ -1119,12 +1119,12 @@ section.
> Now that we have bucket selection and concurrency control in place,
> we are ready to search and update our resizable hash table.
> The \co{hashtab_lookup()}, \co{hashtab_add()}, and \co{hashtab_del()}
> -functions shown in
> +functions are shown in
> Listing~\ref{lst:datastruct:Resizable Hash-Table Access Functions}.
>
> \begin{lineref}[ln:datastruct:hash_resize:access:lkp]
> The \co{hashtab_lookup()} function on
> -lines~\lnref{b}-\lnref{e} of the figure does
> +lines~\lnref{b}-\lnref{e} of the listing does
> hash lookups.
> Line~\lnref{get_curtbl} fetches the current hash table and
> line~\lnref{get_curbkt} obtains a reference
> @@ -1163,7 +1163,7 @@ failure.
> } \QuickQuizEnd
>
> \begin{lineref}[ln:datastruct:hash_resize:access:add]
> -The \co{hashtab_add()} function on lines~\lnref{b}-\lnref{e} of the figure adds
> +The \co{hashtab_add()} function on lines~\lnref{b}-\lnref{e} of the listing adds
> new data elements to the hash table.
> Line~\lnref{new} determines whether a resize was in progress and the
> corresponding old bucket has already been distributed (value of one)
> @@ -1181,7 +1181,7 @@ The caller is required to handle concurrency, for example, by invoking
>
> \begin{lineref}[ln:datastruct:hash_resize:access:del]
> The \co{hashtab_del()} function on
> -lines~\lnref{b}-\lnref{e} of the figure removes
> +lines~\lnref{b}-\lnref{e} of the listing removes
> an existing element from the hash table.
> Line~\lnref{i} picks up the index of the pointer pair
> and line~\lnref{del} removes the specified element.
> @@ -1278,7 +1278,7 @@ and line~\lnref{acq_oldcur} acquires that bucket's spinlock.
> \co{hashtab_del()} functions must nevertheless be enclosed
> in RCU read-side critical sections, courtesy of
> \co{hashtab_lock_mod()} and \co{hashtab_unlock_mod()} in
> - Listing{lst:datastruct:Resizable Hash-Table Update-Side Concurrency
> + Listing~\ref{lst:datastruct:Resizable Hash-Table Update-Side Concurrency
> Control}.
> \end{lineref}
> } \QuickQuizEnd
> @@ -1382,7 +1382,7 @@ somewhat due to the cache misses causes by the updates to each element's
> pointers, and this effect is most pronounced when the hash-tables
> bucket lists are short.
> This indicates that hash tables should be resized by substantial amounts,
> -and that hysteresis should be be applied to prevent performance degradation
> +and that hysteresis should be applied to prevent performance degradation
> due to too-frequent resize operations.
> In memory-rich environments, hash-table sizes should furthermore
> be increased much more aggressively than they are decreased.
> --
> 2.7.4
>
prev parent reply other threads:[~2019-01-07 1:05 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-06 7:47 [PATCH] datastruct/hash: Fix trivial typo Akira Yokosawa
2019-01-07 1:06 ` Paul E. McKenney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190107010604.GR4170@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akiyks@gmail.com \
--cc=perfbook@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox