Re: [perfbook] Possible improvements of Figures 9.11 -- 9.13

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 9 Mar 2021 11:46:38 -0800, Paul E. McKenney wrote:
> On Wed, Mar 10, 2021 at 12:32:30AM +0900, Akira Yokosawa wrote:
>> Hi Paul,
>>
>> I'm reviewing Section 9.5.
>> I find Figures 9.11 -- 9.13 are somewhat hard to grasp.
>>
>> In those figures, P0() is called "RCU Reader" due to the
>> RCU read-side critical section.
>>
>> However, it updates x and y, and you are talking about
>> final values of x and y.
>>
>> At first glance, it looked as though P0() would read from
>> x and y, and get values 1 or 2.
>>
>> Some clarification would help new readers of Edition 2,
>> I suppose.
> 
> How about as shown below?  (Not particularly human-readable given that
> I modified the figures as well.)

So, I was totally confused by those figures!
P0() is literally a reader from the beginning.  Oh well...

Updated text and figures would not have confused me.

        Thanks, Akira

> 
> 							Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
>  RCUGuaranteeFwd.svg |   99 +++++++++++++++++++++++---------------------------
>  RCUGuaranteeMid.svg |  101 ++++++++++++++++++++++++----------------------------
>  RCUGuaranteeRev.svg |   99 +++++++++++++++++++++++---------------------------
>  rcufundamental.tex  |   51 ++++++++++++++++----------
>  4 files changed, 173 insertions(+), 177 deletions(-)
> 
> commit 00ba43d6f9e6892cfb336ae8c75802852486cf15
> Author: Paul E. McKenney <paulmck@xxxxxxxxxx>
> Date:   Tue Mar 9 11:44:21 2021 -0800
> 
>     defer/rcufundamental: Clarify discussion of Figures 9.11-9.13
>     
>     Reported-by: Akira Yokosawa <akiyks@xxxxxxxxx>
>     Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
> 
> diff --git a/defer/RCUGuaranteeFwd.svg b/defer/RCUGuaranteeFwd.svg
> index 124b649..055638b 100644
> --- a/defer/RCUGuaranteeFwd.svg
> +++ b/defer/RCUGuaranteeFwd.svg
> @@ -13,7 +13,7 @@
>     height="270.15079"
>     id="svg2"
>     version="1.1"
> -   inkscape:version="0.48.4 r9939"
> +   inkscape:version="0.92.3 (2405546, 2018-03-11)"
>     sodipodi:docname="RCUGuaranteeFwd.svg">
>    <defs
>       id="defs4">
> @@ -124,7 +124,7 @@
>       inkscape:pageopacity="0.0"
>       inkscape:pageshadow="2"
>       inkscape:zoom="3.7201446"
> -     inkscape:cx="117.75291"
> +     inkscape:cx="106.53768"
>       inkscape:cy="135.07539"
>       inkscape:document-units="px"
>       inkscape:current-layer="layer1"
> @@ -133,10 +133,10 @@
>       fit-margin-left="0.05"
>       fit-margin-right="0.05"
>       fit-margin-bottom="0.05"
> -     inkscape:window-width="1012"
> -     inkscape:window-height="1148"
> -     inkscape:window-x="458"
> -     inkscape:window-y="24"
> +     inkscape:window-width="1652"
> +     inkscape:window-height="1465"
> +     inkscape:window-x="2188"
> +     inkscape:window-y="337"
>       inkscape:window-maximized="0" />
>    <metadata
>       id="metadata7">
> @@ -165,8 +165,8 @@
>          <path
>             inkscape:connector-curvature="0"
>             id="path5410"
> -           d="m 84.754663,841.32358 100.721987,0.37407 -0.37407,14.6715"
> -           style="fill:none;stroke:#00ff00;stroke-width:15.3268261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
> +           d="m 84.217049,797.77689 100.453181,0.10526 0.43235,58.487"
> +           style="fill:none;stroke:#00ff00;stroke-width:15.3268261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
>             sodipodi:nodetypes="ccc" />
>          <path
>             inkscape:connector-curvature="0"
> @@ -179,36 +179,36 @@
>             id="path5450"
>             inkscape:connector-curvature="0" />
>          <path
> -           style="fill:none;stroke:#64c8c8;stroke-width:16;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
> -           d="m 26.511711,797.23541 -38.528801,0 -0.374066,173.9407 157.107726,0"
> +           style="fill:none;stroke:#64c8c8;stroke-width:16;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
> +           d="m 26.511711,841.58852 -38.797608,-0.2688 -0.105259,129.85639 H 144.71657"
>             id="path5456"
>             inkscape:connector-curvature="0"
>             sodipodi:nodetypes="cccc" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="93.409752"
> -           y="844.49298"
> -           id="text5458"
> -           sodipodi:linespacing="125%"><tspan
> +           y="800.49298"
> +           id="text5458"><tspan
>               sodipodi:role="line"
>               x="93.409752"
> -             y="844.49298"
> -             id="tspan5462">Given this ordering ...</tspan></text>
> +             y="800.49298"
> +             id="tspan5462"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">Given this ordering ...</tspan></text>
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5466"
>             y="973.47589"
>             x="6.0528007"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
>               id="tspan5468"
>               y="973.47589"
>               x="6.0528007"
> -             sodipodi:role="line">.... RCU guarantees this ordering.</tspan></text>
> +             sodipodi:role="line"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">.... RCU guarantees this ordering.</tspan></text>
>          <path
>             style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> -           d="M 108.47914,114.18551 59.102431,217.8018"
> +           d="M 112.24243,68.219555 59.102431,217.8018"
>             id="path5470"
>             inkscape:connector-curvature="0"
>             transform="translate(26.137646,740.75144)"
> @@ -230,13 +230,12 @@
>             id="rect4930"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text4932"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan4936"
>               y="795.81049"
>               x="61.421471"
> @@ -255,16 +254,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text4948"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text4948"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan4952"
> -             style="text-align:center;text-anchor:middle">x = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">r1 = x;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -289,16 +287,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5352"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5352"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan5356"
> -             style="text-align:center;text-anchor:middle">y = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">r2 = y;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,89.95315)"
> @@ -313,16 +310,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5364"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5364"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan5368"
> -             style="text-align:center;text-anchor:middle">y = 2;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">x = 1;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,134)"
> @@ -336,13 +332,12 @@
>             id="rect5372"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5374"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan5378"
>               y="795.81049"
>               x="61.421471"
> @@ -370,17 +365,16 @@
>             id="rect5386"
>             style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5388"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="text-align:center;text-anchor:middle"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan5392"
>               y="795.81049"
>               x="61.421471"
> -             sodipodi:role="line">x = 2;</tspan></text>
> +             sodipodi:role="line">y = 1;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -400,39 +394,38 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text3862"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text3862"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan3864"
> -             style="font-size:6px;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
>        </g>
>        <text
>           xml:space="preserve"
> -         style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>           x="56.733543"
>           y="733.72308"
> -         id="text3251"
> -         sodipodi:linespacing="125%"><tspan
> +         id="text3251"><tspan
>             sodipodi:role="line"
>             id="tspan3253"
>             x="56.733543"
> -           y="733.72308">P0()</tspan></text>
> +           y="733.72308"
> +           style="font-size:8px;line-height:1.25;font-family:sans-serif">P0()</tspan></text>
>        <text
> -         sodipodi:linespacing="125%"
>           id="text3255"
>           y="997.72308"
>           x="186.73355"
> -         style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>           xml:space="preserve"><tspan
>             y="997.72308"
>             x="186.73355"
>             id="tspan3257"
> -           sodipodi:role="line">P1()</tspan></text>
> +           sodipodi:role="line"
> +           style="font-size:8px;line-height:1.25;font-family:sans-serif">P1()</tspan></text>
>      </g>
>    </g>
>  </svg>
> diff --git a/defer/RCUGuaranteeMid.svg b/defer/RCUGuaranteeMid.svg
> index 025266b..f343632 100644
> --- a/defer/RCUGuaranteeMid.svg
> +++ b/defer/RCUGuaranteeMid.svg
> @@ -13,7 +13,7 @@
>     height="266.8678"
>     id="svg2"
>     version="1.1"
> -   inkscape:version="0.48.4 r9939"
> +   inkscape:version="0.92.3 (2405546, 2018-03-11)"
>     sodipodi:docname="RCUGuaranteeMid.svg">
>    <defs
>       id="defs4">
> @@ -166,19 +166,19 @@
>       inkscape:pageopacity="0.0"
>       inkscape:pageshadow="2"
>       inkscape:zoom="3.4674888"
> -     inkscape:cx="121.41351"
> +     inkscape:cx="125.71437"
>       inkscape:cy="133.4339"
>       inkscape:document-units="px"
> -     inkscape:current-layer="g5416"
> +     inkscape:current-layer="layer1"
>       showgrid="false"
>       fit-margin-top="5"
>       fit-margin-left="5"
>       fit-margin-right="5"
>       fit-margin-bottom="5"
> -     inkscape:window-width="937"
> -     inkscape:window-height="1148"
> -     inkscape:window-x="420"
> -     inkscape:window-y="24"
> +     inkscape:window-width="1381"
> +     inkscape:window-height="1484"
> +     inkscape:window-x="2445"
> +     inkscape:window-y="403"
>       inkscape:window-maximized="0">
>      <inkscape:grid
>         type="xygrid"
> @@ -187,8 +187,10 @@
>         visible="true"
>         enabled="true"
>         snapvisiblegridlinesonly="true"
> -       originx="-2.6202392e-07px"
> -       originy="14.377359px" />
> +       originx="-2.6202392e-07"
> +       originy="14.377359"
> +       spacingx="1"
> +       spacingy="1" />
>    </sodipodi:namedview>
>    <metadata
>       id="metadata7">
> @@ -198,7 +200,7 @@
>          <dc:format>image/svg+xml</dc:format>
>          <dc:type
>             rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
> -        <dc:title></dc:title>
> +        <dc:title />
>        </cc:Work>
>      </rdf:RDF>
>    </metadata>
> @@ -237,16 +239,16 @@
>             inkscape:connector-curvature="0"
>             sodipodi:nodetypes="cccc" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5466"
>             y="891.99835"
>             x="44.399769"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
>               id="tspan5468"
>               y="891.99835"
>               x="44.399769"
> -             sodipodi:role="line">... this can happen</tspan></text>
> +             sodipodi:role="line"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">... this can happen</tspan></text>
>          <path
>             style="fill:none;stroke:#000000;stroke-width:0.94868332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
>             d="M 88.499834,855.13067 98.0701,878.6298"
> @@ -254,16 +256,16 @@
>             inkscape:connector-curvature="0"
>             sodipodi:nodetypes="cc" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5466-7"
>             y="848.10419"
>             x="47.993519"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
>               id="tspan5468-2"
>               y="848.10419"
>               x="47.993519"
> -             sodipodi:role="line">Given this ordering ...</tspan></text>
> +             sodipodi:role="line"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">Given this ordering ...</tspan></text>
>        </g>
>      </g>
>      <g
> @@ -286,13 +288,12 @@
>             id="rect4930"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text4932"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan4936"
>               y="795.81049"
>               x="61.421471"
> @@ -311,16 +312,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text4948"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text4948"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3066">x = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3066">r1 = x;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -345,16 +345,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5352"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5352"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3068">y = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3068">r2 = y;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,-36.04685)"
> @@ -369,16 +368,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5364"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5364"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3070">x = 2;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3070">x = 1;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,8)"
> @@ -392,13 +390,12 @@
>             id="rect5372"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5374"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan5378"
>               y="795.81049"
>               x="61.421471"
> @@ -420,17 +417,16 @@
>             id="rect5386"
>             style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5388"
>             y="883.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="text-align:center;text-anchor:middle"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               y="883.81049"
>               x="61.421471"
>               sodipodi:role="line"
> -             id="tspan3072">y = 2;</tspan></text>
> +             id="tspan3072">y = 1;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -450,39 +446,38 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text3862"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text3862"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan3864"
> -             style="font-size:6px;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
>        </g>
>        <text
>           xml:space="preserve"
> -         style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>           x="13.011486"
>           y="784.56586"
> -         id="text3259"
> -         sodipodi:linespacing="125%"><tspan
> +         id="text3259"><tspan
>             sodipodi:role="line"
>             id="tspan3261"
>             x="13.011486"
> -           y="784.56586">P0()</tspan></text>
> +           y="784.56586"
> +           style="font-size:8px;line-height:1.25;font-family:sans-serif">P0()</tspan></text>
>      </g>
>      <text
>         xml:space="preserve"
> -       style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>         x="186.02127"
>         y="794.23138"
> -       id="text3267"
> -       sodipodi:linespacing="125%"><tspan
> +       id="text3267"><tspan
>           sodipodi:role="line"
>           id="tspan3269"
>           x="186.02127"
> -         y="794.23138">P1()</tspan></text>
> +         y="794.23138"
> +         style="font-size:8px;line-height:1.25;font-family:sans-serif">P1()</tspan></text>
>    </g>
>  </svg>
> diff --git a/defer/RCUGuaranteeRev.svg b/defer/RCUGuaranteeRev.svg
> index cb54099..fa708ee 100644
> --- a/defer/RCUGuaranteeRev.svg
> +++ b/defer/RCUGuaranteeRev.svg
> @@ -13,7 +13,7 @@
>     height="212.83498"
>     id="svg2"
>     version="1.1"
> -   inkscape:version="0.48.4 r9939"
> +   inkscape:version="0.92.3 (2405546, 2018-03-11)"
>     sodipodi:docname="RCUGuaranteeRev.svg">
>    <defs
>       id="defs4">
> @@ -124,19 +124,19 @@
>       inkscape:pageopacity="0.0"
>       inkscape:pageshadow="2"
>       inkscape:zoom="3.614866"
> -     inkscape:cx="116.46352"
> +     inkscape:cx="115.85782"
>       inkscape:cy="106.41749"
>       inkscape:document-units="px"
> -     inkscape:current-layer="layer2"
> +     inkscape:current-layer="layer1"
>       showgrid="false"
>       fit-margin-top="0.05"
>       fit-margin-left="0.05"
>       fit-margin-right="0.05"
>       fit-margin-bottom="0.05"
> -     inkscape:window-width="937"
> +     inkscape:window-width="1438"
>       inkscape:window-height="1148"
> -     inkscape:window-x="420"
> -     inkscape:window-y="24"
> +     inkscape:window-x="2809"
> +     inkscape:window-y="208"
>       inkscape:window-maximized="0" />
>    <metadata
>       id="metadata7">
> @@ -186,27 +186,27 @@
>             sodipodi:nodetypes="ccc" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="-837.23907"
>             y="132.1207"
>             id="text5458"
> -           sodipodi:linespacing="125%"
> -           transform="matrix(0,-1,1,0,0,0)"><tspan
> +           transform="rotate(-90)"><tspan
>               sodipodi:role="line"
>               x="-837.23907"
>               y="132.1207"
> -             id="tspan5462">this ordering.</tspan></text>
> +             id="tspan5462"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">this ordering.</tspan></text>
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5466"
>             y="891.99835"
>             x="54.399769"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
>               id="tspan5468"
>               y="891.99835"
>               x="54.399769"
> -             sodipodi:role="line">Given this ordering ...</tspan></text>
> +             sodipodi:role="line"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">Given this ordering ...</tspan></text>
>          <path
>             style="fill:none;stroke:#000000;stroke-width:0.94868332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
>             d="M 94.499834,879.27124 104.0701,855.77211"
> @@ -214,16 +214,16 @@
>             inkscape:connector-curvature="0"
>             sodipodi:nodetypes="cc" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5466-7"
>             y="848.10419"
>             x="53.993519"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
>               id="tspan5468-2"
>               y="848.10419"
>               x="53.993519"
> -             sodipodi:role="line">... RCU guarantees</tspan></text>
> +             sodipodi:role="line"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif">... RCU guarantees</tspan></text>
>        </g>
>      </g>
>      <g
> @@ -241,13 +241,12 @@
>             id="rect4930"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text4932"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan4936"
>               y="795.81049"
>               x="61.421471"
> @@ -266,16 +265,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text4948"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text4948"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3066">x = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3066">r1 = x;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -300,16 +298,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5352"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5352"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3068">y = 1;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3068">r2 = y;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,-36.04685)"
> @@ -324,16 +321,15 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text5364"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text5364"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
> -             style="text-align:center;text-anchor:middle"
> -             id="tspan3070">x = 2;</tspan></text>
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
> +             id="tspan3070">x = 1;</tspan></text>
>        </g>
>        <g
>           transform="translate(124,8)"
> @@ -347,13 +343,12 @@
>             id="rect5372"
>             style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5374"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="font-size:6px;text-align:center;text-anchor:middle"
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               id="tspan5378"
>               y="795.81049"
>               x="61.421471"
> @@ -381,17 +376,16 @@
>             id="rect5386"
>             style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
>          <text
> -           sodipodi:linespacing="125%"
>             id="text5388"
>             y="795.81049"
>             x="61.421471"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"><tspan
> -             style="text-align:center;text-anchor:middle"
> +             style="font-size:8px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle"
>               y="795.81049"
>               x="61.421471"
>               sodipodi:role="line"
> -             id="tspan3072">y = 2;</tspan></text>
> +             id="tspan3072">y = 1;</tspan></text>
>        </g>
>        <path
>           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
> @@ -411,39 +405,38 @@
>             transform="translate(26.663998,740.34064)" />
>          <text
>             xml:space="preserve"
> -           style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
>             x="61.421471"
>             y="795.81049"
> -           id="text3862"
> -           sodipodi:linespacing="125%"><tspan
> +           id="text3862"><tspan
>               sodipodi:role="line"
>               x="61.421471"
>               y="795.81049"
>               id="tspan3864"
> -             style="font-size:6px;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
> +             style="font-size:6px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle">rcu_read_unlock()</tspan></text>
>        </g>
>        <text
>           xml:space="preserve"
> -         style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>           x="13.011486"
>           y="784.56586"
> -         id="text3259"
> -         sodipodi:linespacing="125%"><tspan
> +         id="text3259"><tspan
>             sodipodi:role="line"
>             id="tspan3261"
>             x="13.011486"
> -           y="784.56586">P0()</tspan></text>
> +           y="784.56586"
> +           style="font-size:8px;line-height:1.25;font-family:sans-serif">P0()</tspan></text>
>      </g>
>      <text
>         xml:space="preserve"
> -       style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
> +       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
>         x="186.02127"
>         y="794.23138"
> -       id="text3267"
> -       sodipodi:linespacing="125%"><tspan
> +       id="text3267"><tspan
>           sodipodi:role="line"
>           id="tspan3269"
>           x="186.02127"
> -         y="794.23138">P1()</tspan></text>
> +         y="794.23138"
> +         style="font-size:8px;line-height:1.25;font-family:sans-serif">P1()</tspan></text>
>    </g>
>  </svg>
> diff --git a/defer/rcufundamental.tex b/defer/rcufundamental.tex
> index 1e8fa3b..d8ca411 100644
> --- a/defer/rcufundamental.tex
> +++ b/defer/rcufundamental.tex
> @@ -229,21 +229,23 @@ Figure~\ref{fig:defer:RCU Reader and Later Grace Period}.
>  If any portion of a given critical section precedes the beginning of
>  a given grace period, then RCU guarantees that all of that critical
>  section will precede the end of that grace period.
> -In the figure, because \co{P0()}'s access to \co{y} precedes
> -\co{P1()}'s access to this same variable, it is guaranteed that
> -\co{P0()}'s access to \co{x} will precede \co{P1()}'s access.
> -In this case, if \co{y}'s final value is 2, then \co{x}'s
> -final value is guaranteed to also be 2.
> +In the figure, \co{P0()}'s access to \co{x} precedes \co{P1()}'s access
> +to this same variable, and thus also precedes the grace period generated
> +by \co{P1()}'s call to \co{synchronize_rcu()}.
> +It is therefore guaranteed that \co{P0()}'s access to \co{y} will precede
> +\co{P1()}'s access.
> +In this case, if \co{r1}'s final value is 0, then \co{r2}'s final value
> +is guaranteed to also be 0.
>  
>  \QuickQuiz{
> -	What other final values of \co{x} and \co{y} are possible in
> +	What other final values of \co{r1} and \co{r2} are possible in
>  	Figure~\ref{fig:defer:RCU Reader and Later Grace Period}?
>  }\QuickQuizAnswer{
> -	The \co{x == 2 && y == 2} possibility was called out in the text.
> -	Given that \co{y == 2} implies \co{x == 2}, we know that
> -	\co{x == 1 && y == 2} is forbidden.
> +	The \co{r1 == 0 && r2 == 0} possibility was called out in the text.
> +	Given that \co{r1 == 0} implies \co{r2 == 0}, we know that
> +	\co{r1 == 0 && r2 == 1} is forbidden.
>  	The following discussion will show that both
> -	\co{x == 1 && y == 1} and \co{x == 2 && y == 1} are possible.
> +	\co{r1 == 1 && r2 == 1} and \co{r1 == 1 && r2 == 0} are possible.
>  }\QuickQuizEnd
>  
>  \begin{figure}[tb]
> @@ -259,11 +261,23 @@ Figure~\ref{fig:defer:RCU Reader and Earlier Grace Period}.
>  If any portion of a given critical section follows the end of
>  a given grace period, then RCU guarantees that all of that critical
>  section will follow the beginning of that grace period.
> -In the figure, because \co{P0()}'s access to \co{y} follows
> -\co{P1()}'s access to this same variable, it is guaranteed that
> -\co{P0()}'s access to \co{x} will follow \co{P1()}'s access.
> -In this case, if \co{y}'s final value is 1, then \co{x}'s
> -final value is guaranteed to also be 1.
> +In the figure, \co{P0()}'s access to \co{y} follows \co{P1()}'s access
> +to this same variable, and thus follows the grace period generated by
> +\co{P1()}'s call to \co{synchronize_rcu()}.
> +It is therefore guaranteed that \co{P0()}'s access to \co{x} will follow
> +\co{P1()}'s access.  In this case, if \co{r2}'s final value is 1, then
> +\co{r1}'s final value is guaranteed to also be 1.
> +
> +\QuickQuiz{
> +	What would happen if the order of \co{P0()}'s two accesses was
> +	reversed in
> +	\cref{fig:defer:RCU Reader and Earlier Grace Period}?
> +}\QuickQuizAnswer{
> +	Absolutely nothing would change.
> +	The fact that \co{P0()}'s loads from \co{x} and \co{y} are
> +	in the same RCU read-side critical section suffices;
> +	their order is irrelevant.
> +}\QuickQuizEnd
>  
>  \begin{figure}[tb]
>  \centering
> @@ -276,12 +290,13 @@ Finally, as shown in
>  Figure~\ref{fig:defer:RCU Reader Within Grace Period},
>  an RCU read-side critical section can be completely overlapped by
>  an RCU grace period.
> -In this case, \co{x}'s final value is 1 and \co{y}'s final value is 2.
> +In this case, \co{r1}'s final value is 1 and \co{r2}'s final value is 0.
>  
> -However, it cannot be the case that \co{x}'s final value is 2 and \co{y}'s
> +However, it cannot be the case that \co{r1}'s final value is 0 and \co{r2}'s
>  final value is 1.
>  This would mean that an RCU read-side critical section had completely
> -overlapped a grace period, which is forbidden.
> +overlapped a grace period, which is forbidden (or at the very least
> +constitutes a bug in RCU).
>  RCU's wait-for-readers guarantee therefore has two parts:
>  (1)~If any part of a given RCU read-side critical section precedes
>  the beginning of a given grace period, then the entirety of that
> 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux