]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #16308 from bluca/root_image_options
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 3 Aug 2020 08:04:36 +0000 (10:04 +0200)
committerGitHub <noreply@github.com>
Mon, 3 Aug 2020 08:04:36 +0000 (10:04 +0200)
service: add new RootImageOptions feature

38 files changed:
NEWS
hwdb.d/60-keyboard.hwdb
hwdb.d/60-sensor.hwdb
man/rules/meson.build
man/systemd.network.xml
man/systemd.service.xml
src/basic/path-util.c
src/core/mount-setup.c
src/core/namespace.c
src/kernel-install/90-loaderentry.install
src/machine/machine-dbus.c
src/network/networkd-dhcp4.c
src/network/networkd-network.c
src/nspawn/nspawn-mount.c
src/nspawn/nspawn.c
src/partition/repart.c
src/shared/loop-util.c
src/shared/mount-util.h
src/timedate/timedatectl.c
src/timesync/timesyncd-manager.c
src/timesync/timesyncd-manager.h
src/udev/udevadm-info.c
test/README.testsuite
test/TEST-24-UNIT-TESTS/deny-list-ubuntu-ci-ppc64el [moved from test/TEST-24-UNIT-TESTS/blacklist-ubuntu-ci-ppc64el with 100% similarity]
test/TEST-25-IMPORT/deny-list-ubuntu-ci [moved from test/TEST-25-IMPORT/blacklist-ubuntu-ci with 100% similarity]
test/TEST-30-ONCLOCKCHANGE/deny-list-ubuntu-ci-i386 [moved from test/TEST-30-ONCLOCKCHANGE/blacklist-ubuntu-ci-i386 with 100% similarity]
test/TEST-36-NUMAPOLICY/deny-list-ubuntu-ci-s390x [moved from test/TEST-36-NUMAPOLICY/blacklist-ubuntu-ci-s390x with 100% similarity]
test/TEST-40-EXEC-COMMAND-EX/deny-list-ubuntu-ci-arm64 [moved from test/TEST-40-EXEC-COMMAND-EX/blacklist-ubuntu-ci-arm64 with 100% similarity]
units/initrd-cleanup.service
units/initrd-fs.target
units/initrd-parse-etc.service
units/initrd-root-device.target
units/initrd-root-fs.target
units/initrd-switch-root.service
units/initrd-switch-root.target
units/initrd-udevadm-cleanup-db.service
units/initrd.target
units/systemd-hibernate-resume@.service.in

diff --git a/NEWS b/NEWS
index c6a5acfa8cad57d092d8acdd985c59d66c6a46d4..95685ed7f71102d6bbe42f34349f008e174031d9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -114,7 +114,7 @@ CHANGES WITH 246:
 
         * tmpfs mounts automatically created by systemd (/tmp, /run, /dev/shm,
           and others) now have a size and inode limits applied (50% of RAM for
-          /tmp, 10% of RAM for /dev/shm, etc.)
+          /tmp and /dev/shm, 10% of RAM for other mounts, etc.)
 
         * nss-mymachines lost support for resolution of users and groups, and
           now only does resolution of hostnames. This functionality is now
@@ -185,9 +185,15 @@ CHANGES WITH 246:
           new boolean setting Assign=. If enabled an address from the prefix is
           automatically assigned to the interface.
 
-        * systemd-networkd's [Network] section gained a new setting
-          IPv6PDSubnetId= that allows explicit configuration of the preferred
-          subnet that networkd's Prefix Delegation logic assigns to interfaces.
+        * systemd-networkd gained a new section [DHCPv6PrefixDelegation] which
+          controls delegated prefixes assigned by DHCPv6 client. The section
+          has three settings: SubnetID=, Assign=, and Token=. The setting
+          SubnetID= allows explicit configuration of the preferred subnet that
+          systemd-networkd's Prefix Delegation logic assigns to interfaces. If
+          Assign= is enabled (which is the default) an address from any acquired
+          delegated prefix is automatically chosen and assigned to the
+          interface. The setting Token= specifies an optional address generation
+          mode for Assign=.
 
         * systemd-networkd's [Network] section gained a new setting
           IPv4AcceptLocal=. If enabled the interface accepts packets with local
@@ -260,11 +266,6 @@ CHANGES WITH 246:
           interface which is fully set up for host communication, simply by
           carefully picking an interface name to use.
 
-        * A new boolean option AssignAcquiredDelegatedPrefixAddress= has been
-          added to the [DHCPv6] section of .network files. If enabled (which is
-          the default) an address from any acquired delegated prefix is
-          automatically chosen and assigned to the interface.
-
         * systemd-networkd's [DHCPv6] section gained a new setting RouteMetric=
           which sets the route priority for routes specified by the DHCP server.
 
@@ -563,45 +564,45 @@ CHANGES WITH 246:
           distribution-specific defaults in .mkosi/ based on your preference.
 
         Contributions from: 24bisquitz, Adam Nielsen, Alan Perry, Alexander
-        Malafeev, Alin Popa, Alvin Šipraga, Amos Bird, Andreas Rammhold,
-        AndreRH, Andrew Doran, Anita Zhang, Ankit Jain, antznin, Arnaud
-        Ferraris, Arthur Moraes do Lago, Arusekk, Balaji Punnuru, Balint
-        Reczey, Bastien Nocera, bemarek, Benjamin Berg, Benjamin Dahlhoff,
-        Benjamin Robin, Chris Down, Chris Kerr, Christian Göttsche, Christian
-        Hesse, Christian Oder, Ciprian Hacman, Clinton Roy, codicodi, Corey
-        Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan, Daniel Fullmer,
-        Daniel Rusek, Dan Streetman, Dave Reisner, David Edmundson, David Wood,
-        Denis Pronin, Diego Escalante Urrelo, Dimitri John Ledkov,
-        dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel Garette, Eric
-        Anderson, Eric DeVolder, Evgeny Vereshchagin, ExtinctFire, fangxiuning,
-        Ferran Pallarès Roca, Filipe Brandenburger, Filippo Falezza, Finn,
-        Florian Klink, Florian Mayer, Franck Bui, Frantisek Sumsal, gaurav,
-        Georg Müller, Gergely Polonkai, Giedrius Statkevičius, Gigadoc2,
-        gogogogi, gzjsgdsb, Hans de Goede, Haochen Tong, ianhi, ignapk, Jakov
-        Smolic, James T. Lee, Jan Janssen, Jan Klötzke, Jan Palus, Jay Burger,
-        Jeremy Cline, Jérémy Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro,
-        Joerg Behrmann, Jörg Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny
-        Levinsen, Kevin Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus,
-        Lénaïc Huard, Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca
-        BRUNO, Lucas Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz
-        Stelmach, Maciej S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel
-        Holtmann, Marc Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt
-        Ranostay, Maxim Fomin, MaxVerevkin, Michael Biebl, Michael Chapman,
-        Michael Gubbels, Michael Marley, Michał Bartoszkiewicz, Michal Koutný,
-        Michal Sekletár, Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml,
-        Motiejus Jakštys, nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas
-        Hambüchen, Norbert Lange, Paul Cercueil, pelzvieh, Peter Hutterer,
-        Piero La Terza, Pieter Lexis, Piotr Drąg, Rafael Fontenelle, Richard
-        Petri, Ronan Pigott, Ross Lagerwall, Rubens Figueiredo, satmandu,
-        Sean-StarLabs, Sebastian Jennen, sterlinghughes, Surhud More, Susant
-        Sahani, szb512, Thomas Haller, Tobias Hunger, Tom, Tomáš Pospíšek,
-        Tomer Shechner, Tom Hughes, Topi Miettinen, Tudor Roman, Uwe
-        Kleine-König, Valery0xff, Vito Caputo, Vladimir Panteleev, Vladyslav
-        Tronko, Wen Yang, Yegor Vialov, Yigal Korman, Yi Gao, YmrDtnJu, Yuri
-        Chornoivan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Zhu Li, Дамјан
-        Георгиевски, наб
-
-        – Warsaw, 2020-07-24
+        Malafeev, Amitanand.Chikorde, Alin Popa, Alvin Šipraga, Amos Bird,
+        Andreas Rammhold, AndreRH, Andrew Doran, Anita Zhang, Ankit Jain,
+        antznin, Arnaud Ferraris, Arthur Moraes do Lago, Arusekk, Balaji
+        Punnuru, Balint Reczey, Bastien Nocera, bemarek, Benjamin Berg,
+        Benjamin Dahlhoff, Benjamin Robin, Chris Down, Chris Kerr, Christian
+        Göttsche, Christian Hesse, Christian Oder, Ciprian Hacman, Clinton Roy,
+        codicodi, Corey Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan,
+        Daniel Fullmer, Daniel Rusek, Dan Streetman, Dave Reisner, David
+        Edmundson, David Wood, Denis Pronin, Diego Escalante Urrelo, Dimitri
+        John Ledkov, dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel
+        Garette, Eric Anderson, Eric DeVolder, Evgeny Vereshchagin,
+        ExtinctFire, fangxiuning, Ferran Pallarès Roca, Filipe Brandenburger,
+        Filippo Falezza, Finn, Florian Klink, Florian Mayer, Franck Bui,
+        Frantisek Sumsal, gaurav, Georg Müller, Gergely Polonkai, Giedrius
+        Statkevičius, Gigadoc2, gogogogi, Gaurav Singh, gzjsgdsb, Hans de
+        Goede, Haochen Tong, ianhi, ignapk, Jakov Smolic, James T. Lee, Jan
+        Janssen, Jan Klötzke, Jan Palus, Jay Burger, Jeremy Cline, Jérémy
+        Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro, Joerg Behrmann, Jörg
+        Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny Levinsen, Kevin
+        Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus, Lénaïc Huard,
+        Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca BRUNO, Lucas
+        Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz Stelmach, Maciej
+        S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel Holtmann, Marc
+        Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt Ranostay, Maxim
+        Fomin, MaxVerevkin, Michael Biebl, Michael Chapman, Michael Gubbels,
+        Michael Marley, Michał Bartoszkiewicz, Michal Koutný, Michal Sekletár,
+        Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml, Motiejus Jakštys,
+        nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas Hambüchen, Norbert
+        Lange, Paul Cercueil, pelzvieh, Peter Hutterer, Piero La Terza, Pieter
+        Lexis, Piotr Drąg, Rafael Fontenelle, Richard Petri, Ronan Pigott, Ross
+        Lagerwall, Rubens Figueiredo, satmandu, Sean-StarLabs, Sebastian
+        Jennen, sterlinghughes, Surhud More, Susant Sahani, szb512, Thomas
+        Haller, Tobias Hunger, Tom, Tomáš Pospíšek, Tomer Shechner, Tom Hughes,
+        Topi Miettinen, Tudor Roman, Uwe Kleine-König, Valery0xff, Vito Caputo,
+        Vladimir Panteleev, Vladyslav Tronko, Wen Yang, Yegor Vialov, Yigal
+        Korman, Yi Gao, YmrDtnJu, Yuri Chornoivan, Yu Watanabe, Zbigniew
+        Jędrzejewski-Szmek, Zhu Li, Дамјан Георгиевски, наб
+
+        – Warsaw, 2020-07-30
 
 CHANGES WITH 245:
 
index 7b08e2643e9f54cc5d5b3e1aac93a66b37b6151f..84d997ebdc27c468286134717c38b063064bfa24 100644 (file)
@@ -598,8 +598,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHDX9494NR:pvr*
 
 # HP EliteBook 725 G2
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPLicrice:pvr*
-# HP EliteBook 840 G1
-evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPEliteBook840G1:pvr*
+# HP EliteBook
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPEliteBook*:pvr*
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook*:pvr*
 # HP ProBook 440 G2
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:pvr*
 # several HP ProBooks 4xx
@@ -608,8 +609,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHP*ProBook*4*:pvr*
 # HP ZBook
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPZBook*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPZBook*:pvr*
-# Elitebook x360 1040 G6
-evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pn*EliteBook*x3601040G6:pvr*
  KEYBOARD_KEY_81=f20                                    # Fn+F8; Microphone mute button, should be micmute
 
 # HP ZBook 15 G2
@@ -628,7 +627,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnHPZBookStudioG4:pvr*
 
 # HP Folio 1040g2
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPEliteBookFolio1040G2:pvr*
- KEYBOARD_KEY_81=f20                                    # Fn+F8; Microphone mute button, should be micmute
  KEYBOARD_KEY_d8=!f23                                   # touchpad off
  KEYBOARD_KEY_d9=!f22                                   # touchpad on
 
index 576b314d3cd82e761a11879492723ecc98c0a35e..092d356b64195972be065d7925695e1918410c42 100644 (file)
@@ -680,6 +680,10 @@ sensor:modalias:acpi:KIOX000A*:dmi:*:svnTREKSTOR:pnPrimetabT13B:*
 sensor:modalias:acpi:BOSC0200*:dmi:*:svnTrekStor*:pnSurfTabtwin11.6:*
  ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
 
+# alternative version of Trekstor's SurfTab Twin 11.6
+sensor:modalias:acpi:BOSC0200*:dmi:*:bvrTP15-VT5.2.1.3:*:svnTrekStor*:pnSurfTabtwin11.6:*
+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
+
 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPrimebookC11B:*
 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPRIMEBOOKC11B:*
  ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
index e6083004ea1458108c5a716721ff597c1085b0d9..3fb454faa907d15b87af52095b79522f27709aa1 100644 (file)
@@ -639,6 +639,7 @@ manpages = [
  ['sd_journal_get_data',
   '3',
   ['SD_JOURNAL_FOREACH_DATA',
+   'sd_journal_enumerate_available_data',
    'sd_journal_enumerate_data',
    'sd_journal_get_data_threshold',
    'sd_journal_restart_data',
@@ -699,6 +700,7 @@ manpages = [
  ['sd_journal_query_unique',
   '3',
   ['SD_JOURNAL_FOREACH_UNIQUE',
+   'sd_journal_enumerate_available_unique',
    'sd_journal_enumerate_unique',
    'sd_journal_restart_unique'],
   ''],
@@ -850,7 +852,7 @@ manpages = [
  ['systemd-initctl.service',
   '8',
   ['systemd-initctl', 'systemd-initctl.socket'],
-  ''],
+  'HAVE_SYSV_COMPAT'],
  ['systemd-journal-gatewayd.service',
   '8',
   ['systemd-journal-gatewayd', 'systemd-journal-gatewayd.socket'],
index 77986192d4bce846f5bc222f45683e00eeb3c13f..e75d612c0535c9b0db13cab2da943e691177500d 100644 (file)
@@ -3533,10 +3533,7 @@ DHCP=ipv6</programlisting>
 Name=enp2s0
 
 [Network]
-IPv6PrefixDelegation=dhcpv6
-
-[DHCPv6]
-AssignAcquiredDelegatedPrefixAddress=yes</programlisting>
+IPv6PrefixDelegation=dhcpv6</programlisting>
 
       <para>This will enable IPv6 PD on the interface enp1s0 as an upstream interface where the
       DHCPv6 client is running and enp2s0 as a downstream interface where the prefix is delegated to.</para>
index 4e281ec6d4f80d43151bdce6d91c9d04160b8852..cc13bff7550f6ca7fb456eaaadb29049c00aa6f4 100644 (file)
           <programlisting>SuccessExitStatus=TEMPFAIL 250 SIGUSR1</programlisting>
 
           <para>Exit status 75 (<constant>TEMPFAIL</constant>), 250, and the termination signal
-          <constant>SIGKILL</constant> are considered clean service terminations.</para>
+          <constant>SIGUSR1</constant> are considered clean service terminations.</para>
         </example>
 
         <para>Note: <command>systemd-analyze exit-status</command> may be used to list exit statuses and
index 986dfe94a4b719b16e13c50b94bf6d041887c42d..c4e022b3a1187806635f771c7825322b42e4913c 100644 (file)
@@ -640,10 +640,8 @@ int find_binary(const char *name, char **ret) {
                 if (access(j, X_OK) >= 0) {
                         /* Found it! */
 
-                        if (ret) {
-                                *ret = path_simplify(j, false);
-                                j = NULL;
-                        }
+                        if (ret)
+                                *ret = path_simplify(TAKE_PTR(j), false);
 
                         return 0;
                 }
index 028c4de2802ba827ddb01f1651a9a9c8d726f0d9..feb88f3e6e5f5f1c865a2ecad5d613905ed65017 100644 (file)
@@ -61,51 +61,51 @@ typedef struct MountPoint {
 #endif
 
 static const MountPoint mount_table[] = {
-        { "sysfs",       "/sys",                      "sysfs",      NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "sysfs",       "/sys",                      "sysfs",      NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,          MNT_FATAL|MNT_IN_CONTAINER },
-        { "proc",        "/proc",                     "proc",       NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "proc",        "/proc",                     "proc",       NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,          MNT_FATAL|MNT_IN_CONTAINER },
-        { "devtmpfs",    "/dev",                      "devtmpfs",   "mode=755" TMPFS_LIMITS_DEV,                    MS_NOSUID|MS_NOEXEC|MS_STRICTATIME,
+        { "devtmpfs",    "/dev",                      "devtmpfs",   "mode=755" TMPFS_LIMITS_DEV,               MS_NOSUID|MS_NOEXEC|MS_STRICTATIME,
           NULL,          MNT_FATAL|MNT_IN_CONTAINER },
-        { "securityfs",  "/sys/kernel/security",      "securityfs", NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "securityfs",  "/sys/kernel/security",      "securityfs", NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,          MNT_NONE                   },
 #if ENABLE_SMACK
-        { "smackfs",     "/sys/fs/smackfs",           "smackfs",    "smackfsdef=*",                                 MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "smackfs",     "/sys/fs/smackfs",           "smackfs",    "smackfsdef=*",                            MS_NOSUID|MS_NOEXEC|MS_NODEV,
           mac_smack_use, MNT_FATAL                  },
-        { "tmpfs",       "/dev/shm",                  "tmpfs",      "mode=1777,smackfsroot=*" TMPFS_LIMITS_DEV_SHM, MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+        { "tmpfs",       "/dev/shm",                  "tmpfs",      "mode=1777,smackfsroot=*",                 MS_NOSUID|MS_NODEV|MS_STRICTATIME,
           mac_smack_use, MNT_FATAL                  },
 #endif
-        { "tmpfs",       "/dev/shm",                  "tmpfs",      "mode=1777" TMPFS_LIMITS_DEV_SHM,               MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+        { "tmpfs",       "/dev/shm",                  "tmpfs",      "mode=1777",                               MS_NOSUID|MS_NODEV|MS_STRICTATIME,
           NULL,          MNT_FATAL|MNT_IN_CONTAINER },
-        { "devpts",      "/dev/pts",                  "devpts",     "mode=620,gid=" STRINGIFY(TTY_GID),             MS_NOSUID|MS_NOEXEC,
+        { "devpts",      "/dev/pts",                  "devpts",     "mode=620,gid=" STRINGIFY(TTY_GID),        MS_NOSUID|MS_NOEXEC,
           NULL,          MNT_IN_CONTAINER           },
 #if ENABLE_SMACK
-        { "tmpfs",       "/run",                      "tmpfs",      "mode=755,smackfsroot=*" TMPFS_LIMITS_RUN,      MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+        { "tmpfs",       "/run",                      "tmpfs",      "mode=755,smackfsroot=*" TMPFS_LIMITS_RUN, MS_NOSUID|MS_NODEV|MS_STRICTATIME,
           mac_smack_use, MNT_FATAL                  },
 #endif
-        { "tmpfs",       "/run",                      "tmpfs",      "mode=755" TMPFS_LIMITS_RUN,                    MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+        { "tmpfs",       "/run",                      "tmpfs",      "mode=755" TMPFS_LIMITS_RUN,               MS_NOSUID|MS_NODEV|MS_STRICTATIME,
           NULL,          MNT_FATAL|MNT_IN_CONTAINER },
-        { "cgroup2",     "/sys/fs/cgroup",            "cgroup2",    "nsdelegate",                                   MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup2",     "/sys/fs/cgroup",            "cgroup2",    "nsdelegate",                              MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_unified_wanted, MNT_IN_CONTAINER|MNT_CHECK_WRITABLE },
-        { "cgroup2",     "/sys/fs/cgroup",            "cgroup2",    NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup2",     "/sys/fs/cgroup",            "cgroup2",    NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_unified_wanted, MNT_IN_CONTAINER|MNT_CHECK_WRITABLE },
-        { "tmpfs",       "/sys/fs/cgroup",            "tmpfs",      "mode=755" TMPFS_LIMITS_SYS_FS_CGROUP,          MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
+        { "tmpfs",       "/sys/fs/cgroup",            "tmpfs",      "mode=755" TMPFS_LIMITS_SYS_FS_CGROUP,     MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
           cg_is_legacy_wanted, MNT_FATAL|MNT_IN_CONTAINER },
-        { "cgroup2",     "/sys/fs/cgroup/unified",    "cgroup2",    "nsdelegate",                                   MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup2",     "/sys/fs/cgroup/unified",    "cgroup2",    "nsdelegate",                              MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_hybrid_wanted, MNT_IN_CONTAINER|MNT_CHECK_WRITABLE },
-        { "cgroup2",     "/sys/fs/cgroup/unified",    "cgroup2",    NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup2",     "/sys/fs/cgroup/unified",    "cgroup2",    NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_hybrid_wanted, MNT_IN_CONTAINER|MNT_CHECK_WRITABLE },
-        { "cgroup",      "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd,xattr",                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup",      "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd,xattr",                 MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_legacy_wanted, MNT_IN_CONTAINER     },
-        { "cgroup",      "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd",                            MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "cgroup",      "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd",                       MS_NOSUID|MS_NOEXEC|MS_NODEV,
           cg_is_legacy_wanted, MNT_FATAL|MNT_IN_CONTAINER },
-        { "pstore",      "/sys/fs/pstore",            "pstore",     NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "pstore",      "/sys/fs/pstore",            "pstore",     NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,          MNT_NONE                   },
 #if ENABLE_EFI
-        { "efivarfs",    "/sys/firmware/efi/efivars", "efivarfs",   NULL,                                           MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "efivarfs",    "/sys/firmware/efi/efivars", "efivarfs",   NULL,                                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           is_efi_boot,   MNT_NONE                   },
 #endif
-        { "bpf",         "/sys/fs/bpf",               "bpf",        "mode=700",                                     MS_NOSUID|MS_NOEXEC|MS_NODEV,
+        { "bpf",         "/sys/fs/bpf",               "bpf",        "mode=700",                                MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,          MNT_NONE,                  },
 };
 
index 8b5efa825219fd3c315dabcbad0c74dff27d0803..16d40fedc0c0e5fa54f183984799db93e066d851 100644 (file)
@@ -326,23 +326,21 @@ static int append_bind_mounts(MountEntry **p, const BindMount *binds, size_t n)
 }
 
 static int append_tmpfs_mounts(MountEntry **p, const TemporaryFileSystem *tmpfs, size_t n) {
-        size_t i;
-        int r;
-
         assert(p);
 
-        for (i = 0; i < n; i++) {
+        for (size_t i = 0; i < n; i++) {
                 const TemporaryFileSystem *t = tmpfs + i;
                 _cleanup_free_ char *o = NULL, *str = NULL;
                 unsigned long flags;
                 bool ro = false;
+                int r;
 
                 if (!path_is_absolute(t->path))
                         return log_debug_errno(SYNTHETIC_ERRNO(EINVAL),
                                                "Path is not absolute: %s",
                                                t->path);
 
-                str = strjoin("mode=0755" TMPFS_LIMITS_TEMPORARY_FS ",", t->options);
+                str = strjoin("mode=0755" NESTED_TMPFS_LIMITS ",", t->options);
                 if (!str)
                         return -ENOMEM;
 
index 6c0e27ba3a6ef991600bf36e65b27916c1142589..97fc3bcc3525de24ebaac9b6cecbe515dea5347f 100644 (file)
@@ -18,8 +18,9 @@ fi
 
 MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID
 
-ENTRY_DIR="/$MACHINE_ID/$KERNEL_VERSION"
-BOOT_ROOT=${ENTRY_DIR_ABS%$ENTRY_DIR}
+BOOT_ROOT=${ENTRY_DIR_ABS%/$MACHINE_ID/$KERNEL_VERSION}
+BOOT_MNT=$(stat -c %m $BOOT_ROOT)
+ENTRY_DIR=/${ENTRY_DIR_ABS#$BOOT_MNT}
 
 if [[ $COMMAND == remove ]]; then
     rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"
index 73ef5949bf366f6e5ad4ed10120ac4afb251f809..a3c97d8d8f8328ab5a3fe81d879e1f683851d508 100644 (file)
@@ -585,7 +585,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
         r = sd_bus_message_read(message, "ss", &user, &path);
         if (r < 0)
                 return r;
-        user = empty_to_null(user);
+        user = isempty(user) ? "root" : user;
         r = sd_bus_message_read_strv(message, &args_wire);
         if (r < 0)
                 return r;
@@ -604,7 +604,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
                 r = asprintf(&args[2],
                              "shell=$(getent passwd %s 2>/dev/null | { IFS=: read _ _ _ _ _ _ x; echo \"$x\"; })\n"\
                              "exec \"${shell:-/bin/sh}\" -l", /* -l is means --login */
-                             isempty(user) ? "root" : user);
+                             user);
                 if (r < 0) {
                         args[2] = NULL;
                         return -ENOMEM;
@@ -628,11 +628,18 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
         if (!strv_env_is_valid(env))
                 return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment assignments");
 
+        const char *details[] = {
+                "machine", m->name,
+                "user", user,
+                "program", path,
+                NULL
+        };
+
         r = bus_verify_polkit_async(
                         message,
                         CAP_SYS_ADMIN,
                         m->class == MACHINE_HOST ? "org.freedesktop.machine1.host-shell" : "org.freedesktop.machine1.shell",
-                        NULL,
+                        details,
                         false,
                         UID_INVALID,
                         &m->manager->polkit_registry,
@@ -677,7 +684,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
         if (r < 0)
                 return r;
 
-        description = strjoina("Shell for User ", isempty(user) ? "root" : user);
+        description = strjoina("Shell for User ", user);
         r = sd_bus_message_append(tm,
                                   "(sv)(sv)(sv)(sv)(sv)(sv)(sv)(sv)(sv)(sv)(sv)(sv)",
                                   "Description", "s", description,
@@ -695,7 +702,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
         if (r < 0)
                 return r;
 
-        r = sd_bus_message_append(tm, "(sv)", "User", "s", isempty(user) ? "root" : user);
+        r = sd_bus_message_append(tm, "(sv)", "User", "s", user);
         if (r < 0)
                 return r;
 
index 7576aaf62cf37f787e5348094b6c97fdca0e0ff0..722e0d213bb045cb7dcf1b0566e9ada283885c99 100644 (file)
@@ -548,7 +548,7 @@ static int dhcp4_remove_all(Link *link) {
 }
 
 static int dhcp_lease_lost(Link *link) {
-        int k, r;
+        int k, r = 0;
 
         assert(link);
         assert(link->dhcp_lease);
index 694d9b0c3a04217ea2835cc39edb099523eb78a9..d34155b19f4c3e1e35652c66d1d7717f8d4bb969 100644 (file)
@@ -501,6 +501,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                         "DHCP\0" /* compat */
                         "DHCPv4\0"
                         "DHCPv6\0"
+                        "DHCPv6PrefixDelegation\0"
                         "DHCPServer\0"
                         "IPv6AcceptRA\0"
                         "IPv6NDPProxyAddress\0"
index a48c7f62da2f54109967336e8ff04e8fbfd4a8f4..5599c6a1b3b307c676de3d705f362bef944cda74 100644 (file)
@@ -549,7 +549,7 @@ int mount_all(const char *dest,
                   MOUNT_IN_USERNS|MOUNT_MKDIR },
 
                 /* Then we list outer child mounts (i.e. mounts applied *before* entering user namespacing) */
-                { "tmpfs",                  "/tmp",                         "tmpfs", "mode=1777" TMPFS_LIMITS_TMP,     MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+                { "tmpfs",                  "/tmp",                         "tmpfs", "mode=1777" NESTED_TMPFS_LIMITS,  MS_NOSUID|MS_NODEV|MS_STRICTATIME,
                   MOUNT_FATAL|MOUNT_APPLY_TMPFS_TMP|MOUNT_MKDIR },
                 { "tmpfs",                  "/sys",                         "tmpfs", "mode=555" TMPFS_LIMITS_SYS,      MS_NOSUID|MS_NOEXEC|MS_NODEV,
                   MOUNT_FATAL|MOUNT_APPLY_APIVFS_NETNS|MOUNT_MKDIR },
@@ -559,7 +559,7 @@ int mount_all(const char *dest,
                   MOUNT_FATAL|MOUNT_MKDIR },                          /* skipped if above was mounted */
                 { "tmpfs",                  "/dev",                         "tmpfs", "mode=755" TMPFS_LIMITS_DEV,      MS_NOSUID|MS_STRICTATIME,
                   MOUNT_FATAL|MOUNT_MKDIR },
-                { "tmpfs",                  "/dev/shm",                     "tmpfs", "mode=1777" TMPFS_LIMITS_DEV_SHM, MS_NOSUID|MS_NODEV|MS_STRICTATIME,
+                { "tmpfs",                  "/dev/shm",                     "tmpfs", "mode=1777" NESTED_TMPFS_LIMITS,  MS_NOSUID|MS_NODEV|MS_STRICTATIME,
                   MOUNT_FATAL|MOUNT_MKDIR },
                 { "tmpfs",                  "/run",                         "tmpfs", "mode=755" TMPFS_LIMITS_RUN,      MS_NOSUID|MS_NODEV|MS_STRICTATIME,
                   MOUNT_FATAL|MOUNT_MKDIR },
index a1613f076d9f64e766375275d60c1ae54d7b5cc4..6d6fe87ed14654427c9937f27fa6d0bbf50b956b 100644 (file)
@@ -3259,7 +3259,7 @@ static int inner_child(
                  * binary. */
                 dollar_path = strv_env_get(env_use, "PATH");
                 if (dollar_path) {
-                        if (putenv((char*) dollar_path) != 0)
+                        if (setenv("PATH", dollar_path, 1) < 0)
                                 return log_error_errno(errno, "Failed to update $PATH: %m");
                 }
 
index 69df7515635bc6b0e23fdd25a8c3ea32303f62ab..2e5f5d13455d63ad5980863e7c4d2537a57a1cd6 100644 (file)
@@ -952,7 +952,7 @@ static int config_parse_weight(
         }
 
         if (v > 1000U*1000U) {
-                log_syntax(unit, LOG_WARNING, filename, line, r,
+                log_syntax(unit, LOG_WARNING, filename, line, 0,
                            "Weight needs to be in range 0…10000000, ignoring: %" PRIu32, v);
                 return 0;
         }
@@ -981,7 +981,7 @@ static int config_parse_size4096(
 
         r = parse_size(rvalue, 1024, &parsed);
         if (r < 0)
-                return log_syntax(unit, LOG_WARNING, filename, line, r,
+                return log_syntax(unit, LOG_ERR, filename, line, r,
                                   "Failed to parse size value: %s", rvalue);
 
         if (ltype > 0)
index 7aee239e33a81c82b2e314407dc62758aa50be45..4a593b05f3c90073b6fd87e8ad60d66d040b7562 100644 (file)
@@ -191,6 +191,10 @@ LoopDevice* loop_device_unref(LoopDevice *d) {
                 return NULL;
 
         if (d->fd >= 0) {
+                /* Implicitly sync the device, since otherwise in-flight blocks might not get written */
+                if (fsync(d->fd) < 0)
+                        log_debug_errno(errno, "Failed to sync loop block device, ignoring: %m");
+
                 if (d->nr >= 0 && !d->relinquished) {
                         if (ioctl(d->fd, LOOP_CLR_FD) < 0)
                                 log_debug_errno(errno, "Failed to clear loop device: %m");
@@ -216,7 +220,7 @@ LoopDevice* loop_device_unref(LoopDevice *d) {
                                         log_warning_errno(errno, "Failed to remove device %s: %m", strna(d->node));
                                         break;
                                 }
-                                usleep(50 * USEC_PER_MSEC);
+                                (void) usleep(50 * USEC_PER_MSEC);
                         }
         }
 
index 7bad3743e0de5ec963c4f443f8839efcb1ca26ab..8fb597e7c039de33ba61a04b5ee5692d61c91153 100644 (file)
  * PID1 because 16MB of free space is required. */
 #define TMPFS_LIMITS_RUN             ",size=20%,nr_inodes=800k"
 
-/* The limit used for various tmpfs mounts, but not /tmp itself.
+/* The limit used for various nested tmpfs mounts, in paricular for guests started by systemd-nspawn.
  * 10% of RAM (using 16GB of RAM as a baseline) translates to 400k inodes (assuming 4k each) and 25%
  * translates to 1M inodes.
- * /tmp is configured through a .mount unit file. */
-#define TMPFS_LIMITS_TMP             ",size=10%,nr_inodes=400k"
-#define TMPFS_LIMITS_DEV_SHM         TMPFS_LIMITS_TMP
-#define TMPFS_LIMITS_TEMPORARY_FS    TMPFS_LIMITS_TMP
+ * (On the host, /tmp is configured through a .mount unit file.) */
+#define NESTED_TMPFS_LIMITS          ",size=10%,nr_inodes=400k"
 
 /* More space for volatile root and /var */
 #define TMPFS_LIMITS_VAR             ",size=25%,nr_inodes=1m"
index 26d3e203530ae4e2e0476ddf0b90c8374371566c..7afc37d9e338c81a87e5c817f095f7374ba7542f 100644 (file)
@@ -409,7 +409,7 @@ static int print_ntp_status_info(NTPStatusInfo *i) {
         if (r < 0)
                 return table_log_add_error(r);
 
-        r = table_add_cell_stringf(table, NULL, "%s (%s)", i->server_address, i->server_name);
+        r = table_add_cell_stringf(table, NULL, "%s (%s)", strna(i->server_address), strna(i->server_name));
         if (r < 0)
                 return table_log_add_error(r);
 
index dadf213a809ff741fe18eb05031c09d55be3ed83..5570408fa14f5127a37974f7c1604d84af2df16f 100644 (file)
@@ -137,11 +137,10 @@ static int manager_send_request(Manager *m) {
         }
 
         /* re-arm timer with increasing timeout, in case the packets never arrive back */
-        if (m->retry_interval > 0) {
-                if (m->retry_interval < m->poll_interval_max_usec)
-                        m->retry_interval *= 2;
-        } else
-                m->retry_interval = m->poll_interval_min_usec;
+        if (m->retry_interval == 0)
+                m->retry_interval = NTP_RETRY_INTERVAL_MIN_USEC;
+        else
+                m->retry_interval = MIN(m->retry_interval * 4/3, NTP_RETRY_INTERVAL_MAX_USEC);
 
         r = manager_arm_timer(m, m->retry_interval);
         if (r < 0)
index 97c4e2ff34d90f65b0b2e1392311151bdd491cea..d74521c9cf59a64abeca0031bb12c20979eed71b 100644 (file)
@@ -24,6 +24,9 @@ typedef struct Manager Manager;
 #define NTP_POLL_INTERVAL_MIN_USEC      (32 * USEC_PER_SEC)
 #define NTP_POLL_INTERVAL_MAX_USEC      (2048 * USEC_PER_SEC)
 
+#define NTP_RETRY_INTERVAL_MIN_USEC     (15 * USEC_PER_SEC)
+#define NTP_RETRY_INTERVAL_MAX_USEC     (6 * 60 * USEC_PER_SEC) /* 6 minutes */
+
 struct Manager {
         sd_bus *bus;
         sd_event *event;
index 7eec84abd5d8e2485f36a8e0a7e7ccc157af8cf1..ae6d8caf54e02c39c4b5f4245b5523cc9713eb97 100644 (file)
@@ -100,7 +100,7 @@ static int print_all_attributes(sd_device *device, bool is_parent) {
 
                 /* skip nonprintable attributes */
                 len = strlen(value);
-                while (len > 0 && isprint(value[len-1]))
+                while (len > 0 && isprint((unsigned char) value[len-1]))
                         len--;
                 if (len > 0)
                         continue;
index 7204fdb00b1a4d58018284b609b49a240c0324e4..34c7ab3f7de6082c1f04ac37ddfbea541925ffd5 100644 (file)
@@ -104,19 +104,19 @@ Ubuntu CI
 New PR submitted to the project are run through regression tests, and one set
 of those is the 'autopkgtest' runs for several different architectures, called
 'Ubuntu CI'.  Part of that testing is to run all these tests.  Sometimes these
-tests are temporarily blacklisted from running in the 'autopkgtest' tests while
+tests are temporarily deny-listed from running in the 'autopkgtest' tests while
 debugging a flaky test; that is done by creating a file in the test directory
-named 'blacklist-ubuntu-ci', for example to prevent the TEST-01-BASIC test from
+named 'deny-list-ubuntu-ci', for example to prevent the TEST-01-BASIC test from
 running in the 'autopkgtest' runs, create the file
-'TEST-01-BASIC/blacklist-ubuntu-ci'.
+'TEST-01-BASIC/deny-list-ubuntu-ci'.
 
-The tests may be disabled only for specific archs, by creating a blacklist file
+The tests may be disabled only for specific archs, by creating a deny-list file
 with the arch name at the end, e.g.
-'TEST-01-BASIC/blacklist-ubuntu-ci-arm64' to disable the TEST-01-BASIC test
+'TEST-01-BASIC/deny-list-ubuntu-ci-arm64' to disable the TEST-01-BASIC test
 only on test runs for the 'arm64' architecture.
 
 Note the arch naming is not from 'uname -m', it is Debian arch names:
 https://wiki.debian.org/ArchitectureSpecificsMemo
 
-For PRs that fix a currently blacklisted test, the PR should include removal
-of the blacklist file.
+For PRs that fix a currently deny-listed test, the PR should include removal
+of the deny-list file.
index b04607671503fcf043c11ba32c9daffe971de330..1120ef3effeaaffb328ca3010eaab5e3728e6d5e 100644 (file)
@@ -10,7 +10,7 @@
 [Unit]
 Description=Cleaning Up and Shutting Down Daemons
 DefaultDependencies=no
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
 After=initrd-root-fs.target initrd-fs.target initrd.target
index 33822bde66b9ec3e761046f4512a5c589e6a473c..49577c364f3a8f30c270c68aee3170d35152d5bd 100644 (file)
@@ -12,7 +12,7 @@ Description=Initrd File Systems
 Documentation=man:systemd.special(7)
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 After=initrd-parse-etc.service
 DefaultDependencies=no
 Conflicts=shutdown.target
index b0e38368cfbd3782d861675c8b97a707c68c3850..94a9719b502c3500d0191d5dae413669508c6cd4 100644 (file)
@@ -14,7 +14,7 @@ Requires=initrd-root-fs.target
 After=initrd-root-fs.target
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 
 [Service]
 Type=oneshot
index 580c666b2310fcde64ac3a9d5c234e1f978c6fb0..bcb69093203d0e6013fcb444f969d98b6aba0dfc 100644 (file)
@@ -10,7 +10,7 @@
 [Unit]
 Description=Initrd Root Device
 Documentation=man:systemd.special(7)
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
 DefaultDependencies=no
index 9b955f618a5fb080c73e2c989958988c97a6d8e1..f5a8855b6c6a848e4be3fc3fb97d7b5ac97d54c1 100644 (file)
@@ -10,7 +10,7 @@
 [Unit]
 Description=Initrd Root File System
 Documentation=man:systemd.special(7)
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
 DefaultDependencies=no
index c1a37928880535435318a74e982ec76f8e385bd6..682b8af875b805806bd5696b34e1fedce2f0de77 100644 (file)
@@ -10,7 +10,7 @@
 [Unit]
 Description=Switch Root
 DefaultDependencies=no
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
 AllowIsolate=yes
index ea4f02618f1c175460cf3d78a4fd5a6994790505..32ff40a3f6840f51ede1dfde8a550c73f77e29b2 100644 (file)
@@ -9,9 +9,9 @@
 
 [Unit]
 Description=Switch Root
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 DefaultDependencies=no
-Requires=initrd-switch-root.service
+Wants=initrd-switch-root.service
 Before=initrd-switch-root.service
 AllowIsolate=yes
 Wants=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target systemd-journald.service initrd-cleanup.service
index 810cf5775e497e6d03df5909c5718c09669f5ea2..0d66080de73d1a63255eac62e78e3a9097d5266f 100644 (file)
@@ -10,7 +10,7 @@
 [Unit]
 Description=Cleanup udev Database
 DefaultDependencies=no
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udev-trigger.service systemd-udev-settle.service
 After=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udev-trigger.service systemd-udev-settle.service
 Before=initrd-switch-root.target
index a74a447c91ec0ce530c9dae61b9e59f54a862720..bfd497ecc3099b0edb919774fd0ba4d72cbc4912 100644 (file)
@@ -12,7 +12,7 @@ Description=Initrd Default Target
 Documentation=man:systemd.special(7)
 OnFailure=emergency.target
 OnFailureJobMode=replace-irreversibly
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 Requires=basic.target
 Wants=initrd-root-fs.target initrd-root-device.target initrd-fs.target initrd-parse-etc.service
 After=initrd-root-fs.target initrd-root-device.target initrd-fs.target basic.target rescue.service rescue.target
index d1b1aeeabb22d8fb46197703a1967db114579846..a2db06b031dfefbb68f2ef7d1017c6c643650a47 100644 (file)
@@ -15,7 +15,7 @@ BindsTo=%i.device
 Wants=local-fs-pre.target
 After=%i.device
 Before=local-fs-pre.target
-ConditionPathExists=/etc/initrd-release
+AssertPathExists=/etc/initrd-release
 
 [Service]
 Type=oneshot