diff --git a/contrib/dracut/90zfs/Makefile.am b/contrib/dracut/90zfs/Makefile.am index 2777a81427..243a5200fa 100644 --- a/contrib/dracut/90zfs/Makefile.am +++ b/contrib/dracut/90zfs/Makefile.am @@ -5,6 +5,7 @@ pkgdracut_SCRIPTS = \ mount-zfs.sh \ parse-zfs.sh \ zfs-generator.sh \ + zfs-needshutdown.sh \ zfs-lib.sh EXTRA_DIST = \ @@ -13,6 +14,7 @@ EXTRA_DIST = \ $(top_srcdir)/contrib/dracut/90zfs/mount-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/parse-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-generator.sh.in \ + $(top_srcdir)/contrib/dracut/90zfs/zfs-needshutdown.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in $(pkgdracut_SCRIPTS):%:%.in diff --git a/contrib/dracut/90zfs/module-setup.sh.in b/contrib/dracut/90zfs/module-setup.sh.in index 240847a77c..a653b50f4b 100755 --- a/contrib/dracut/90zfs/module-setup.sh.in +++ b/contrib/dracut/90zfs/module-setup.sh.in @@ -58,6 +58,7 @@ install() { inst_script "${moddir}/zfs-generator.sh" "$systemdutildir"/system-generators/dracut-zfs-generator fi inst_hook mount 98 "${moddir}/mount-zfs.sh" + inst_hook cleanup 99 "${moddir}/zfs-needshutdown.sh" inst_hook shutdown 20 "${moddir}/export-zfs.sh" inst_simple "${moddir}/zfs-lib.sh" "/lib/dracut-zfs-lib.sh" diff --git a/contrib/dracut/90zfs/mount-zfs.sh.in b/contrib/dracut/90zfs/mount-zfs.sh.in index db5ccddf2d..e7f217736e 100755 --- a/contrib/dracut/90zfs/mount-zfs.sh.in +++ b/contrib/dracut/90zfs/mount-zfs.sh.in @@ -22,7 +22,6 @@ if [ -e "$GENERATOR_FILE" -a -e "$GENERATOR_EXTENSION" ] ; then # Let us tell the initrd to run on shutdown. # We have a shutdown hook to run # because we imported the pool. - need_shutdown # We now prevent Dracut from running this thing again. for zfsmounthook in "$hookdir"/mount/*zfs* ; do if [ -f "$zfsmounthook" ] ; then @@ -60,7 +59,6 @@ if import_pool "${ZFS_POOL}" ; then # Let us tell the initrd to run on shutdown. # We have a shutdown hook to run # because we imported the pool. - need_shutdown info "ZFS: Mounting dataset ${ZFS_DATASET}..." if mount_dataset "${ZFS_DATASET}" ; then ROOTFS_MOUNTED=yes diff --git a/contrib/dracut/90zfs/zfs-needshutdown.sh.in b/contrib/dracut/90zfs/zfs-needshutdown.sh.in new file mode 100644 index 0000000000..e3d1b59cca --- /dev/null +++ b/contrib/dracut/90zfs/zfs-needshutdown.sh.in @@ -0,0 +1,10 @@ +#!/bin/sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +if zpool list 2>&1 | grep -q 'no pools available' ; then + info "ZFS: No active pools, no need to export anything." +else + info "ZFS: There is an active pool, will export it." + need_shutdown +fi