]> granicus.if.org Git - zfs/commitdiff
Move dracut specifics to dracut module
authorMichael Niewöhner <c0d3z3r0@users.noreply.github.com>
Wed, 3 Apr 2019 00:14:39 +0000 (02:14 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 3 Apr 2019 00:14:39 +0000 (17:14 -0700)
Dracut depends on the environment variable BOOTFS to be set after pool
import. This dracut specific systemd ExecStartPost command should not be
called for any non-dracut systems, so let's move it to a static systemd
unit that.

Reviewed-by: Manuel Amador (Rudd-O) <rudd-o@rudd-o.com>
Reviewed-by: Matthew Thode <prometheanfire@gentoo.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Closes #8510

contrib/dracut/90zfs/.gitignore
contrib/dracut/90zfs/Makefile.am
contrib/dracut/90zfs/module-setup.sh.in
contrib/dracut/90zfs/zfs-env-bootfs.service.in [new file with mode: 0644]
etc/systemd/system/zfs-import-cache.service.in
etc/systemd/system/zfs-import-scan.service.in

index eb41fce4f00b5f29004cc5861e2895728449510e..85c23f75ec011857ac12dcbb83856b30422e6f6c 100644 (file)
@@ -6,3 +6,4 @@ zfs-generator.sh
 zfs-lib.sh
 zfs-load-key.sh
 zfs-needshutdown.sh
+zfs-env-bootfs.service
index afcd5102296becf0a4f39ca75a28f4d0ee1cd0a7..0a557f57f2568212b68faff26e0ddfc77d250ac7 100644 (file)
@@ -9,6 +9,9 @@ pkgdracut_SCRIPTS = \
        zfs-needshutdown.sh \
        zfs-lib.sh
 
+pkgdracut_DATA = \
+       zfs-env-bootfs.service
+
 EXTRA_DIST = \
        $(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \
        $(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \
@@ -17,9 +20,10 @@ EXTRA_DIST = \
        $(top_srcdir)/contrib/dracut/90zfs/zfs-generator.sh.in \
        $(top_srcdir)/contrib/dracut/90zfs/zfs-load-key.sh.in \
        $(top_srcdir)/contrib/dracut/90zfs/zfs-needshutdown.sh.in \
-       $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in
+       $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in \
+       $(top_srcdir)/contrib/dracut/90zfs/zfs-env-bootfs.service.in
 
-$(pkgdracut_SCRIPTS):%:%.in
+$(pkgdracut_SCRIPTS) $(pkgdracut_DATA) :%:%.in
        -$(SED) -e 's,@bindir\@,$(bindir),g' \
                -e 's,@sbindir\@,$(sbindir),g' \
                -e 's,@udevdir\@,$(udevdir),g' \
@@ -30,4 +34,4 @@ $(pkgdracut_SCRIPTS):%:%.in
                $< >'$@'
 
 distclean-local::
-       -$(RM) $(pkgdracut_SCRIPTS)
+       -$(RM) $(pkgdracut_SCRIPTS) $(pkgdracut_DATA)
index f595a369cd3ec5018d68908199fd51b5ddc45250..4efc4b0186cfc9e3cdf187f3c590cd54e316495d 100755 (executable)
@@ -98,6 +98,9 @@ install() {
                                type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import-$_item.service
                        fi
                done
+               inst "${moddir}"/zfs-env-bootfs.service "${systemdsystemunitdir}"/zfs-env-bootfs.service
+               ln -s ../zfs-env-bootfs.service "${initdir}/${systemdsystemunitdir}/zfs-import.target.wants"/zfs-env-bootfs.service
+               type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-env-bootfs.service
                dracut_install systemd-ask-password
                dracut_install systemd-tty-ask-password-agent
                mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants"
diff --git a/contrib/dracut/90zfs/zfs-env-bootfs.service.in b/contrib/dracut/90zfs/zfs-env-bootfs.service.in
new file mode 100644 (file)
index 0000000..3cdf691
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Set BOOTFS environment for dracut
+Documentation=man:zpool(8)
+DefaultDependencies=no
+After=zfs-import-cache.service
+After=zfs-import-scan.service
+Before=zfs-import.target
+
+[Service]
+Type=oneshot
+ExecStart=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
+
+[Install]
+WantedBy=zfs-import.target
index 8087a294d0f7bf46b4e601914ad348d667332f33..cacb53651545511b012b72636caa10269f694c2b 100644 (file)
@@ -13,7 +13,6 @@ ConditionPathExists=@sysconfdir@/zfs/zpool.cache
 Type=oneshot
 RemainAfterExit=yes
 ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN
-ExecStartPost=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
 
 [Install]
 WantedBy=zfs-import.target
index 802328da32cc15d4f3d88858233f5d322fd25880..4aae9f06e5040f2e52dc183d8d24a7f0f19bdfd7 100644 (file)
@@ -12,7 +12,6 @@ ConditionPathExists=!@sysconfdir@/zfs/zpool.cache
 Type=oneshot
 RemainAfterExit=yes
 ExecStart=@sbindir@/zpool import -aN -o cachefile=none
-ExecStartPost=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')"
 
 [Install]
 WantedBy=zfs-import.target