@@ -10,13 +10,9 @@ as its release notes.
1010CI boots and installs what it builds, so a release no longer rests on
1111somebody having booted it by hand.
1212
13- Two first-boot failures are known and open, both found by these checks and
14- neither introduced by them. ` kuma-home-subvol ` fails rather than declines on
15- roughly one first boot in thirty, leaving ` /var/home ` an ordinary directory
16- permanently; ` firewalld.service ` fails on a similar fraction. Both leave a
17- machine that boots and passes its health check, and ` kuma doctor ` reports
18- each of them. Neither is understood yet, and the checks that found them now
19- collect the machine's own account of the next occurrence.
13+ The first thing those checks found was a race that had been shipping for
14+ several releases, on a fraction of first boots, in two directions that
15+ looked like unrelated bugs.
2016
2117### Added
2218
@@ -90,22 +86,32 @@ collect the machine's own account of the next occurrence.
9086 status icon goes. Disabling ` StatusIcon ` alone does nothing, because
9187 ` ShowConnected ` depends on it and the plugin manager loads a dependency
9288 whether or not it was disabled.
93- - ` kuma-home-subvol ` says why it declined, and searches for the root
94- filesystem the way the rest of kuma does. Declining is the right answer
95- on every boot after the first, and it was a silent ` exit 0 ` , so a boot
96- where the converger should have acted and did not looked exactly like a
97- boot where it correctly did nothing: the unit succeeded either way and
98- the only difference was an inode nobody reads. It also asks ` findmnt `
99- for one line, because that command prints a line per mount when
100- anything is stacked at or under the path and a two-line answer never
101- equals ` btrfs ` . It is now ordered before every unit that could write
102- into ` /var/home ` rather than the three originally named, and an
103- ordering cycle is checked for, since systemd resolves one by deleting a
104- job and that job could be this one. ** The underlying failure is not
105- understood.** On roughly one first boot in thirty the unit fails rather
106- than declines, leaving ` /var/home ` an ordinary directory permanently,
107- which ` kuma doctor ` reports and nothing else did. The converger now
108- names the command it died on when that happens.
89+ - ` kuma-home-subvol ` and ` firewalld ` no longer race for ` /var/home ` , and
90+ they were one bug rather than the two they looked like. Making
91+ ` /var/home ` a subvolume means ` rmdir ` and then `btrfs subvolume
92+ create`, and between those two commands the directory does not exist.
93+ Twenty five units on a desktop image carry ` ProtectHome ` , which has
94+ systemd mount something over ` /var/home ` before the service starts, so
95+ the window had two losers. When the converger won, firewalld started
96+ into a missing directory and died with ` 226/NAMESPACE ` . When a
97+ sandboxed unit won, its mount pinned the directory, ` rmdir ` failed with
98+ ` EBUSY ` , the converger died, and ` /var/home ` stayed an ordinary
99+ directory for the life of the machine, which costs ` [snapshots] `
100+ everything and reports nothing beyond ` kuma doctor ` . The converger now
101+ runs in the slot after ` systemd-tmpfiles-setup ` and before
102+ ` sysinit.target ` , which closes the window against all of them at once,
103+ including the three that start too early for any ` multi-user.target `
104+ ordering to have reached. Ordering it against individual writers was
105+ the first attempt and the wrong shape: those units do not write to
106+ ` /var/home ` , systemd binds it for them.
107+ - ` kuma-home-subvol ` says why it declined, and asks ` findmnt ` for one
108+ line. Declining is the right answer on every boot after the first, and
109+ it was a silent ` exit 0 ` , so a boot where the converger should have
110+ acted and did not looked exactly like a boot where it correctly did
111+ nothing: the unit succeeded either way and the only difference was an
112+ inode nobody reads. The one-line answer matters because ` findmnt `
113+ prints a line per mount when anything is stacked at or under the path,
114+ and a two-line answer never equals ` btrfs ` .
109115- Two session services had two launch paths each. ` xdg-desktop-autostart `
110116 is active in the niri session, so Fedora's autostart entries for blueman
111117 and the mate polkit agent became units while ` niri-extras.kdl ` also
0 commit comments