]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
docs: Add a diagram for the internals of sysupdate
authorPhilip Withnall <pwithnall@gnome.org>
Tue, 27 Jan 2026 15:25:08 +0000 (15:25 +0000)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 30 Jan 2026 04:19:33 +0000 (13:19 +0900)
I had to sketch this out before I could get the internals of
systemd-sysupdate straight in my head, particularly around how an
`UpdateSet` points to one `Instance` from each of a set of `Resource`s,
and those `Instance`s are either all sources or all targets.

Hopefully this is useful to the next person to look at the code.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
docs/sysupdate-objects.svg [new file with mode: 0644]

diff --git a/docs/sysupdate-objects.svg b/docs/sysupdate-objects.svg
new file mode 100644 (file)
index 0000000..884cb65
--- /dev/null
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="316.28293mm"
+   height="306.23108mm"
+   viewBox="0 0 316.28293 306.23108"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
+   sodipodi:docname="drawing.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="0.74118967"
+     inkscape:cx="540.34752"
+     inkscape:cy="712.36826"
+     inkscape:window-width="1920"
+     inkscape:window-height="1043"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs1">
+    <marker
+       style="overflow:visible"
+       id="marker10"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path10" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Triangle"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Triangle-8"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135-9" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker10-2"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path10-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Triangle-8-6"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135-9-3" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker10-2-1"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="3"
+       markerHeight="3"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path10-6-7" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-6.3824526,-3.5266833)">
+    <rect
+       style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+       id="rect3"
+       width="131.36539"
+       height="128.86658"
+       x="6.7824521"
+       y="61.045975"
+       rx="5.0009999"
+       ry="5" />
+    <g
+       id="g2">
+      <g
+         id="g1">
+        <rect
+           style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+           id="rect1"
+           width="52.697277"
+           height="12.002567"
+           x="15.773956"
+           y="100.73308"
+           rx="6.8996673"
+           ry="4.9446111" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="64.392487"
+           y="110.51707"
+           id="text1"><tspan
+             sodipodi:role="line"
+             id="tspan1"
+             style="stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707">Instance</tspan></text>
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="113.87379"
+         y="110.50744"
+         id="text2"><tspan
+           sodipodi:role="line"
+           id="tspan2"
+           style="stroke-width:0.264583"
+           x="113.87379"
+           y="110.50744">pattern</tspan></text>
+    </g>
+    <g
+       id="g2-3"
+       transform="translate(0,17.732698)">
+      <g
+         id="g1-5">
+        <rect
+           style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+           id="rect1-6"
+           width="52.697277"
+           height="12.002567"
+           x="15.773956"
+           y="100.73308"
+           rx="6.8996673"
+           ry="4.9446111" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="64.392487"
+           y="110.51707"
+           id="text1-2"><tspan
+             sodipodi:role="line"
+             id="tspan1-9"
+             style="stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707">Instance</tspan></text>
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="113.87379"
+         y="110.50744"
+         id="text2-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-2"
+           style="stroke-width:0.264583"
+           x="113.87379"
+           y="110.50744">pattern</tspan></text>
+    </g>
+    <g
+       id="g3">
+      <g
+         id="g1-0"
+         transform="translate(0,35.465397)">
+        <rect
+           style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+           id="rect1-62"
+           width="52.697277"
+           height="12.002567"
+           x="15.773956"
+           y="100.73308"
+           rx="6.8996673"
+           ry="4.9446111" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="64.392487"
+           y="110.51707"
+           id="text1-6"><tspan
+             sodipodi:role="line"
+             id="tspan1-1"
+             style="stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707">Instance</tspan></text>
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="113.87379"
+         y="145.97284"
+         id="text2-8"><tspan
+           sodipodi:role="line"
+           id="tspan2-7"
+           style="stroke-width:0.264583"
+           x="113.87379"
+           y="145.97284">pattern</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="47.416828"
+       y="162.0649"
+       id="text3"><tspan
+         sodipodi:role="line"
+         id="tspan3"
+         style="stroke-width:0.264583"
+         x="47.416828"
+         y="162.0649">⋮</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="59.971153"
+       y="74.610878"
+       id="text4"><tspan
+         sodipodi:role="line"
+         id="tspan4"
+         style="stroke-width:0.264583"
+         x="59.971153"
+         y="74.610878">Resource</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="118.45662"
+       y="86.030052"
+       id="text5"><tspan
+         sodipodi:role="line"
+         id="tspan5"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="118.45662"
+         y="86.030052">Partially loaded from .transfer file</tspan></text>
+    <g
+       id="g5"
+       transform="translate(0,-16.876938)">
+      <rect
+         style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+         id="rect3-3"
+         width="131.36539"
+         height="128.86658"
+         x="190.90001"
+         y="77.922913"
+         rx="5.0009999"
+         ry="5" />
+      <g
+         id="g2-7"
+         transform="translate(184.11755,16.87694)">
+        <g
+           id="g1-59">
+          <rect
+             style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+             id="rect1-2"
+             width="52.697277"
+             height="12.002567"
+             x="15.773956"
+             y="100.73308"
+             rx="6.8996673"
+             ry="4.9446111" />
+          <text
+             xml:space="preserve"
+             style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707"
+             id="text1-28"><tspan
+               sodipodi:role="line"
+               id="tspan1-97"
+               style="stroke-width:0.264583"
+               x="64.392487"
+               y="110.51707">Instance</tspan></text>
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="113.87379"
+           y="110.50744"
+           id="text2-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-6"
+             style="stroke-width:0.264583"
+             x="113.87379"
+             y="110.50744">pattern</tspan></text>
+      </g>
+      <g
+         id="g2-3-1"
+         transform="translate(184.11755,34.609638)">
+        <g
+           id="g1-5-2">
+          <rect
+             style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+             id="rect1-6-9"
+             width="52.697277"
+             height="12.002567"
+             x="15.773956"
+             y="100.73308"
+             rx="6.8996673"
+             ry="4.9446111" />
+          <text
+             xml:space="preserve"
+             style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707"
+             id="text1-2-3"><tspan
+               sodipodi:role="line"
+               id="tspan1-9-1"
+               style="stroke-width:0.264583"
+               x="64.392487"
+               y="110.51707">Instance</tspan></text>
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="113.87379"
+           y="110.50744"
+           id="text2-1-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-2-4"
+             style="stroke-width:0.264583"
+             x="113.87379"
+             y="110.50744">pattern</tspan></text>
+      </g>
+      <g
+         id="g3-7"
+         transform="translate(184.11755,16.87694)">
+        <g
+           id="g1-0-8"
+           transform="translate(0,35.465397)">
+          <rect
+             style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+             id="rect1-62-4"
+             width="52.697277"
+             height="12.002567"
+             x="15.773956"
+             y="100.73308"
+             rx="6.8996673"
+             ry="4.9446111" />
+          <text
+             xml:space="preserve"
+             style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+             x="64.392487"
+             y="110.51707"
+             id="text1-6-5"><tspan
+               sodipodi:role="line"
+               id="tspan1-1-0"
+               style="stroke-width:0.264583"
+               x="64.392487"
+               y="110.51707">Instance</tspan></text>
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+           x="113.87379"
+           y="145.97284"
+           id="text2-8-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-7-6"
+             style="stroke-width:0.264583"
+             x="113.87379"
+             y="145.97284">pattern</tspan></text>
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="231.53438"
+         y="178.94183"
+         id="text3-1"><tspan
+           sodipodi:role="line"
+           id="tspan3-0"
+           style="stroke-width:0.264583"
+           x="231.53438"
+           y="178.94183">⋮</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="244.0887"
+         y="91.487816"
+         id="text4-6"><tspan
+           sodipodi:role="line"
+           id="tspan4-3"
+           style="stroke-width:0.264583"
+           x="244.0887"
+           y="91.487816">Resource</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="302.57416"
+         y="102.90699"
+         id="text5-2"><tspan
+           sodipodi:role="line"
+           id="tspan5-0"
+           style="font-size:6.35px;stroke-width:0.264583"
+           x="302.57416"
+           y="102.90699">Partially loaded from .transfer file</tspan></text>
+    </g>
+    <rect
+       style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
+       id="rect6"
+       width="111.65157"
+       height="42.399162"
+       x="6.8226547"
+       y="3.9668853"
+       rx="4.9974012"
+       ry="6.0599365" />
+    <text
+       xml:space="preserve"
+       style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="92.622543"
+       y="28.901594"
+       id="text5-8"><tspan
+         sodipodi:role="line"
+         id="tspan5-8"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="92.622543"
+         y="28.901594">Loaded from .transfer file</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="55.061909"
+       y="16.949841"
+       id="text6"><tspan
+         sodipodi:role="line"
+         id="tspan6"
+         style="stroke-width:0.264583"
+         x="55.061913"
+         y="16.949841">Transfer</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="39.600597"
+       y="41.837189"
+       id="text7"><tspan
+         sodipodi:role="line"
+         id="tspan7"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+         x="39.600597"
+         y="41.837189">source</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+       x="113.82346"
+       y="41.837189"
+       id="text8"><tspan
+         sodipodi:role="line"
+         id="tspan8"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+         x="113.82346"
+         y="41.837189">target</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle)"
+       d="m 27.129808,44.621394 -0.356973,18.91947"
+       id="path8"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
+       d="m 116.01562,40.337739 75.67789,23.203125"
+       id="path9"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g16"
+       transform="translate(-194.19231,210.25601)">
+      <rect
+         style="fill:#55d400;fill-opacity:1;stroke:#58b50d;stroke-width:1.12104;stroke-opacity:1"
+         id="rect10"
+         width="121.40612"
+         height="78.56958"
+         x="217.91293"
+         y="4.087204"
+         rx="5.8448224"
+         ry="8.4007883" />
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;stroke-width:0.264583"
+         x="222.03329"
+         y="28.901594"
+         id="text5-8-9"><tspan
+           sodipodi:role="line"
+           id="tspan5-8-2"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="28.901594">Set of Instances taken from across</tspan><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="36.839092"
+           id="tspan11">all Transfers, matching a certain</tspan><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="44.776592"
+           id="tspan12">version; either all source Instances</tspan><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="52.714092"
+           id="tspan13">or all target Instances.</tspan><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="60.651592"
+           id="tspan14" /><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="68.589096"
+           id="tspan15">For example: verity, root FS,</tspan><tspan
+           sodipodi:role="line"
+           style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
+           x="222.03329"
+           y="76.526596"
+           id="tspan16">and kernel boot image</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="277.00961"
+         y="16.949841"
+         id="text10"><tspan
+           sodipodi:role="line"
+           id="tspan10"
+           style="stroke-width:0.264583"
+           x="277.00961"
+           y="16.949841">UpdateSet</tspan></text>
+    </g>
+    <g
+       id="g19"
+       transform="matrix(0.26299485,0,0,0.26299485,127.72763,135.80969)">
+      <rect
+         style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+         id="rect3-9"
+         width="131.36539"
+         height="128.86658"
+         x="202.28317"
+         y="291.19574"
+         rx="5.0009999"
+         ry="5" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-8"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="330.88284"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-6-1"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="348.61554"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-62-9"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="366.34824"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="242.91754"
+         y="392.21466"
+         id="text3-7"><tspan
+           sodipodi:role="line"
+           id="tspan3-1"
+           style="stroke-width:0.264583"
+           x="242.91754"
+           y="392.21466">⋮</tspan></text>
+      <rect
+         style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+         id="rect3-3-6"
+         width="131.36539"
+         height="128.86658"
+         x="386.40073"
+         y="291.19574"
+         rx="5.0009999"
+         ry="5" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-2-6"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="330.88284"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-6-9-1"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="348.61554"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-62-4-8"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="366.34824"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="427.0351"
+         y="392.21466"
+         id="text3-1-3"><tspan
+           sodipodi:role="line"
+           id="tspan3-0-8"
+           style="stroke-width:0.264583"
+           x="427.0351"
+           y="392.21466">⋮</tspan></text>
+      <rect
+         style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
+         id="rect6-5"
+         width="111.65157"
+         height="42.399162"
+         x="202.32336"
+         y="234.11665"
+         rx="4.9974012"
+         ry="6.0599365" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle-8)"
+         d="m 222.63053,274.77115 -0.35698,18.91947"
+         id="path8-4"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10-2)"
+         d="m 311.51634,270.4875 75.67789,23.20312"
+         id="path9-4"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <g
+       id="g19-6"
+       transform="matrix(0.26299485,0,0,0.26299485,127.72763,199.17835)">
+      <rect
+         style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+         id="rect3-9-2"
+         width="131.36539"
+         height="128.86658"
+         x="202.28317"
+         y="291.19574"
+         rx="5.0009999"
+         ry="5" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-8-1"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="330.88284"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-6-1-7"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="348.61554"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-62-9-8"
+         width="52.697277"
+         height="12.002567"
+         x="211.27467"
+         y="366.34824"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="242.91754"
+         y="392.21466"
+         id="text3-7-5"><tspan
+           sodipodi:role="line"
+           id="tspan3-1-7"
+           style="stroke-width:0.264583"
+           x="242.91754"
+           y="392.21466">⋮</tspan></text>
+      <rect
+         style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
+         id="rect3-3-6-4"
+         width="131.36539"
+         height="128.86658"
+         x="386.40073"
+         y="291.19574"
+         rx="5.0009999"
+         ry="5" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-2-6-1"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="330.88284"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-6-9-1-8"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="348.61554"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <rect
+         style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
+         id="rect1-62-4-8-5"
+         width="52.697277"
+         height="12.002567"
+         x="395.39221"
+         y="366.34824"
+         rx="6.8996673"
+         ry="4.9446111" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
+         x="427.0351"
+         y="392.21466"
+         id="text3-1-3-9"><tspan
+           sodipodi:role="line"
+           id="tspan3-0-8-7"
+           style="stroke-width:0.264583"
+           x="427.0351"
+           y="392.21466">⋮</tspan></text>
+      <rect
+         style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
+         id="rect6-5-5"
+         width="111.65157"
+         height="42.399162"
+         x="202.32336"
+         y="234.11665"
+         rx="4.9974012"
+         ry="6.0599365" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle-8-6)"
+         d="m 222.63053,274.77115 -0.35698,18.91947"
+         id="path8-4-3"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10-2-1)"
+         d="m 311.51634,270.4875 75.67789,23.20312"
+         id="path9-4-8"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
+       d="m 142.02963,226.88607 c 29.98558,-7.85336 26.92872,-47.36399 27.13167,-52.37021 2.14182,-52.83172 30.34254,-50.6899 30.34254,-50.6899"
+       id="path19"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
+       d="m 142.03149,232.34519 c 29.27163,16.0637 88.04009,-2.54025 88.04009,-2.54025"
+       id="path20"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
+       d="m 142.07294,241.56334 c 55.80936,38.16624 88.27271,50.05886 88.27271,50.05886"
+       id="path21"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>