diff --git a/0066.patch b/0066.patch
index f884f16..136ce53 100644
--- a/0066.patch
+++ b/0066.patch
@@ -19,3 +19,4 @@ index 50d42a31..0b4c2e85 100644
  %{dracutlibdir}/modules.d/95zfcp
  %{dracutlibdir}/modules.d/95zfcp_rules
  %{dracutlibdir}/modules.d/95terminfo
+
diff --git a/0067.patch b/0067.patch
new file mode 100644
index 0000000..86814f6
--- /dev/null
+++ b/0067.patch
@@ -0,0 +1,34 @@
+From d300160e70bd2ae038acabb12f18fbf039798b26 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 5 Jan 2018 11:02:12 +0100
+Subject: [PATCH] Revert "mdraid: call mdadm with "--wait-clean" instead of
+ "-W""
+
+This reverts commit bc4ce61efce3e2d8b2be4f4e3e5fdef6ca08409f.
+
+Read wrong man page section. Got confused by
+https://github.com/dracutdevs/dracut/issues/342
+---
+ modules.d/90mdraid/mdraid-waitclean.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/90mdraid/mdraid-waitclean.sh b/modules.d/90mdraid/mdraid-waitclean.sh
+index d7f0ffdb..5c901982 100755
+--- a/modules.d/90mdraid/mdraid-waitclean.sh
++++ b/modules.d/90mdraid/mdraid-waitclean.sh
+@@ -13,12 +13,12 @@ if getargbool 0 rd.md.waitclean; then
+             continue
+         fi
+         info "Waiting for $md to become clean"
+-        mdadm $_offroot --wait-clean "$md" >/dev/null 2>&1
++        mdadm $_offroot -W "$md" >/dev/null 2>&1
+     done
+ 
+     for md in $containers; do
+         info "Waiting for $md to become clean"
+-        mdadm $_offroot --wait-clean "$md" >/dev/null 2>&1
++        mdadm $_offroot -W "$md" >/dev/null 2>&1
+     done
+ 
+     unset containers udevinfo _offroot
+
diff --git a/0068.patch b/0068.patch
new file mode 100644
index 0000000..20647a8
--- /dev/null
+++ b/0068.patch
@@ -0,0 +1,36 @@
+From 577f109243bc96cd99c2b8204b7ca4426918f8ae Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Mon, 8 Jan 2018 13:31:55 +0100
+Subject: [PATCH] Merge pull request #339 from danimo/fix_include_parsing
+
+Fix parsing of "-i" and "--include"
+---
+ dracut.sh | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index f5c8d74c..c857b624 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -286,11 +286,15 @@ dropindirs_sort()
+ rearrange_params()
+ {
+     # Workaround -i, --include taking 2 arguments
+-    set -- "${@/--include/++include}"
+-
+-    # This prevents any long argument ending with "-i"
+-    # -i, like --opt-i but I think we can just prevent that
+-    set -- "${@/%-i/++include}"
++    newat=()
++    for i in "$@"; do
++      if [[ $i == "-i" ]] || [[ $i == "--include" ]]; then
++            newat+=("++include") # Replace --include by ++include
++        else
++            newat+=("$i")
++        fi
++    done
++    set -- "${newat[@]}" # Set new $@
+ 
+     TEMP=$(unset POSIXLY_CORRECT; getopt \
+         -o "a:m:o:d:I:k:c:L:fvqlHhMN" \
+
diff --git a/0069.patch b/0069.patch
new file mode 100644
index 0000000..798e453
--- /dev/null
+++ b/0069.patch
@@ -0,0 +1,49 @@
+From ba2cfcab1e47045690ef6bc6d8f8089066b929a2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Mon, 8 Jan 2018 15:05:28 +0100
+Subject: [PATCH] Merge pull request #338 from danimo/fshelp
+
+dracut-emergency: optionally print fs help
+---
+ dracut-init.sh                                 | 6 ++++++
+ modules.d/98dracut-systemd/dracut-emergency.sh | 2 ++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/dracut-init.sh b/dracut-init.sh
+index e8a705ec..53e6f13a 100644
+--- a/dracut-init.sh
++++ b/dracut-init.sh
+@@ -261,6 +261,12 @@ inst_script() {
+     (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l}  ${DRACUT_FIPS_MODE:+-f} "$@" || :
+ }
+ 
++inst_fsck_help() {
++    local _helper="/run/dracut/fsck/fsck_help_$1.txt"
++    $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$2" $_helper
++    (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l}  ${DRACUT_FIPS_MODE:+-f} "$2" $_helper || :
++}
++
+ mark_hostonly() {
+     for i in "$@"; do
+         echo "$i" >> "$initdir/lib/dracut/hostonly-files"
+diff --git a/modules.d/98dracut-systemd/dracut-emergency.sh b/modules.d/98dracut-systemd/dracut-emergency.sh
+index 548f64b9..f17460a7 100755
+--- a/modules.d/98dracut-systemd/dracut-emergency.sh
++++ b/modules.d/98dracut-systemd/dracut-emergency.sh
+@@ -14,6 +14,7 @@ export _rdshell_name="dracut" action="Boot" hook="emergency"
+ _emergency_action=$(getarg rd.emergency)
+ 
+ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
++    FSTXT="/run/dracut/fsck/fsck_help_$fstype.txt"
+     source_hook "$hook"
+     echo
+     rdsosreport
+@@ -25,6 +26,7 @@ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
+     echo 'after mounting them and attach it to a bug report.'
+     echo
+     echo
++    [ -f "$FSTXT" ] && cat "$FSTXT"
+     [ -f /etc/profile ] && . /etc/profile
+     [ -z "$PS1" ] && export PS1="$_name:\${PWD}# "
+     exec sh -i -l
+
diff --git a/0070.patch b/0070.patch
new file mode 100644
index 0000000..99f4c3a
--- /dev/null
+++ b/0070.patch
@@ -0,0 +1,25 @@
+From 17414dd01bd71bb187fee20c2148ccad3b35a887 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Tue, 9 Jan 2018 13:24:46 +0100
+Subject: [PATCH] Merge pull request #344 from yuwata/spec-cleanup
+
+spec: use if-undefined instead of empty if-defined block
+---
+ dracut.spec | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 0b4c2e85..08e5a098 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -370,8 +370,7 @@ rm -rf -- $RPM_BUILD_ROOT
+ %{_mandir}/man5/dracut.conf.5*
+ %endif
+ 
+-%if %{defined _unitdir}
+-%else
++%if %{undefined _unitdir}
+ %{dracutlibdir}/modules.d/00bootchart
+ %endif
+ %{dracutlibdir}/modules.d/00bash
+
diff --git a/0071.patch b/0071.patch
new file mode 100644
index 0000000..93f0c73
--- /dev/null
+++ b/0071.patch
@@ -0,0 +1,45 @@
+From 5a8efed021af6a3a06b484f9ad363935c1a875e3 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 10 Jan 2018 09:10:19 +0100
+Subject: [PATCH] TEST-3[01]-ISCSI*: increase disk size
+
+---
+ test/TEST-30-ISCSI/test.sh       | 6 +++---
+ test/TEST-31-ISCSI-MULTI/test.sh | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
+index d5068e0c..e667587a 100755
+--- a/test/TEST-30-ISCSI/test.sh
++++ b/test/TEST-30-ISCSI/test.sh
+@@ -102,9 +102,9 @@ test_setup() {
+     fi
+ 
+     # Create the blank file to use as a root filesystem
+-    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=20
++    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=40
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 5dde4b68..2b63ff46 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -99,9 +99,9 @@ test_setup() {
+     fi
+ 
+     # Create the blank file to use as a root filesystem
+-    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=20
+-    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=20
++    dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/iscsidisk2.img bs=1M seek=40
++    dd if=/dev/null of=$TESTDIR/iscsidisk3.img bs=1M seek=40
+ 
+     kernel=$KVERSION
+     # Create what will eventually be our root filesystem onto an overlay
+
diff --git a/0072.patch b/0072.patch
new file mode 100644
index 0000000..583b287
--- /dev/null
+++ b/0072.patch
@@ -0,0 +1,37 @@
+From 0f6d93eb9d63695a64002ec8b0421fbc9fc8a7a3 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 11 Jan 2018 11:39:44 +0100
+Subject: [PATCH] crypt: escape backslashes for systemd unit names b/c
+ udev/initqueue/bash
+
+otherwise
+luks\x2d25e41d19\x2d1580\x2d4e7c\x2d8875\x2d134045008f33
+turns to
+luksx2d25e41d19x2d1580x2d4e7cx2d8875x2d134045008f33
+---
+ modules.d/90crypt/parse-crypt.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
+index f0a4fba9..ea6802e8 100755
+--- a/modules.d/90crypt/parse-crypt.sh
++++ b/modules.d/90crypt/parse-crypt.sh
+@@ -64,6 +64,8 @@ else
+                 } >> /etc/udev/rules.d/70-luks.rules.new
+             else
+                 luksname=$(dev_unit_name "$luksname")
++                luksname="$(str_replace "$luksname" '\' '\\')"
++
+                 if ! crypttab_contains "$serialid"; then
+                     {
+                         printf -- 'ENV{ID_SERIAL_SHORT}=="*%s*", ' "$serialid"
+@@ -95,6 +97,8 @@ else
+                 } >> /etc/udev/rules.d/70-luks.rules.new
+             else
+                 luksname=$(dev_unit_name "$luksname")
++                luksname="$(str_replace "$luksname" '\' '\\')"
++
+                 if ! crypttab_contains "$luksid"; then
+                     {
+                         printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", '
+
diff --git a/0073.patch b/0073.patch
new file mode 100644
index 0000000..66b6bac
--- /dev/null
+++ b/0073.patch
@@ -0,0 +1,27 @@
+From cd83391c72aab5ea3732e70f8ebabc32d6440a0b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Thu, 11 Jan 2018 12:30:01 +0100
+Subject: [PATCH] Merge pull request #350 from yuwata/fsfreeze
+
+dracut.sh: do not invoke fsfreeze on EFI System Partition
+---
+ dracut.sh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index c857b624..f6a75996 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1834,8 +1834,10 @@ command -v restorecon &>/dev/null && restorecon -- "$outfile"
+ if ! sync "$outfile" 2> /dev/null; then
+     dinfo "dracut: sync operation on newly created initramfs $outfile failed"
+     exit 1
++fi
++
+ # use fsfreeze only if we're not writing to /
+-elif ! [ "$(stat -c %m -- "$outfile")" == "/" ]; then
++if [[ "$(stat -c %m -- "$outfile")" != "/" && "$(stat -f -c %T -- "$outfile")" != "msdos" ]]; then
+     if ! $(fsfreeze -f $(dirname "$outfile") 2>/dev/null && fsfreeze -u $(dirname "$outfile") 2>/dev/null); then
+         dinfo "dracut: warning: could not fsfreeze $(dirname "$outfile")"
+     fi
+
diff --git a/0074.patch b/0074.patch
new file mode 100644
index 0000000..81ef819
--- /dev/null
+++ b/0074.patch
@@ -0,0 +1,60 @@
+From 3a6a8d5c83af952f66c7786f17e59da6012da0b6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Thu, 11 Jan 2018 12:34:40 +0100
+Subject: [PATCH] Merge pull request #346 from danimo/95dcssblk
+
+95dcssblk: Add new module for DCSS block devices
+---
+ modules.d/95dcssblk/module-setup.sh  | 28 ++++++++++++++++++++++++++++
+ modules.d/95dcssblk/parse-dcssblk.sh |  8 ++++++++
+ 2 files changed, 36 insertions(+)
+
+diff --git a/modules.d/95dcssblk/module-setup.sh b/modules.d/95dcssblk/module-setup.sh
+new file mode 100644
+index 00000000..11e38490
+--- /dev/null
++++ b/modules.d/95dcssblk/module-setup.sh
+@@ -0,0 +1,28 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++# called by dracut
++check() {
++    local _arch=$(uname -m)
++    [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
++    return 0
++}
++
++# called by dracut
++installkernel() {
++    if [ -e /sys/devices/dcssblk/*/block/dcssblk* ];then
++	hostonly='' instmods dcssblk
++    fi
++}
++
++# called by dracut
++install() {
++    inst_hook cmdline 30 "$moddir/parse-dcssblk.sh"
++    # If there is a config file which contains avail (best only of root device)
++    # disks to activate add it and use it during boot -> then we do not need
++    # a kernel param anymore
++    #if [[ $hostonly ]]; then
++    #    inst /etc/dcssblk.conf
++    #fi
++}
+diff --git a/modules.d/95dcssblk/parse-dcssblk.sh b/modules.d/95dcssblk/parse-dcssblk.sh
+new file mode 100644
+index 00000000..8f174408
+--- /dev/null
++++ b/modules.d/95dcssblk/parse-dcssblk.sh
+@@ -0,0 +1,8 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++dcssblk_arg=$(getarg rd.dcssblk=)
++if [ $? == 0 ];then
++	info "Loading dcssblk segments=$dcssblk_arg"
++	modprobe dcssblk segments=$dcssblk_arg
++fi
+
diff --git a/0075.patch b/0075.patch
new file mode 100644
index 0000000..713977b
--- /dev/null
+++ b/0075.patch
@@ -0,0 +1,24 @@
+From b8b341a07f755d69e557bfbca92ae54fc3f84dda Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Thu, 11 Jan 2018 13:18:14 +0100
+Subject: [PATCH] Merge pull request #352 from lnykryn/ntfs
+
+90dmsquash-live-ntfs: fix depends()
+---
+ modules.d/90dmsquash-live-ntfs/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90dmsquash-live-ntfs/module-setup.sh b/modules.d/90dmsquash-live-ntfs/module-setup.sh
+index bc77376b..2354b840 100755
+--- a/modules.d/90dmsquash-live-ntfs/module-setup.sh
++++ b/modules.d/90dmsquash-live-ntfs/module-setup.sh
+@@ -8,7 +8,7 @@ check() {
+ }
+ 
+ depends() {
+-    echo 90dmsquash-live
++    echo dmsquash-live
+     return 0
+ }
+ 
+
diff --git a/0076.patch b/0076.patch
new file mode 100644
index 0000000..e879b1c
--- /dev/null
+++ b/0076.patch
@@ -0,0 +1,24 @@
+From 47f83419a711d540cf758b56c8ad4fadaa964592 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Thu, 11 Jan 2018 15:33:45 +0100
+Subject: [PATCH] Merge pull request #353 from lnykryn/ntfs_3
+
+90dmsquash-live: we don't have find_binary inside initramdisk
+---
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index 1458329c..8f3b2bf9 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -84,7 +84,7 @@ else
+         # Symlinking /usr/bin/ntfs-3g as /sbin/mount.ntfs seems to boot
+         # at the first glance, but ends with lots and lots of squashfs
+         # errors, because systemd attempts to kill the ntfs-3g process?!
+-        if [ -x "$(find_binary "ntfs-3g")" ]; then
++        if [ -x "/usr/bin/ntfs-3g" ]; then
+             ( exec -a @ntfs-3g ntfs-3g -o ${liverw:-ro} $livedev /run/initramfs/live ) | vwarn
+         else
+             die "Failed to mount block device of live image: Missing NTFS support"
+
diff --git a/0077.patch b/0077.patch
new file mode 100644
index 0000000..4145279
--- /dev/null
+++ b/0077.patch
@@ -0,0 +1,30 @@
+From 6ccb77e19a80f1be32170d85766f1925fbeb732b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 09:31:18 +0100
+Subject: [PATCH] dracut-systemd/dracut-pre-udev.service: also run for
+ /etc/cmdline
+
+Fixes #117
+---
+ modules.d/98dracut-systemd/dracut-pre-udev.service | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/98dracut-systemd/dracut-pre-udev.service b/modules.d/98dracut-systemd/dracut-pre-udev.service
+index dffb8d55..570ec02d 100644
+--- a/modules.d/98dracut-systemd/dracut-pre-udev.service
++++ b/modules.d/98dracut-systemd/dracut-pre-udev.service
+@@ -10,12 +10,12 @@ Before=systemd-udevd.service dracut-pre-trigger.service
+ After=dracut-cmdline.service
+ Wants=dracut-cmdline.service
+ ConditionPathExists=/usr/lib/initrd-release
+-ConditionPathExists=|/etc/cmdline.d/20-force_drivers.conf
+ ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-udev
+ ConditionKernelCommandLine=|rd.break=pre-udev
+ ConditionKernelCommandLine=|rd.driver.blacklist
+ ConditionKernelCommandLine=|rd.driver.pre
+ ConditionKernelCommandLine=|rd.driver.post
++ConditionPathExistsGlob=|/etc/cmdline.d/*.conf
+ Conflicts=shutdown.target emergency.target
+ 
+ [Service]
+
diff --git a/0078.patch b/0078.patch
new file mode 100644
index 0000000..dc81d13
--- /dev/null
+++ b/0078.patch
@@ -0,0 +1,212 @@
+From 8e7d0856d0c94e9cc0e17c2f715aa7bc715fd37d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Fri, 12 Jan 2018 09:34:08 +0100
+Subject: [PATCH] Merge pull request #351 from danimo/91zipl
+
+Add 91zipl, which adds support for indirect booting on s390.
+---
+ dracut.cmdline.7.asc                     | 14 ++++++++
+ dracut.sh                                |  1 +
+ modules.d/91zipl/install_zipl_cmdline.sh | 40 +++++++++++++++++++++
+ modules.d/91zipl/module-setup.sh         | 61 ++++++++++++++++++++++++++++++++
+ modules.d/91zipl/parse-zipl.sh           | 41 +++++++++++++++++++++
+ 5 files changed, 157 insertions(+)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index b5f6f0f6..f95f4d63 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -1001,6 +1001,20 @@ be mounted read only through a higher level transient overlay directory, has
+ been implemented through the multiple lower layers feature of OverlayFS.
+ 
+ 
++ZIPL
++~~~~
++**rd.zipl=**__<path to blockdevice>__::
++    Update the dracut commandline with the values found in the
++    _dracut-cmdline.conf_ file on the given device.
++    The values are merged into the existing commandline values
++    and the udev events are regenerated.
+++
++[listing]
++.Example
++--
++rd.zipl=UUID=0fb28157-99e3-4395-adef-da3f7d44835a
++--
++
+ Plymouth Boot Splash
+ ~~~~~~~~~~~~~~~~~~~~
+ **plymouth.enable=0**::
+diff --git a/dracut.sh b/dracut.sh
+index f6a75996..fb23f117 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1172,6 +1172,7 @@ if [[ $hostonly ]] && [[ "$hostonly_default_device" != "no" ]]; then
+         "/usr/lib64" \
+         "/boot" \
+         "/boot/efi" \
++        "/boot/zipl" \
+         ;
+     do
+         mp=$(readlink -f "$mp")
+diff --git a/modules.d/91zipl/install_zipl_cmdline.sh b/modules.d/91zipl/install_zipl_cmdline.sh
+new file mode 100755
+index 00000000..b7546bef
+--- /dev/null
++++ b/modules.d/91zipl/install_zipl_cmdline.sh
+@@ -0,0 +1,40 @@
++#!/bin/bash
++
++DEV="$1"
++MNT=/boot/zipl
++
++if [ -z "$DEV" ] ; then
++    echo "No IPL device given"
++    > /tmp/install.zipl.cmdline-done
++    exit 1
++fi
++
++[ -d ${MNT} ] || mkdir -p ${MNT}
++
++mount -o ro ${DEV} ${MNT}
++if [ "$?" != "0" ] ; then
++    echo "Failed to mount ${MNT}"
++    > /tmp/install.zipl.cmdline-done
++    exit 1
++fi
++
++if [ -f ${MNT}/dracut-cmdline.conf ] ; then
++    cp ${MNT}/dracut-cmdline.conf /etc/cmdline.d/99zipl.conf
++fi
++
++if [ -f ${MNT}/active_devices.txt ] ; then
++    while read dev etc ; do
++        [ "$dev" = "#" -o "$dev" = "" ] && continue;
++        cio_ignore -r $dev
++    done < ${MNT}/active_devices.txt
++fi
++
++umount ${MNT}
++
++if [ -f /etc/cmdline.d/99zipl.conf ] ; then
++    systemctl restart dracut-cmdline.service
++    systemctl restart systemd-udev-trigger.service
++fi
++> /tmp/install.zipl.cmdline-done
++
++exit 0
+diff --git a/modules.d/91zipl/module-setup.sh b/modules.d/91zipl/module-setup.sh
+new file mode 100755
+index 00000000..d0cd75da
+--- /dev/null
++++ b/modules.d/91zipl/module-setup.sh
+@@ -0,0 +1,61 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++# called by dracut
++check() {
++    local _arch=$(uname -m)
++    # Only for systems on s390 using indirect booting via userland grub
++    [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
++    # /boot/zipl contains a first stage kernel used to launch grub in initrd
++    [ -d /boot/zipl ] || return 1
++    return 0
++}
++
++# called by dracut
++depends() {
++    echo grub2
++    return 0
++}
++
++# called by dracut
++installkernel() {
++    local _boot_zipl
++
++    _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab)
++    if [ -n "$_boot_zipl" ] ; then
++        eval $(blkid -s TYPE -o udev ${_boot_zipl})
++        if [ -n "$ID_FS_TYPE" ] ; then
++            case "$ID_FS_TYPE" in
++                ext?)
++                    ID_FS_TYPE=ext4
++                    ;;
++            esac
++            instmods ${ID_FS_TYPE}
++        fi
++    fi
++}
++
++# called by dracut
++cmdline() {
++    local _boot_zipl
++
++    _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab)
++    if [ -n "$_boot_zipl" ] ; then
++        echo "rd.zipl=${_boot_zipl}"
++    fi
++}
++
++# called by dracut
++install() {
++    inst_multiple mount umount
++
++    inst_hook cmdline 91 "$moddir/parse-zipl.sh"
++    inst_script "${moddir}/install_zipl_cmdline.sh" /sbin/install_zipl_cmdline.sh
++    if [[ $hostonly_cmdline == "yes" ]] ; then
++        local _zipl=$(cmdline)
++
++        [[ $_zipl ]] && printf "%s\n" "$_zipl" > "${initdir}/etc/cmdline.d/91zipl.conf"
++    fi
++    dracut_need_initqueue
++}
+diff --git a/modules.d/91zipl/parse-zipl.sh b/modules.d/91zipl/parse-zipl.sh
+new file mode 100755
+index 00000000..308f228b
+--- /dev/null
++++ b/modules.d/91zipl/parse-zipl.sh
+@@ -0,0 +1,41 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++zipl_arg=$(getarg rd.zipl)
++
++if [ -n "$zipl_arg" ] ; then
++    case "$zipl_arg" in
++    LABEL=*) \
++        zipl_env="ENV{ID_FS_LABEL}"
++        zipl_val=${zipl_arg#LABEL=}
++        zipl_arg="/dev/disk/by-label/${zipl_val}"
++        ;;
++    UUID=*) \
++        zipl_env="ENV{ID_FS_UUID}"
++        zipl_val=${zipl_arg#UUID=}
++        zipl_arg="/dev/disk/by-uuid/${zipl_val}"
++        ;;
++    /dev/mapper/*) \
++        zipl_env="ENV{DM_NAME}"
++        zipl_val=${zipl_arg#/dev/mapper/}
++        ;;
++    /dev/disk/by-*) \
++        zipl_env="SYMLINK"
++        zipl_val=${zipl_arg#/dev/}
++        ;;
++    /dev/*) \
++        zipl_env="KERNEL"
++        zipl_val=${zipl_arg}
++        ;;
++    esac
++    if [ "$zipl_env" ] ; then
++        {
++            printf 'ACTION=="add|change", SUBSYSTEM=="block", %s=="%s", RUN+="/sbin/initqueue --settled --onetime --unique --name install_zipl_cmdline /sbin/install_zipl_cmdline.sh %s"\n' \
++                ${zipl_env} ${zipl_val} ${zipl_arg}
++            echo "[ -f /tmp/install.zipl.cmdline-done ]" >$hookdir/initqueue/finished/wait-zipl-conf.sh
++        } >> /etc/udev/rules.d/99zipl-conf.rules
++        cat /etc/udev/rules.d/99zipl-conf.rules
++    fi
++    wait_for_dev -n "$zipl_arg"
++fi
+
diff --git a/0079.patch b/0079.patch
new file mode 100644
index 0000000..27b9c9a
--- /dev/null
+++ b/0079.patch
@@ -0,0 +1,108 @@
+From b7a7ab194398ab3519004376d35d834385e2d916 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Fri, 12 Jan 2018 10:36:56 +0100
+Subject: [PATCH] Merge pull request #354 from yuwata/spec-s390x
+
+spec: do not package s390 specific modules
+---
+ dracut.spec | 41 ++++++++++++++++++++++++++++++-----------
+ 1 file changed, 30 insertions(+), 11 deletions(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 08e5a098..11c7459a 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -284,6 +284,19 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+ %endif
+ 
++%infarch s390 s390x
++# remove architecture specific modules
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/80cms
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/91zipl
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_mod
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_rules
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dcssblk
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp_rules
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95znet
++%endif
++
+ mkdir -p $RPM_BUILD_ROOT/boot/dracut
+ mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
+ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
+@@ -385,7 +398,6 @@ rm -rf -- $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/45url-lib
+ %{dracutlibdir}/modules.d/50drm
+ %{dracutlibdir}/modules.d/50plymouth
+-%{dracutlibdir}/modules.d/80cms
+ %{dracutlibdir}/modules.d/80lvmmerge
+ %{dracutlibdir}/modules.d/90btrfs
+ %{dracutlibdir}/modules.d/90crypt
+@@ -400,29 +412,34 @@ rm -rf -- $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/91crypt-gpg
+ %{dracutlibdir}/modules.d/91crypt-loop
+ %{dracutlibdir}/modules.d/95debug
++%{dracutlibdir}/modules.d/95fstab-sys
++%{dracutlibdir}/modules.d/95lunmask
+ %{dracutlibdir}/modules.d/95resume
+ %{dracutlibdir}/modules.d/95rootfs-block
++%{dracutlibdir}/modules.d/95terminfo
++%{dracutlibdir}/modules.d/95udev-rules
++%{dracutlibdir}/modules.d/95virtfs
++%ifarch s390 s390x
++%{dracutlibdir}/modules.d/80cms
++%{dracutlibdir}/modules.d/91zipl
+ %{dracutlibdir}/modules.d/95dasd
+ %{dracutlibdir}/modules.d/95dasd_mod
+ %{dracutlibdir}/modules.d/95dasd_rules
+-%{dracutlibdir}/modules.d/95fstab-sys
+-%{dracutlibdir}/modules.d/95lunmask
++%{dracutlibdir}/modules.d/95dcssblk
+ %{dracutlibdir}/modules.d/95zfcp
+ %{dracutlibdir}/modules.d/95zfcp_rules
+-%{dracutlibdir}/modules.d/95terminfo
+-%{dracutlibdir}/modules.d/95udev-rules
+-%{dracutlibdir}/modules.d/95virtfs
++%endif
+ %if %{undefined _unitdir}
+ %{dracutlibdir}/modules.d/96securityfs
+ %{dracutlibdir}/modules.d/97masterkey
+ %{dracutlibdir}/modules.d/98integrity
+ %endif
+ %{dracutlibdir}/modules.d/97biosdevname
++%{dracutlibdir}/modules.d/98dracut-systemd
+ %{dracutlibdir}/modules.d/98ecryptfs
+ %{dracutlibdir}/modules.d/98pollcdrom
+ %{dracutlibdir}/modules.d/98selinux
+ %{dracutlibdir}/modules.d/98syslog
+-%{dracutlibdir}/modules.d/98dracut-systemd
+ %{dracutlibdir}/modules.d/98usrmount
+ %{dracutlibdir}/modules.d/99base
+ %{dracutlibdir}/modules.d/99fs-lib
+@@ -456,17 +473,19 @@ rm -rf -- $RPM_BUILD_ROOT
+ %defattr(-,root,root,0755)
+ %{dracutlibdir}/modules.d/02systemd-networkd
+ %{dracutlibdir}/modules.d/40network
++%{dracutlibdir}/modules.d/45ifcfg
+ %{dracutlibdir}/modules.d/90kernel-network-modules
+-%{dracutlibdir}/modules.d/95fcoe
+-%{dracutlibdir}/modules.d/95iscsi
+ %{dracutlibdir}/modules.d/90qemu-net
+ %{dracutlibdir}/modules.d/95cifs
++%{dracutlibdir}/modules.d/95fcoe
++%{dracutlibdir}/modules.d/95fcoe-uefi
++%{dracutlibdir}/modules.d/95iscsi
+ %{dracutlibdir}/modules.d/95nbd
+ %{dracutlibdir}/modules.d/95nfs
+ %{dracutlibdir}/modules.d/95ssh-client
+-%{dracutlibdir}/modules.d/45ifcfg
++%ifarch s390 s390x
+ %{dracutlibdir}/modules.d/95znet
+-%{dracutlibdir}/modules.d/95fcoe-uefi
++%endif
+ %{dracutlibdir}/modules.d/99uefi-lib
+ 
+ %if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
+
diff --git a/0080.patch b/0080.patch
new file mode 100644
index 0000000..f7863cf
--- /dev/null
+++ b/0080.patch
@@ -0,0 +1,253 @@
+From 28a68f1f3ce15b40d45e6987ab0997584d4fa901 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 10:24:20 +0100
+Subject: [PATCH] iSCSI: no more iscsid
+
+According to Cathy Zhou <Cathy.Zhou@Oracle.COM>:
+
+"iscsistart is not designed to be working together with iscsid. When an
+interface gets the dhcp offer successfully, the iscsiroot script is run
+which starts the iscsistart service to establish the iSCSI session. With
+the existence of iscsid, the iscsistart service's attempt to setup its
+own mgmt ipc fails. Instead, the request to login to the iscsi target
+is handled by the mgmt ipc of iscsid. After iscsistart finishes its
+login attempt, it eventually sends a stop_event_loop request to stop
+the mgmt process. As the result, it terminates iscsid."
+
+So, iscsid is kicked out again.
+
+Additionally iscsistart-flocked is used to make sure iscsistart is not
+run in parallel.
+---
+ modules.d/95iscsi/cleanup-iscsi.sh      |  2 +-
+ modules.d/95iscsi/iscsiroot.sh          | 25 +++++--------------------
+ modules.d/95iscsi/iscsistart-flocked.sh |  5 +++++
+ modules.d/95iscsi/module-setup.sh       | 31 +------------------------------
+ modules.d/95iscsi/parse-iscsiroot.sh    | 10 ----------
+ test/TEST-31-ISCSI-MULTI/test.sh        | 32 ++++++++++++++++++++++++++++++++
+ 6 files changed, 44 insertions(+), 61 deletions(-)
+
+diff --git a/modules.d/95iscsi/cleanup-iscsi.sh b/modules.d/95iscsi/cleanup-iscsi.sh
+index bfc8aefc..e97d65ac 100755
+--- a/modules.d/95iscsi/cleanup-iscsi.sh
++++ b/modules.d/95iscsi/cleanup-iscsi.sh
+@@ -1,4 +1,4 @@
+ #!/bin/sh
+ 
+-[ -z "${DRACUT_SYSTEMD}" ] && [ -e /sys/module/bnx2i ] && killproc iscsiuio
++[ -e /sys/module/bnx2i ] && killproc iscsiuio
+ 
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index aefd263d..d6325f7d 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -36,14 +36,14 @@ iroot=${iroot#:}
+ # figured out a way how to check whether this is built-in or not
+ modprobe crc32c 2>/dev/null
+ 
+-if [ -z "${DRACUT_SYSTEMD}" ] && [ -e /sys/module/bnx2i ] && ! [ -e /tmp/iscsiuio-started ]; then
++if [ -e /sys/module/bnx2i ] && ! [ -e /tmp/iscsiuio-started ]; then
+         iscsiuio
+         > /tmp/iscsiuio-started
+ fi
+ 
+ handle_firmware()
+ {
+-    if ! iscsistart -f; then
++    if ! iscsistart-flocked -f; then
+         warn "iscistart: Could not get list of targets from firmware. Skipping."
+         echo 'skipped' > "/tmp/iscsistarted-firmware"
+         return 0
+@@ -53,7 +53,7 @@ handle_firmware()
+ 	iscsi_param="$iscsi_param --param $p"
+     done
+ 
+-    if ! iscsistart -b $iscsi_param; then
++    if ! iscsistart-flocked -b $iscsi_param; then
+         warn "'iscsistart -b $iscsi_param' failed with return code $?"
+     fi
+ 
+@@ -117,11 +117,6 @@ handle_netroot()
+            mkdir -p /etc/iscsi
+            ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+            > /tmp/iscsi_set_initiator
+-           if [ -n "$DRACUT_SYSTEMD" ]; then
+-               systemctl try-restart iscsid
+-               # FIXME: iscsid is not yet ready, when the service is :-/
+-               sleep 1
+-           fi
+     fi
+ 
+     if [ -z "$iscsi_initiator" ]; then
+@@ -138,11 +133,6 @@ handle_netroot()
+         mkdir -p /etc/iscsi
+         ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+         > /tmp/iscsi_set_initiator
+-        if [ -n "$DRACUT_SYSTEMD" ]; then
+-            systemctl try-restart iscsid
+-            # FIXME: iscsid is not yet ready, when the service is :-/
+-            sleep 1
+-        fi
+     fi
+ 
+ 
+@@ -163,11 +153,6 @@ handle_netroot()
+     if ! [ -e /etc/iscsi/initiatorname.iscsi ]; then
+         mkdir -p /etc/iscsi
+         ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+-        if [ -n "$DRACUT_SYSTEMD" ]; then
+-            systemctl try-restart iscsid
+-            # FIXME: iscsid is not yet ready, when the service is :-/
+-            sleep 1
+-        fi
+     fi
+ # FIXME $iscsi_protocol??
+ 
+@@ -193,7 +178,7 @@ handle_netroot()
+                             --description="Login iSCSI Target $iscsi_target_name" \
+                             -p 'DefaultDependencies=no' \
+                             --unit="$netroot_enc" -- \
+-                            $(command -v iscsistart) \
++                            $(command -v iscsistart-flocked) \
+                             -i "$iscsi_initiator" -t "$iscsi_target_name"        \
+                             -g "$iscsi_target_group" -a "$iscsi_target_ip"      \
+                             -p "$iscsi_target_port" \
+@@ -211,7 +196,7 @@ handle_netroot()
+             fi
+         fi
+     else
+-        iscsistart -i "$iscsi_initiator" -t "$iscsi_target_name"        \
++        iscsistart-flocked -i "$iscsi_initiator" -t "$iscsi_target_name"        \
+                    -g "$iscsi_target_group" -a "$iscsi_target_ip"      \
+                    -p "$iscsi_target_port" \
+                    ${iscsi_username:+-u "$iscsi_username"} \
+diff --git a/modules.d/95iscsi/iscsistart-flocked.sh b/modules.d/95iscsi/iscsistart-flocked.sh
+new file mode 100755
+index 00000000..6366335d
+--- /dev/null
++++ b/modules.d/95iscsi/iscsistart-flocked.sh
+@@ -0,0 +1,5 @@
++#!/bin/sh
++{
++    flock -e 9
++    iscsistart "$@"
++} 9>/tmp/.iscsi_lock
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 04937b5b..5c47750a 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -194,41 +194,12 @@ install() {
+         [[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
+     fi
+ 
++    inst "$moddir/iscsistart-flocked.sh" "/bin/iscsistart-flocked"
+     inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
+     inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
+     inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
+     if ! dracut_module_included "systemd"; then
+         inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
+-    else
+-        inst_multiple -o \
+-                      $systemdsystemunitdir/iscsi.service \
+-                      $systemdsystemunitdir/iscsid.service \
+-                      $systemdsystemunitdir/iscsid.socket \
+-                      $systemdsystemunitdir/iscsiuio.service \
+-                      $systemdsystemunitdir/iscsiuio.socket \
+-                      iscsiadm iscsid
+-
+-        mkdir -p "${initdir}/$systemdsystemunitdir/sockets.target.wants"
+-        for i in \
+-                iscsiuio.socket \
+-            ; do
+-            ln_r "$systemdsystemunitdir/${i}" "$systemdsystemunitdir/sockets.target.wants/${i}"
+-        done
+-
+-        mkdir -p "${initdir}/$systemdsystemunitdir/basic.target.wants"
+-        for i in \
+-                iscsid.service \
+-            ; do
+-            ln_r "$systemdsystemunitdir/${i}" "$systemdsystemunitdir/basic.target.wants/${i}"
+-        done
+-
+-        # Make sure iscsid is started after dracut-cmdline and ready for the initqueue
+-        mkdir -p "${initdir}/$systemdsystemunitdir/iscsid.service.d"
+-        (
+-            echo "[Unit]"
+-            echo "After=dracut-cmdline.service"
+-            echo "Before=dracut-initqueue.service"
+-        ) > "${initdir}/$systemdsystemunitdir/iscsid.service.d/dracut.conf"
+     fi
+     inst_dir /var/lib/iscsi
+     dracut_need_initqueue
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index 43b2e088..c8c66ccf 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -116,11 +116,6 @@ if arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) && [ -n "$arg" ] && ! [
+     if ! [ -e /etc/iscsi/initiatorname.iscsi ]; then
+         mkdir -p /etc/iscsi
+         ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+-        if [ -n "$DRACUT_SYSTEMD" ]; then
+-            systemctl try-restart iscsid
+-            # FIXME: iscsid is not yet ready, when the service is :-/
+-            sleep 1
+-        fi
+     fi
+ fi
+ 
+@@ -133,11 +128,6 @@ if [ -z $iscsi_initiator ] && [ -f /sys/firmware/ibft/initiator/initiator-name ]
+         mkdir -p /etc/iscsi
+         ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
+         > /tmp/iscsi_set_initiator
+-        if [ -n "$DRACUT_SYSTEMD" ]; then
+-            systemctl try-restart iscsid
+-            # FIXME: iscsid is not yet ready, when the service is :-/
+-            sleep 1
+-        fi
+     fi
+ fi
+ 
+diff --git a/test/TEST-31-ISCSI-MULTI/test.sh b/test/TEST-31-ISCSI-MULTI/test.sh
+index 2b63ff46..2f2b6ed5 100755
+--- a/test/TEST-31-ISCSI-MULTI/test.sh
++++ b/test/TEST-31-ISCSI-MULTI/test.sh
+@@ -73,6 +73,38 @@ do_test_run() {
+                "rd.iscsi.initiator=$initiator" \
+         || return 1
+ 
++    run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
++               "root=LABEL=sysroot" \
++               "ip=192.168.50.101:::255.255.255.0::ens3:off" \
++               "ip=192.168.51.101:::255.255.255.0::ens4:off" \
++               "netroot=iscsi:192.168.51.1::::iqn.2009-06.dracut:target1" \
++               "netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
++               "rd.iscsi.firmware" \
++               "rd.iscsi.initiator=$initiator" \
++               "rd.iscsi.waitnet=0" \
++        || return 1
++
++    run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
++               "root=LABEL=sysroot" \
++               "ip=192.168.50.101:::255.255.255.0::ens3:off" \
++               "ip=192.168.51.101:::255.255.255.0::ens4:off" \
++               "netroot=iscsi:192.168.51.1::::iqn.2009-06.dracut:target1" \
++               "netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
++               "rd.iscsi.firmware" \
++               "rd.iscsi.initiator=$initiator" \
++               "rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
++        || return 1
++
++    run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0 default GW" \
++               "root=LABEL=sysroot" \
++               "ip=192.168.50.101::192.168.50.1:255.255.255.0::ens3:off" \
++               "ip=192.168.51.101::192.168.51.1:255.255.255.0::ens4:off" \
++               "netroot=iscsi:192.168.51.1::::iqn.2009-06.dracut:target1" \
++               "netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
++               "rd.iscsi.firmware" \
++               "rd.iscsi.initiator=$initiator" \
++               "rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
++        || return 1
+ 
+     echo "All tests passed [OK]"
+     return 0
+
diff --git a/0081.patch b/0081.patch
new file mode 100644
index 0000000..ee83c71
--- /dev/null
+++ b/0081.patch
@@ -0,0 +1,24 @@
+From 2bb4881b8206cc26d48b31985c4078510bf6c8cd Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 11:33:26 +0100
+Subject: [PATCH] dracut.spec: fixed typo
+
+introduced with commit 52d19cb161fcdf260f956db32480d1593bd20b52
+---
+ dracut.spec | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut.spec b/dracut.spec
+index 11c7459a..81a5098c 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -284,7 +284,7 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+ %endif
+ 
+-%infarch s390 s390x
++%ifnarch s390 s390x
+ # remove architecture specific modules
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/80cms
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/91zipl
+
diff --git a/0082.patch b/0082.patch
new file mode 100644
index 0000000..e06df49
--- /dev/null
+++ b/0082.patch
@@ -0,0 +1,39 @@
+From 5cc17c25c2f450e54a67c0de9b5031d4c2fd24cb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 11:34:45 +0100
+Subject: [PATCH] TEST-14-IMSM: fail early, if setup failed
+
+---
+ test/TEST-14-IMSM/test.sh | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh
+index 9f4ed8a8..21172357 100755
+--- a/test/TEST-14-IMSM/test.sh
++++ b/test/TEST-14-IMSM/test.sh
+@@ -30,6 +30,11 @@ client_run() {
+ 
+ test_run() {
+     read MD_UUID < $TESTDIR/mduuid
++    if [[ -z $MD_UUID ]]; then
++        echo "Setup failed"
++        return 1
++    fi
++
+     client_run rd.auto rd.md.imsm=0 || return 1
+     client_run rd.md.uuid=$MD_UUID rd.dm=0 || return 1
+     # This test succeeds, because the mirror parts are found without
+@@ -109,6 +114,12 @@ test_setup() {
+ 	-initrd $TESTDIR/initramfs.makeroot  || return 1
+     grep -F -m 1 -q dracut-root-block-created $TESTDIR/root.ext2 || return 1
+     eval $(grep -F --binary-files=text -m 1 MD_UUID $TESTDIR/root.ext2)
++
++    if [[ -z $MD_UUID ]]; then
++        echo "Setup failed"
++        return 1
++    fi
++
+     echo $MD_UUID > $TESTDIR/mduuid
+     (
+ 	export initdir=$TESTDIR/overlay
+
diff --git a/0083.patch b/0083.patch
new file mode 100644
index 0000000..1059bf5
--- /dev/null
+++ b/0083.patch
@@ -0,0 +1,35 @@
+From d888e21b5d3b830ab2a40fa4194d0ae59cb1b331 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 13:04:34 +0100
+Subject: [PATCH] test/ci-matrix.txt: add file specifying which tests to run
+
+---
+ test/ci-matrix.txt | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/test/ci-matrix.txt b/test/ci-matrix.txt
+new file mode 100644
+index 00000000..3d6aca62
+--- /dev/null
++++ b/test/ci-matrix.txt
+@@ -0,0 +1,19 @@
++01
++02
++03
++04
++10
++11
++12
++13
++14
++15
++16
++17
++20
++30
++31
++40
++50
++60
++70
+
diff --git a/0084.patch b/0084.patch
new file mode 100644
index 0000000..b6d53e2
--- /dev/null
+++ b/0084.patch
@@ -0,0 +1,22 @@
+From cc3808184c741c6a793e0200bdc7d2abf9f68c08 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 13:34:57 +0100
+Subject: [PATCH] README.md: add test 31
+
+---
+ README.md | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/README.md b/README.md
+index 93449a76..e229641b 100644
+--- a/README.md
++++ b/README.md
+@@ -20,6 +20,7 @@ dracut is an initramfs infrastructure.
+ - Test 17: [![Test 17](https://ci.centos.org/job/dracut-matrix-master/TESTS=17,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=17,label=dracut-ci-slave01/)
+ - Test 20: [![Test 20](https://ci.centos.org/job/dracut-matrix-master/TESTS=20,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=20,label=dracut-ci-slave01/)
+ - Test 30: [![Test 30](https://ci.centos.org/job/dracut-matrix-master/TESTS=30,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=30,label=dracut-ci-slave01/)
++- Test 31: [![Test 31](https://ci.centos.org/job/dracut-matrix-master/TESTS=31,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=31,label=dracut-ci-slave01/)
+ - Test 40: [![Test 40](https://ci.centos.org/job/dracut-matrix-master/TESTS=40,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=40,label=dracut-ci-slave01/)
+ - Test 50: [![Test 50](https://ci.centos.org/job/dracut-matrix-master/TESTS=50,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=50,label=dracut-ci-slave01/)
+ - Test 70: [![Test 70](https://ci.centos.org/job/dracut-matrix-master/TESTS=70,label=dracut-ci-slave01/badge/icon)](https://ci.centos.org/job/dracut-matrix-master/TESTS=70,label=dracut-ci-slave01/)
+
diff --git a/0085.patch b/0085.patch
new file mode 100644
index 0000000..060143f
--- /dev/null
+++ b/0085.patch
@@ -0,0 +1,29 @@
+From 8b4b7dc5b2f1477825cf8a52f412af372b4646f8 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 12 Jan 2018 13:45:20 +0100
+Subject: [PATCH] iscsi: remove last iscsid code snippet
+
+---
+ modules.d/95iscsi/iscsiroot.sh | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index d6325f7d..f7c99a60 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -219,14 +219,6 @@ if [ "$netif" != "timeout" ] && getargbool 1 rd.iscsi.waitnet; then
+     all_ifaces_setup || exit 0
+ fi
+ 
+-if [ "$netif" = "timeout" ] && all_ifaces_setup; then
+-    # s.th. went wrong and the timeout script hits
+-    # restart
+-    systemctl restart iscsid
+-    # damn iscsid is not ready after unit says it's ready
+-    sleep 2
+-fi
+-
+ if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then
+     if [ "$netif" = "timeout" ] || [ "$netif" = "online" ]; then
+         handle_firmware
+
diff --git a/0086.patch b/0086.patch
new file mode 100644
index 0000000..bd747d4
--- /dev/null
+++ b/0086.patch
@@ -0,0 +1,113 @@
+From b925f7f5d97259dd81e9d562fd1c6433e4b04f30 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Mon, 15 Jan 2018 09:04:12 +0100
+Subject: [PATCH] Merge pull request #347 from danimo/81cio_ignore
+
+81cio_ignore: handle cio_ignore commandline
+---
+ dracut.cmdline.7.asc                       | 15 +++++++++++
+ modules.d/81cio_ignore/module-setup.sh     | 40 ++++++++++++++++++++++++++++++
+ modules.d/81cio_ignore/parse-cio_accept.sh | 22 ++++++++++++++++
+ 3 files changed, 77 insertions(+)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index f95f4d63..8f83405e 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -1015,6 +1015,21 @@ ZIPL
+ rd.zipl=UUID=0fb28157-99e3-4395-adef-da3f7d44835a
+ --
+ 
++CIO_IGNORE
++~~~~~~~~~~
++**rd.cio_accept=**__<device-ids>__::
++    Remove the devices listed in <device-ids> from the default
++    cio_ignore kernel command-line settings.
++    <device-ids> is a list of comma-separated CCW device ids.
++    The default for this value is taken from the
++    _/boot/zipl/active_devices.txt_ file.
+++
++[listing]
++.Example
++--
++rd.cio_accept=0.0.0180,0.0.0800,0.0.0801,0.0.0802
++--
++
+ Plymouth Boot Splash
+ ~~~~~~~~~~~~~~~~~~~~
+ **plymouth.enable=0**::
+diff --git a/modules.d/81cio_ignore/module-setup.sh b/modules.d/81cio_ignore/module-setup.sh
+new file mode 100755
+index 00000000..37b414bf
+--- /dev/null
++++ b/modules.d/81cio_ignore/module-setup.sh
+@@ -0,0 +1,40 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++# called by dracut
++check() {
++# do not add this module by default
++    local arch=$(uname -m)
++    [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1
++    return 0
++}
++
++cmdline() {
++    local cio_accept
++
++    if [ -e /boot/zipl/active_devices.txt ] ; then
++        while read dev etc ; do
++            [ "$dev" = "#" -o "$dev" = "" ] && continue;
++            if [ -z "$cio_accept" ] ; then
++                cio_accept="$dev"
++            else
++                cio_accept="${cio_accept},${dev}"
++            fi
++        done < /boot/zipl/active_devices.txt
++    fi
++    if [ -n "$cio_accept" ] ; then
++	echo "rd.cio_accept=${cio_accept}"
++    fi
++}
++
++# called by dracut
++install() {
++    if [[ $hostonly_cmdline == "yes" ]] ; then
++        local _cio_accept=$(cmdline)
++        [[ $_cio_accept ]] && printf "%s\n" "$_cio_accept" >> "${initdir}/etc/cmdline.d/01cio_accept.conf"
++    fi
++
++    inst_hook cmdline 20 "$moddir/parse-cio_accept.sh"
++    inst_multiple cio_ignore
++}
+diff --git a/modules.d/81cio_ignore/parse-cio_accept.sh b/modules.d/81cio_ignore/parse-cio_accept.sh
+new file mode 100755
+index 00000000..4f899d25
+--- /dev/null
++++ b/modules.d/81cio_ignore/parse-cio_accept.sh
+@@ -0,0 +1,22 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++CIO_IGNORE=$(getarg cio_ignore)
++CIO_ACCEPT=$(getarg rd.cio_accept)
++
++if [ -z $CIO_IGNORE ] ; then
++    info "cio_ignored disabled on commandline"
++    return
++fi
++if [ -n "$CIO_ACCEPT" ] ; then
++    OLDIFS="$IFS"
++    IFS=,
++    set -- $CIO_ACCEPT
++    while (($# > 0)) ; do
++        info "Enabling device $1"
++        cio_ignore --remove $1
++        shift
++    done
++    IFS="$OLDIFS"
++fi
+
diff --git a/0087.patch b/0087.patch
new file mode 100644
index 0000000..24c1d2c
--- /dev/null
+++ b/0087.patch
@@ -0,0 +1,94 @@
+From 9ed6eb741f0bc0178167e7063751eb2bb4ac6de5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 15 Jan 2018 15:44:46 +0100
+Subject: [PATCH] dracut-functions.sh:check_vol_slaves() speedup LV -> VG name
+
+Instead of trying all /dev/mapper/* devices to match the maj:min, and
+get the VG name with "lvm lvs", use the dm/name from /sys and dmsetup
+splitname.
+
+This should speedup execution with lots of LVs.
+---
+ dracut-functions.sh | 64 ++++++++++++++++++++++++-----------------------------
+ 1 file changed, 29 insertions(+), 35 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index e99c4533..badd2a22 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -560,45 +560,39 @@ for_each_host_dev_and_slaves()
+ # but you cannot create the logical volume without the volume group.
+ # And the volume group might be bigger than the devices the LV needs.
+ check_vol_slaves() {
+-    local _lv _vg _pv _dm
+-    for i in /dev/mapper/*; do
+-        [[ $i == /dev/mapper/control ]] && continue
+-        _lv=$(get_maj_min $i)
+-        _dm=/sys/dev/block/$_lv/dm
+-        [[ -f $_dm/uuid  && $(<$_dm/uuid) =~ LVM-* ]] || continue
+-        if [[ $_lv = $2 ]]; then
+-            _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
+-            # strip space
+-            _vg="${_vg//[[:space:]]/}"
+-            if [[ $_vg ]]; then
+-                for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
+-                do
+-                    check_block_and_slaves $1 $(get_maj_min $_pv) && return 0
+-                done
+-            fi
+-        fi
+-    done
++    local _lv _vg _pv _dm _majmin
++    _majmin="$2"
++    _lv="/dev/block/$_majmin"
++    _dm=/sys/dev/block/$_majmin/dm
++    [[ -f $_dm/uuid  && $(<$_dm/uuid) =~ LVM-* ]] || return 1
++    _vg=$(dmsetup splitname --noheadings -o vg_name $(<"$_dm/name") )
++    # strip space
++    _vg="${_vg//[[:space:]]/}"
++    if [[ $_vg ]]; then
++        for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
++        do
++            check_block_and_slaves $1 $(get_maj_min $_pv) && return 0
++        done
++    fi
+     return 1
+ }
+ 
+ check_vol_slaves_all() {
+-    local _lv _vg _pv
+-    for i in /dev/mapper/*; do
+-        [[ $i == /dev/mapper/control ]] && continue
+-        _lv=$(get_maj_min $i)
+-        if [[ $_lv = $2 ]]; then
+-            _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
+-            # strip space
+-            _vg="${_vg//[[:space:]]/}"
+-            if [[ $_vg ]]; then
+-                for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
+-                do
+-                    check_block_and_slaves_all $1 $(get_maj_min $_pv)
+-                done
+-                return 0
+-            fi
+-        fi
+-    done
++    local _lv _vg _pv _majmin
++    _majmin="$2"
++    _lv="/dev/block/$_majmin"
++    _dm="/sys/dev/block/$_majmin/dm"
++    [[ -f $_dm/uuid  && $(<$_dm/uuid) =~ LVM-* ]] || return 1
++    _vg=$(dmsetup splitname --noheadings -o vg_name $(<"$_dm/name") )
++    # strip space
++    _vg="${_vg//[[:space:]]/}"
++    if [[ $_vg ]]; then
++        for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
++        do
++            check_block_and_slaves_all $1 $(get_maj_min $_pv)
++        done
++        return 0
++    fi
+     return 1
+ }
+ 
+
diff --git a/0088.patch b/0088.patch
new file mode 100644
index 0000000..316464a
--- /dev/null
+++ b/0088.patch
@@ -0,0 +1,45 @@
+From 33b560fcc2c77cef5a53839b39ac38b4c1ed978c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Tue, 16 Jan 2018 10:15:38 +0100
+Subject: [PATCH] Merge pull request #356 from yuwata/spec-s390-2
+
+spec: remove 81cio_ignore module from non-s390 arch
+---
+ AUTHORS     | 2 +-
+ dracut.spec | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/AUTHORS b/AUTHORS
+index 7be1072f..29670e42 100644
+--- a/AUTHORS
++++ b/AUTHORS
+@@ -69,7 +69,7 @@ Silvio Fricke <silvio.fricke@gmail.com>
+ Stig Telfer <stelfer@cray.com>
+ Vasiliy Tolstov <v.tolstov@selfip.ru>
+ Wim Muskee <wimmuskee@gmail.com>
+-yuwata <watanabe.yu+github@gmail.com>
++Yu Watanabe <watanabe.yu+github@gmail.com>
+ Alan Jenkins <alan-jenkins@tuffmail.co.uk>
+ Alan Pevec <apevec@redhat.com>
+ Alex Harpin <development@landsofshadow.co.uk>
+diff --git a/dracut.spec b/dracut.spec
+index 81a5098c..c52364b8 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -287,6 +287,7 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
+ %ifnarch s390 s390x
+ # remove architecture specific modules
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/80cms
++rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/81cio_ignore
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/91zipl
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd
+ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_mod
+@@ -421,6 +422,7 @@ rm -rf -- $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/95virtfs
+ %ifarch s390 s390x
+ %{dracutlibdir}/modules.d/80cms
++%{dracutlibdir}/modules.d/81cio_ignore
+ %{dracutlibdir}/modules.d/91zipl
+ %{dracutlibdir}/modules.d/95dasd
+ %{dracutlibdir}/modules.d/95dasd_mod
+
diff --git a/0089.patch b/0089.patch
new file mode 100644
index 0000000..8101f38
--- /dev/null
+++ b/0089.patch
@@ -0,0 +1,45 @@
+From bce6823a19b3fc0be50ff5c29c5ef90fa58b3430 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 16 Jan 2018 12:14:15 +0100
+Subject: [PATCH] lsinitrd: no more cat: write error: Broken pipe
+
+silence the cat
+---
+ lsinitrd.sh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/lsinitrd.sh b/lsinitrd.sh
+index f4088453..4892704a 100755
+--- a/lsinitrd.sh
++++ b/lsinitrd.sh
+@@ -130,7 +130,7 @@ extract_files()
+     for f in "${!filenames[@]}"; do
+         [[ $nofileinfo ]] || echo "initramfs:/$f"
+         [[ $nofileinfo ]] || echo "========================================================================"
+-        $CAT $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
++        $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
+         ((ret+=$?))
+         [[ $nofileinfo ]] || echo "========================================================================"
+         [[ $nofileinfo ]] || echo
+@@ -149,9 +149,9 @@ list_files()
+ {
+     echo "========================================================================"
+     if [ "$sorted" -eq 1 ]; then
+-        $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
++        $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --list | sort -n -k5
+     else
+-        $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9
++        $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --list | sort -k9
+     fi
+     ((ret+=$?))
+     echo "========================================================================"
+@@ -159,7 +159,7 @@ list_files()
+ 
+ unpack_files()
+ {
+-    $CAT "$image" | cpio -id --quiet $verbose
++    $CAT "$image" 2>/dev/null | cpio -id --quiet $verbose
+     ((ret+=$?))
+ }
+ 
+
diff --git a/0090.patch b/0090.patch
new file mode 100644
index 0000000..8d3b8a6
--- /dev/null
+++ b/0090.patch
@@ -0,0 +1,26 @@
+From 2a0da60ed18b33e39fe8e36864800bbaaa0448b4 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 16 Jan 2018 14:16:37 +0100
+Subject: [PATCH] configure: bump kmod version to >= 23
+
+for issue #357
+---
+ configure | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 23686805..d8985ad4 100755
+--- a/configure
++++ b/configure
+@@ -66,8 +66,8 @@ sbindir ?= ${sbindir:-${prefix}/sbin}
+ mandir ?= ${mandir:-${prefix}/share/man}
+ enable_documentation ?= ${enable_documentation:-yes}
+ bindir ?= ${bindir:-${prefix}/bin}
+-KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 15 ")
+-KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 15 ")
++KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
++KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")
+ EOF
+ 
+ {
+
diff --git a/0091.patch b/0091.patch
new file mode 100644
index 0000000..cd0a955
--- /dev/null
+++ b/0091.patch
@@ -0,0 +1,24 @@
+From bff3ee1936e8444bce3a43c53e7558949e099556 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Wed, 17 Jan 2018 09:50:54 +0100
+Subject: [PATCH] Merge pull request #361 from danimo/dm_multipath
+
+90multipath: load dm_multipath module during startup
+---
+ modules.d/90multipath/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 983f6f24..446dceb0 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -30,7 +30,7 @@ depends() {
+ 
+ # called by dracut
+ cmdline() {
+-    for m in scsi_dh_alua scsi_dh_emc scsi_dh_rdac ; do
++    for m in scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm_multipath; do
+         if grep -m 1 -q "$m" /proc/modules ; then
+             printf 'rd.driver.pre=%s ' "$m"
+         fi
+
diff --git a/0092.patch b/0092.patch
new file mode 100644
index 0000000..81aebe3
--- /dev/null
+++ b/0092.patch
@@ -0,0 +1,40 @@
+From 308c4066fee31b08d67413ce7920d63c8d05038e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Wed, 17 Jan 2018 09:51:54 +0100
+Subject: [PATCH] Merge pull request #359 from yuwata/kmod-version
+
+configure, kmod: bump kmod version to >= 23
+---
+ configure   | 4 ++--
+ dracut.spec | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure b/configure
+index d8985ad4..b55fb609 100755
+--- a/configure
++++ b/configure
+@@ -52,8 +52,8 @@ while (($# > 0)); do
+     shift
+ done
+ 
+-if ! ${PKG_CONFIG} --exists --print-errors " libkmod >= 15 "; then
+-    echo "dracut needs pkg-config and libkmod >= 15." >&2
++if ! ${PKG_CONFIG} --exists --print-errors " libkmod >= 23 "; then
++    echo "dracut needs pkg-config and libkmod >= 23." >&2
+     exit 1
+ fi
+ 
+diff --git a/dracut.spec b/dracut.spec
+index c52364b8..d547e847 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -40,7 +40,7 @@ Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar
+ Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
+ 
+ BuildRequires: bash git
+-BuildRequires: kmod-devel >= 15
++BuildRequires: kmod-devel >= 23
+ 
+ %if 0%{?fedora} || 0%{?rhel}
+ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
diff --git a/0093.patch b/0093.patch
new file mode 100644
index 0000000..5665e8e
--- /dev/null
+++ b/0093.patch
@@ -0,0 +1,38 @@
+From 83b19de168bf63698c53537bbb662242370fc17a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@hoyer.xyz>
+Date: Wed, 17 Jan 2018 18:32:52 +0100
+Subject: [PATCH] Merge pull request #363 from danimo/dracut_dmraid_use_udev
+
+0202-dracut_dmraid_use_udev
+---
+ modules.d/90dmraid/dmraid.sh       | 2 --
+ modules.d/90dmraid/module-setup.sh | 2 ++
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh
+index e7a09b07..edae9784 100755
+--- a/modules.d/90dmraid/dmraid.sh
++++ b/modules.d/90dmraid/dmraid.sh
+@@ -33,8 +33,6 @@ if [ -n "$DM_RAIDS" ] || getargbool 0 rd.auto; then
+                 if [ "${s##$r}" != "$s" ]; then
+                     info "Activating $s"
+                     dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
+-                    [ -e "/dev/mapper/$s" ] && kpartx -a "/dev/mapper/$s" 2>&1 | vinfo
+-                    udevsettle
+                 fi
+             done
+         done
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index e8de5f56..797a58e5 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -74,6 +74,8 @@ install() {
+ 
+     inst "$moddir/dmraid.sh" /sbin/dmraid_scan
+ 
++    inst_rules 66-kpartx.rules 67-kpartx-compat.rules
++
+     inst_libdir_file "libdmraid-events*.so*"
+ 
+     inst_rules "$moddir/61-dmraid-imsm.rules"
+
diff --git a/0094.patch b/0094.patch
new file mode 100644
index 0000000..ba494e7
--- /dev/null
+++ b/0094.patch
@@ -0,0 +1,38 @@
+From a54206722d075b773801f8663bd50b14cb4b56c6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 18 Jan 2018 08:55:34 +0100
+Subject: [PATCH] dracut.cmdline.7.asc: document rd.ccw and rd.znet
+
+rd.znet should be used instead of rd.ccw.
+
+Add more info about rd.znet.
+
+Fixes github issue 364
+---
+ dracut.cmdline.7.asc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 8f83405e..8f86efe0 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -811,6 +811,9 @@ rd.zfcp=0.0.4000
+ ZNET
+ ~~~~
+ **rd.znet=**__<nettype>__,__<subchannels>__,__<options>__::
++    The whole parameter is appended to /etc/ccw.conf, which is used on
++    RHEL/Fedora with ccw_init, which is called from udev for certain
++    devices on z-series.
+     rd.znet can be specified multiple times on the kernel command line.
+ +
+ [listing]
+@@ -1083,7 +1086,8 @@ their new replacement.
+ 
+ rdbreak:: rd.break
+ 
+-rd_CCW:: rd.ccw
++rd.ccw:: rd.znet
++rd_CCW:: rd.znet
+ 
+ rd_DASD_MOD:: rd.dasd
+ 
diff --git a/dracut.spec b/dracut.spec
index 0e57d66..c0f7139 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -14,7 +14,7 @@
 %define with_nbd 0
 %endif
 
-%define dist_free_release 64.git20180105
+%define dist_free_release 92.git20180118
 
 Name: dracut
 Version: 046
@@ -100,11 +100,39 @@ Patch60: 0063.patch
 Patch61: 0064.patch
 Patch62: 0065.patch
 Patch63: 0066.patch
+Patch64: 0067.patch
+Patch65: 0068.patch
+Patch66: 0069.patch
+Patch67: 0070.patch
+Patch68: 0071.patch
+Patch69: 0072.patch
+Patch70: 0073.patch
+Patch71: 0074.patch
+Patch72: 0075.patch
+Patch73: 0076.patch
+Patch74: 0077.patch
+Patch75: 0078.patch
+Patch76: 0079.patch
+Patch77: 0080.patch
+Patch78: 0081.patch
+Patch79: 0082.patch
+Patch80: 0083.patch
+Patch81: 0084.patch
+Patch82: 0085.patch
+Patch83: 0086.patch
+Patch84: 0087.patch
+Patch85: 0088.patch
+Patch86: 0089.patch
+Patch87: 0090.patch
+Patch88: 0091.patch
+Patch89: 0092.patch
+Patch90: 0093.patch
+Patch91: 0094.patch
 
 Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
 
 BuildRequires: bash git
-BuildRequires: kmod-devel >= 15
+BuildRequires: kmod-devel >= 23
 
 %if 0%{?fedora} || 0%{?rhel}
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -348,6 +376,20 @@ rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
 rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
 %endif
 
+%ifnarch s390 s390x
+# remove architecture specific modules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/80cms
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/81cio_ignore
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/91zipl
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_mod
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dasd_rules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95dcssblk
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95zfcp_rules
+rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/95znet
+%endif
+
 mkdir -p $RPM_BUILD_ROOT/boot/dracut
 mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
@@ -434,8 +476,7 @@ rm -rf -- $RPM_BUILD_ROOT
 %{_mandir}/man5/dracut.conf.5*
 %endif
 
-%if %{defined _unitdir}
-%else
+%if %{undefined _unitdir}
 %{dracutlibdir}/modules.d/00bootchart
 %endif
 %{dracutlibdir}/modules.d/00bash
@@ -450,7 +491,6 @@ rm -rf -- $RPM_BUILD_ROOT
 %{dracutlibdir}/modules.d/45url-lib
 %{dracutlibdir}/modules.d/50drm
 %{dracutlibdir}/modules.d/50plymouth
-%{dracutlibdir}/modules.d/80cms
 %{dracutlibdir}/modules.d/80lvmmerge
 %{dracutlibdir}/modules.d/90btrfs
 %{dracutlibdir}/modules.d/90crypt
@@ -465,29 +505,35 @@ rm -rf -- $RPM_BUILD_ROOT
 %{dracutlibdir}/modules.d/91crypt-gpg
 %{dracutlibdir}/modules.d/91crypt-loop
 %{dracutlibdir}/modules.d/95debug
+%{dracutlibdir}/modules.d/95fstab-sys
+%{dracutlibdir}/modules.d/95lunmask
 %{dracutlibdir}/modules.d/95resume
 %{dracutlibdir}/modules.d/95rootfs-block
+%{dracutlibdir}/modules.d/95terminfo
+%{dracutlibdir}/modules.d/95udev-rules
+%{dracutlibdir}/modules.d/95virtfs
+%ifarch s390 s390x
+%{dracutlibdir}/modules.d/80cms
+%{dracutlibdir}/modules.d/81cio_ignore
+%{dracutlibdir}/modules.d/91zipl
 %{dracutlibdir}/modules.d/95dasd
 %{dracutlibdir}/modules.d/95dasd_mod
 %{dracutlibdir}/modules.d/95dasd_rules
-%{dracutlibdir}/modules.d/95fstab-sys
-%{dracutlibdir}/modules.d/95lunmask
+%{dracutlibdir}/modules.d/95dcssblk
 %{dracutlibdir}/modules.d/95zfcp
 %{dracutlibdir}/modules.d/95zfcp_rules
-%{dracutlibdir}/modules.d/95terminfo
-%{dracutlibdir}/modules.d/95udev-rules
-%{dracutlibdir}/modules.d/95virtfs
+%endif
 %if %{undefined _unitdir}
 %{dracutlibdir}/modules.d/96securityfs
 %{dracutlibdir}/modules.d/97masterkey
 %{dracutlibdir}/modules.d/98integrity
 %endif
 %{dracutlibdir}/modules.d/97biosdevname
+%{dracutlibdir}/modules.d/98dracut-systemd
 %{dracutlibdir}/modules.d/98ecryptfs
 %{dracutlibdir}/modules.d/98pollcdrom
 %{dracutlibdir}/modules.d/98selinux
 %{dracutlibdir}/modules.d/98syslog
-%{dracutlibdir}/modules.d/98dracut-systemd
 %{dracutlibdir}/modules.d/98usrmount
 %{dracutlibdir}/modules.d/99base
 %{dracutlibdir}/modules.d/99fs-lib
@@ -521,17 +567,19 @@ rm -rf -- $RPM_BUILD_ROOT
 %defattr(-,root,root,0755)
 %{dracutlibdir}/modules.d/02systemd-networkd
 %{dracutlibdir}/modules.d/40network
+%{dracutlibdir}/modules.d/45ifcfg
 %{dracutlibdir}/modules.d/90kernel-network-modules
-%{dracutlibdir}/modules.d/95fcoe
-%{dracutlibdir}/modules.d/95iscsi
 %{dracutlibdir}/modules.d/90qemu-net
 %{dracutlibdir}/modules.d/95cifs
+%{dracutlibdir}/modules.d/95fcoe
+%{dracutlibdir}/modules.d/95fcoe-uefi
+%{dracutlibdir}/modules.d/95iscsi
 %{dracutlibdir}/modules.d/95nbd
 %{dracutlibdir}/modules.d/95nfs
 %{dracutlibdir}/modules.d/95ssh-client
-%{dracutlibdir}/modules.d/45ifcfg
+%ifarch s390 s390x
 %{dracutlibdir}/modules.d/95znet
-%{dracutlibdir}/modules.d/95fcoe-uefi
+%endif
 %{dracutlibdir}/modules.d/99uefi-lib
 
 %if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version}
@@ -582,6 +630,9 @@ rm -rf -- $RPM_BUILD_ROOT
 %endif
 
 %changelog
+* Thu Jan 18 2018 Harald Hoyer <harald@redhat.com> - 046-92
+- git snapshot
+
 * Fri Jan 05 2018 Harald Hoyer <harald@redhat.com> - 046-64
 - git snapshot