Description: explicitly load the ZFS module via systemd service
Author: Ubuntu developers
Forward: no need
Index: zfs/etc/systemd/system/Makefile.am
===================================================================
--- zfs.orig/etc/systemd/system/Makefile.am
+++ zfs/etc/systemd/system/Makefile.am
@@ -4,6 +4,7 @@ systemdpreset_DATA = \
 	50-zfs.preset
 
 systemdunit_DATA = \
+	zfs-load-module.service \
 	zfs-zed.service \
 	zfs-import-cache.service \
 	zfs-import-scan.service \
Index: zfs/etc/systemd/system/zfs-import-cache.service.in
===================================================================
--- zfs.orig/etc/systemd/system/zfs-import-cache.service.in
+++ zfs/etc/systemd/system/zfs-import-cache.service.in
@@ -3,7 +3,9 @@ Description=Import ZFS pools by cache fi
 Documentation=man:zpool(8)
 DefaultDependencies=no
 Requires=systemd-udev-settle.service
+Requires=zfs-load-module.service
 After=systemd-udev-settle.service
+After=zfs-load-module.service
 After=cryptsetup.target
 After=multipathd.service
 After=systemd-remount-fs.service
Index: zfs/etc/systemd/system/zfs-import-scan.service.in
===================================================================
--- zfs.orig/etc/systemd/system/zfs-import-scan.service.in
+++ zfs/etc/systemd/system/zfs-import-scan.service.in
@@ -3,7 +3,9 @@ Description=Import ZFS pools by device s
 Documentation=man:zpool(8)
 DefaultDependencies=no
 Requires=systemd-udev-settle.service
+Requires=zfs-load-module.service
 After=systemd-udev-settle.service
+Requires=zfs-load-module.service
 After=cryptsetup.target
 After=multipathd.service
 Before=zfs-import.target
Index: zfs/etc/systemd/system/zfs-load-module.service.in
===================================================================
--- /dev/null
+++ zfs/etc/systemd/system/zfs-load-module.service.in
@@ -0,0 +1,17 @@
+[Unit]
+Description=Install ZFS kernel module
+DefaultDependencies=no
+Requires=systemd-udev-settle.service
+After=systemd-udev-settle.service
+After=cryptsetup.target
+Before=dracut-mount.service
+After=systemd-remount-fs.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/sbin/modprobe zfs
+
+[Install]
+WantedBy=zfs-mount.service
+WantedBy=zfs.target
Index: zfs/etc/systemd/system/50-zfs.preset.in
===================================================================
--- zfs.orig/etc/systemd/system/50-zfs.preset.in
+++ zfs/etc/systemd/system/50-zfs.preset.in
@@ -7,3 +7,4 @@ enable zfs-share.service
 enable zfs-zed.service
 enable zfs-volume-wait.service
 enable zfs.target
+enable zfs-load-module.service
Index: zfs/contrib/dracut/90zfs/module-setup.sh.in
===================================================================
--- zfs.orig/contrib/dracut/90zfs/module-setup.sh.in
+++ zfs/contrib/dracut/90zfs/module-setup.sh.in
@@ -86,7 +86,8 @@ install() {
 
 		for _service in \
 			"zfs-import-scan.service" \
-			"zfs-import-cache.service"; do
+			"zfs-import-cache.service" \
+            "zfs-load-module.service"; do
 			inst_simple "${systemdsystemunitdir}/${_service}"
 			systemctl -q --root "${initdir}" add-wants zfs-import.target "${_service}"
 
