[dracut] dracut-040-78.git20141219
Harald Hoyer
harald at fedoraproject.org
Fri Dec 19 14:02:09 UTC 2014
commit b94732d29a51799cd7685dddc838d268667af6b3
Author: Harald Hoyer <harald at redhat.com>
Date: Fri Dec 19 15:01:39 2014 +0100
dracut-040-78.git20141219
- git snapshot
...sh-live-setup-the-images-in-run-initramfs.patch | 51 +++++
...mkinitrd-suse-Update-to-sles12-SUSE-state.patch | 195 ++++++++++++++++++++
0032-systemd-always-tries-to-load-autofs4.patch | 29 +++
0033-Fixup-mdraid-setup.patch | 29 +++
...dev-rules-Include-correct-sg3_utils-rules.patch | 29 +++
...multipath-install-correct-multipath-rules.patch | 33 ++++
0036-95iscsi-Autodetect-iSCSI-firmware.patch | 85 +++++++++
0037-95iscsi-Install-libgcc_s-library.patch | 29 +++
...-correct-iscsi_started-value-for-iSCSI-fi.patch | 35 ++++
...ip-one-set-of-quotes-when-calling-initque.patch | 52 +++++
0040-95iscsi-Fixup-bnx2i-offload-booting.patch | 67 +++++++
0041-95iscsi-More-empty-cmdline-fixes.patch | 45 +++++
...i-generate-commandline-for-software-iscsi.patch | 142 ++++++++++++++
....initiator-and-others-can-and-must-only-s.patch | 70 +++++++
...t-rd.timeout-to-modify-the-device-timeout.patch | 104 +++++++++++
...all-lvm-for-non-LVM-device-mapper-devices.patch | 35 ++++
...d-dracut-commandline-during-initramfs-bui.patch | 36 ++++
...ign-dev_unit_name-with-systemd-s-function.patch | 55 ++++++
...e-fallback-mount-unit-for-root-filesystem.patch | 68 +++++++
...ase-warn-on-invalid-command-for-initqueue.patch | 31 +++
0050-Handle-module-alias-properly.patch | 36 ++++
...ease-initqueue-timeout-in-non-systemd-cas.patch | 28 +++
0052-90lvm-Install-dm-snapshot-module.patch | 27 +++
...ogfile-logfile-option-and-create-it-if-ne.patch | 37 ++++
...t.sh-Avoid-duplicate-devices-in-host_devs.patch | 91 +++++++++
...ix-UUID-fstab-parsing-in-case-mount-optio.patch | 50 +++++
...e.asc-Remove-distro-specific-help-from-ma.patch | 47 +++++
....-and-root-nfs.-parameters-to-internal-dr.patch | 88 +++++++++
...scsi-parse-output-from-iscsiadm-correctly.patch | 44 +++++
...-not-stop-installing-drivers-if-one-fails.patch | 45 +++++
0060-95fcoe-update-fcoe-interface-check.patch | 36 ++++
...e-current-configuration-in-dracut-cmdline.patch | 94 ++++++++++
0062-95fcoe-skip-VLAN-devices-in-fcoe-up.patch | 36 ++++
0063-95fcoe-start-lldpad-separately.patch | 76 ++++++++
...e.conf-and-debug-module-example-with-SUSE.patch | 61 ++++++
...rk-add-missing-_arch-variable-declaration.patch | 25 +++
0066-99base-Add-chown-binary.patch | 29 +++
0067-90kernel-modules-install-scsi_dh_alua.patch | 28 +++
...ix-non-export-of-journal-dev-boot-options.patch | 30 +++
...-root-boot-param-for-hostonly-cmdline-cas.patch | 48 +++++
...e-lots-of-empty-cmdline-files-for-hostonl.patch | 94 ++++++++++
...ock-Correctly-terminate-commandline-param.patch | 59 ++++++
...Only-complain-of-missing-binary-in-hoston.patch | 39 ++++
...tions.sh-for-module-handling-strip-all-.k.patch | 72 +++++++
...otfs-block-Correctly-terminate-commandlin.patch | 72 +++++++
...-use-of-systemd-hibernate-resume-if-exist.patch | 31 +++
...systemd-add-systemd-journald-audit.socket.patch | 29 +++
...t-fail-at-copying-files-when-including-di.patch | 46 +++++
dracut.spec | 53 +++++-
49 files changed, 2670 insertions(+), 1 deletions(-)
---
diff --git a/0030-dmsquash-live-setup-the-images-in-run-initramfs.patch b/0030-dmsquash-live-setup-the-images-in-run-initramfs.patch
new file mode 100644
index 0000000..8cf16e5
--- /dev/null
+++ b/0030-dmsquash-live-setup-the-images-in-run-initramfs.patch
@@ -0,0 +1,51 @@
+From 1f8abe81a9fca0f44c63bf3bd30a7f7fbec28642 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 16 Dec 2014 12:53:18 +0100
+Subject: [PATCH] dmsquash-live: setup the images in /run/initramfs
+
+We want to cleanup / after switch_root. Placing the loop files in /
+works, but it is more sane to put them in /run/initramfs
+---
+ modules.d/90dmsquash-live/dmsquash-live-root.sh | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+index d921f0c..6e504a6 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
++++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
+@@ -162,9 +162,9 @@ fi
+
+ if [ -n "$OSMINSQFS" ]; then
+ # decompress the delta data
+- dd if=$OSMINSQFS of=/osmin.img 2> /dev/null
++ dd if=$OSMINSQFS of=/run/initramfs/osmin.img 2> /dev/null
+ OSMIN_SQUASHED_LOOPDEV=$( losetup -f )
+- losetup -r $OSMIN_SQUASHED_LOOPDEV /osmin.img
++ losetup -r $OSMIN_SQUASHED_LOOPDEV /run/initramfs/osmin.img
+ mkdir -m 0755 -p /run/initramfs/squashfs.osmin
+ mount -n -t squashfs -o ro $OSMIN_SQUASHED_LOOPDEV /run/initramfs/squashfs.osmin
+ OSMIN_LOOPDEV=$( losetup -f )
+@@ -185,8 +185,8 @@ if [ -n "$FSIMG" ] ; then
+ if [ -n "$writable_fsimg" ] ; then
+ # mount the provided fileysstem read/write
+ echo "Unpacking live filesystem (may take some time)"
+- unpack_archive $FSIMG /tmp/fsimg/
+- losetup $BASE_LOOPDEV /tmp/fsimg/rootfs.img
++ unpack_archive $FSIMG /run/initramfs/fsimg/
++ losetup $BASE_LOOPDEV /run/initramfs/fsimg/rootfs.img
+ echo "0 $( blockdev --getsize $BASE_LOOPDEV ) linear $BASE_LOOPDEV 0" | dmsetup create live-rw
+ else
+ # mount the filesystem read-only and add a dm snapshot for writes
+@@ -204,10 +204,10 @@ if [ -e "$SQUASHED" ] ; then
+ if [ -n "$live_ram" ] ; then
+ echo "Copying live image to RAM..."
+ echo "(this may take a few minutes)"
+- dd if=$SQUASHED of=/squashed.img bs=512 2> /dev/null
++ dd if=$SQUASHED of=/run/initramfs/squashed.img bs=512 2> /dev/null
+ umount -n /run/initramfs/live
+ echo "Done copying live image to RAM."
+- SQUASHED="/squashed.img"
++ SQUASHED="/run/initramfs/squashed.img"
+ fi
+
+ SQUASHED_LOOPDEV=$( losetup -f )
diff --git a/0031-mkinitrd-suse-Update-to-sles12-SUSE-state.patch b/0031-mkinitrd-suse-Update-to-sles12-SUSE-state.patch
new file mode 100644
index 0000000..74754c9
--- /dev/null
+++ b/0031-mkinitrd-suse-Update-to-sles12-SUSE-state.patch
@@ -0,0 +1,195 @@
+From 552c37e1563eccbc25968064b087232b9eaea987 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:45:52 +0100
+Subject: [PATCH] mkinitrd-suse: Update to sles12 SUSE state
+
+Incorporates these patches:
+- 0013 mkinitrd-suse: do not update bootloader if no kernel was found
+ bnc#858268
+- 0018 mkinitrd-suse: Fix whitespaces when adding drivers
+- 0032 mkinitrd-suse.sh: Use '--hostonly' and '--hostonly-cmdline' correctly
+ bnc#874000,bnc#874905,bnc#874363
+- 0039 Remove --force parameter from mkinitrd
+- 0041 mkinitd-suse: remove --hostonly and --hostonly-cmdline
+ Should be set via configuration files, not in the script itself.
+- 0051 mkinitrd-suse: add 'update bootloader' message
+- 0120 mkinitrd-suse.sh: Bail out with exit 1 if initrd cannot be generated
+ bnc#886630
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ mkinitrd-suse.8.asc | 7 +++---
+ mkinitrd-suse.sh | 66 +++++++++++++++++++++++++----------------------------
+ 2 files changed, 34 insertions(+), 39 deletions(-)
+
+diff --git a/mkinitrd-suse.8.asc b/mkinitrd-suse.8.asc
+index 9eb8fc9..cdb8e3a 100644
+--- a/mkinitrd-suse.8.asc
++++ b/mkinitrd-suse.8.asc
+@@ -76,7 +76,9 @@ OPTIONS
+
+ **-A**::
+ Create a so called "monster initrd" which includes all available
+- features and modules.
++ features and modules. This calls dracut with --no-hostonly and
++ --no-hostonly-cmdline parameters internally, instead of the default
++ --hostonly and --hostonly-cmdline.
+
+ **-v, --verbose**::
+ increase verbosity level
+@@ -85,9 +87,6 @@ OPTIONS
+ Disable logging to _/var/log/YaST2/mkinitrd.log_. This is useful for
+ testing if you don’t want to clutter the system log.
+
+-**--force**::
+- overwrite existing initramfs file.
+-
+ **--help**::
+ print a help message and exit.
+
+diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh
+index 23dc262..af42cbe 100755
+--- a/mkinitrd-suse.sh
++++ b/mkinitrd-suse.sh
+@@ -20,8 +20,6 @@
+
+ boot_dir="/boot"
+ quiet=0
+-host_only=1
+-force=0
+ logfile=/var/log/YaST2/mkinitrd.log
+ dracut_cmd=dracut
+
+@@ -68,10 +66,7 @@ usage () {
+ $cmd " -j device Journal device"
+ $cmd " -D interface Run dhcp on the specified interface."
+ $cmd " -I interface Configure the specified interface statically."
+- $cmd " -a acpi_dsdt Attach compiled ACPI DSDT (Differentiated"
+- $cmd " System Description Table) to initrd. This"
+- $cmd " replaces the DSDT of the BIOS. Defaults to"
+- $cmd " the ACPI_DSDT variable in /etc/sysconfig/kernel."
++ $cmd " -a acpi_dsdt Obsolete, do not use."
+ $cmd " -s size Add splash animation and bootscreen to initrd."
+
+ [[ $1 = '-n' ]] && exit 0
+@@ -204,8 +199,6 @@ default_kernel_images() {
+ for initrd_image in $initrd_images;do
+ targets="$targets $initrd_image"
+ done
+- host_only=1
+- force=1
+ }
+
+ while (($# > 0)); do
+@@ -218,8 +211,6 @@ while (($# > 0)); do
+ for kernel_image in $kernel_images;do
+ kernels="$kernels ${kernel_image#*-}"
+ done
+- host_only=1
+- force=1
+ ;;
+ -i) read_arg initrd_images "$@" || shift $?
+ for initrd_image in $initrd_images;do
+@@ -261,7 +252,7 @@ while (($# > 0)); do
+ dracut_cmdline="${dracut_cmdline} ip=$(ipconfig $static_if)":
+ ;;
+ -a) read_arg acpi_dsdt "$@" || shift $?
+- echo "mkinitrd: custom DSDT not yet supported"
++ echo "Obsolete -a param, use acpi_table_dir= and acpi_override= variables in /etc/dracut.conf.d/"
+ exit 1
+ ;;
+ -s) read_arg boot_splash "$@" || shift $?
+@@ -275,7 +266,6 @@ while (($# > 0)); do
+ --version|-R)
+ echo "mkinitrd: dracut compatibility wrapper"
+ exit 0;;
+- --force) force=1;;
+ --quiet|-q) quiet=1;;
+ *) if [[ ! $targets ]]; then
+ targets=$1
+@@ -289,15 +279,17 @@ while (($# > 0)); do
+ done
+
+ [[ $targets && $kernels ]] || default_kernel_images
+-[[ $targets && $kernels ]] || (error "No kernel found in $boot_dir" && usage)
++if [[ ! $targets || ! $kernels ]];then
++ error "No kernel found in $boot_dir"
++fi
+
+ # We can have several targets/kernels, transform the list to an array
+ targets=( $targets )
+ [[ $kernels ]] && kernels=( $kernels )
+
+ [[ $logfile ]] && dracut_args="${dracut_args} --logfile $logfile"
+-[[ $host_only == 1 ]] && dracut_args="${dracut_args} --hostonly"
+-[[ $force == 1 ]] && dracut_args="${dracut_args} --force"
++dracut_args="${dracut_args} --force"
++
+ [[ $dracut_cmdline ]] && dracut_args="${dracut_args} --kernel-cmdline ${dracut_cmdline}"
+ [ -z "$(type -p update-bootloader)" ] && skip_update_bootloader=1
+
+@@ -306,11 +298,9 @@ if [ -f /etc/sysconfig/kernel ] ; then
+ . /etc/sysconfig/kernel
+ fi
+ [[ $module_list ]] || module_list="${INITRD_MODULES}"
+-basicmodules="$basicmodules ${module_list}"
+ [[ $domu_module_list ]] || domu_module_list="${DOMU_INITRD_MODULES}"
+-[[ $acpi_dsdt ]] || acpi_dsdt="${ACPI_DSDT}"
++shopt -s extglob
+
+-echo "Creating: target|kernel|dracut args|basicmodules "
+ for ((i=0 ; $i<${#targets[@]} ; i++)); do
+
+ if [[ $img_vers ]];then
+@@ -320,28 +310,34 @@ for ((i=0 ; $i<${#targets[@]} ; i++)); do
+ fi
+ kernel="${kernels[$i]}"
+
++ if is_xen_kernel $kernel $rootfs ; then
++ modules_all="${module_list} ${domu_module_list}"
++ else
++ modules_all="${module_list}"
++ fi
++
++ # Remove leading and trailing spaces needs (set above): shopt -s extglob
++ modules_all=${modules_all%%+([[:space:]])}
++ modules_all=${modules_all##+([[:space:]])}
++
++ echo "Creating initrd: $target"
++
+ # Duplicate code: No way found how to redirect output based on $quiet
+ if [[ $quiet == 1 ]];then
+- echo "$target|$kernel|$dracut_args|$basicmodules"
+- if is_xen_kernel $kernel $rootfs ; then
+- basicmodules="$basicmodules ${domu_module_list}"
+- fi
+- if [[ $basicmodules ]]; then
+- $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \
+- "$kernel" &>/dev/null
+- else
++ # Duplicate code: --force-drivers must not be called with empty string
++ # -> dracut bug workarounded ugly, because of complex whitespace
++ # expansion magics
++ if [ -n "${modules_all}" ];then
++ $dracut_cmd $dracut_args --force-drivers "${modules_all}" "$target" "$kernel" &>/dev/null
++ else
+ $dracut_cmd $dracut_args "$target" "$kernel" &>/dev/null
+- fi
++ fi
+ else
+- if is_xen_kernel $kernel $rootfs ; then
+- basicmodules="$basicmodules ${domu_module_list}"
+- fi
+- if [[ $basicmodules ]]; then
+- $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \
+- "$kernel"
+- else
++ if [ -n "${modules_all}" ];then
++ $dracut_cmd $dracut_args --force-drivers "${modules_all}" "$target" "$kernel"
++ else
+ $dracut_cmd $dracut_args "$target" "$kernel"
+- fi
++ fi
+ fi
+ done
+
diff --git a/0032-systemd-always-tries-to-load-autofs4.patch b/0032-systemd-always-tries-to-load-autofs4.patch
new file mode 100644
index 0000000..174056e
--- /dev/null
+++ b/0032-systemd-always-tries-to-load-autofs4.patch
@@ -0,0 +1,29 @@
+From ae8e6ed5afc1a58c40a2f6b4ec668545dc4841fe Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:45:53 +0100
+Subject: [PATCH] systemd always tries to load autofs4
+
+During boot systemd tries to load autofs4, but dracut will only
+add it if it's loaded by the time dracut is run.
+Modify dracut to always load autofs4.
+
+References: bnc#869411
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/98systemd/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index 8052984..53e07a2 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -18,7 +18,7 @@ depends() {
+ }
+
+ installkernel() {
+- instmods autofs4 ipv6
++ hostonly='' instmods autofs4 ipv6
+ instmods -s efivarfs
+ }
+
diff --git a/0033-Fixup-mdraid-setup.patch b/0033-Fixup-mdraid-setup.patch
new file mode 100644
index 0000000..c2045b9
--- /dev/null
+++ b/0033-Fixup-mdraid-setup.patch
@@ -0,0 +1,29 @@
+From 36894743e3105e4831a2d04fc5671c16fc5900c2 Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb at suse.de>
+Date: Thu, 11 Dec 2014 15:45:54 +0100
+Subject: [PATCH] Fixup mdraid setup
+
+This sed script to edit 64-md-raid-assemble.rules needs to
+be adjusted for latest mdadm
+
+References: bnc#866660
+
+Signed-off-by: NeilBrown <neilb at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/90mdraid/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index bc4c514..ce3394a 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -86,7 +86,7 @@ install() {
+ for rule in 64-md-raid.rules 64-md-raid-assembly.rules; do
+ rule_path="${initdir}${udevdir}/rules.d/${rule}"
+ [ -f "${rule_path}" ] && sed -i -r \
+- -e '/RUN\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(\$env\{DEVNAME\}|\$tempnode|\$devnode)/d' \
++ -e '/(RUN|IMPORT\{program\})\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(--export )?(\$env\{DEVNAME\}|\$tempnode|\$devnode)/d' \
+ "${rule_path}"
+ done
+
diff --git a/0034-95udev-rules-Include-correct-sg3_utils-rules.patch b/0034-95udev-rules-Include-correct-sg3_utils-rules.patch
new file mode 100644
index 0000000..e217140
--- /dev/null
+++ b/0034-95udev-rules-Include-correct-sg3_utils-rules.patch
@@ -0,0 +1,29 @@
+From 15eed1e4f1d3b72a6112cce686f00d0c97ec616d Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:45:55 +0100
+Subject: [PATCH] 95udev-rules: Include correct sg3_utils rules
+
+sg3_utils now provides two rules 55-scsi-sg3_id.rules and
+58-scsi-sg3_symlink.rules, which need to be included instead
+of the older 59-scsi-sg3_utils.rules.
+
+References: bnc#873151
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95udev-rules/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 9d6f960..e50709d 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -31,6 +31,7 @@ install() {
+ 50-udev.rules 95-late.rules \
+ 50-firmware.rules \
+ 59-scsi-sg3_utils.rules \
++ 55-scsi-sg3_id.rules 58-scsi-sg3_symlink.rules \
+ 70-uaccess.rules 71-seat.rules 73-seat-late.rules \
+ 75-net-description.rules \
+ 80-net-name-slot.rules 80-net-setup-link.rules \
diff --git a/0035-90multipath-install-correct-multipath-rules.patch b/0035-90multipath-install-correct-multipath-rules.patch
new file mode 100644
index 0000000..fa4a29b
--- /dev/null
+++ b/0035-90multipath-install-correct-multipath-rules.patch
@@ -0,0 +1,33 @@
+From 8f4ee8c71b05948c1b65f7cde49c0a4236d91f03 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:45:56 +0100
+Subject: [PATCH] 90multipath: install correct multipath rules
+
+The multipath and kpartx rules have different numbers in SUSE.
+
+The 11-dm-mpath.rules file had been missing, causing
+blacklisting to not work properly.
+
+References: bnc#873151, bnc#872662, bnc#883149
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/90multipath/module-setup.sh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index a8700f4..0f88f82 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -114,6 +114,9 @@ install() {
+
+ inst_hook cleanup 80 "$moddir/multipathd-needshutdown.sh"
+
+- inst_rules 40-multipath.rules 62-multipath.rules 65-multipath.rules 66-kpartx.rules
++ inst_rules 40-multipath.rules 56-multipath.rules \
++ 62-multipath.rules 65-multipath.rules \
++ 66-kpartx.rules 67-kpartx-compat.rules \
++ 11-dm-mpath.rules
+ }
+
diff --git a/0036-95iscsi-Autodetect-iSCSI-firmware.patch b/0036-95iscsi-Autodetect-iSCSI-firmware.patch
new file mode 100644
index 0000000..b3a9f07
--- /dev/null
+++ b/0036-95iscsi-Autodetect-iSCSI-firmware.patch
@@ -0,0 +1,85 @@
+From 442abd16d2cfc6e006738a7373dc14445d22448f Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:45:57 +0100
+Subject: [PATCH] 95iscsi: Autodetect iSCSI firmware
+
+Some iSCSI initiator present firmware information in
+/sys/firmware/ibft or /sys/firmware/iscsi_bootX
+
+Whenever we detect one of those directories we should assume
+that the iSCSI devices should be activated.
+
+Also incorporates SUSE patches:
+0049:
+95iscsi: Use 'ip=ibft' for ibft autoconfiguration
+
+For iBFT autoconfiguration we should be setting 'ip=ibft'
+instead of rd.neednet. This should instruct dracut to only
+enable the iBFT interfaces and leave the rest alone.
+
+References: bnc#879038
+
+0054:
+95iscsi: update commandline printing
+
+dracut has a separate callout 'cmdline' which should be used
+for printing out the generated commandline.
+
+Signed-off-by: Pavel Wieczorkiewicz <pwieczorkiewicz at suse.com>
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 8b42d3e..5d2a39b 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -28,6 +28,21 @@ check() {
+ return 0
+ }
+
++install_ibft() {
++ # When iBFT / iscsi_boot is detected:
++ # - Use 'ip=ibft' to set up iBFT network interface
++ # - specify firmware booting cmdline parameter
++
++ for d in /sys/firmware/* ; do
++ if [ -d ${d}/initiator ] ; then
++ if [ ${d##*/} = "ibft" ] ; then
++ echo -n "ip=ibft "
++ fi
++ echo -n "rd.iscsi.firmware=1"
++ fi
++ done
++}
++
+ # called by dracut
+ depends() {
+ echo network rootfs-block
+@@ -37,6 +52,12 @@ depends() {
+ installkernel() {
+ local _arch=$(uname -m)
+
++ # Detect iBFT and perform mandatory steps
++ if [[ $hostonly_cmdline == "yes" ]] ; then
++ install_ibft > "${initdir}/etc/cmdline.d/95iscsi.conf"
++ echo >> "${initdir}/etc/cmdline.d/95iscsi.conf"
++ fi
++
+ instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi
+ hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs
+ iscsi_module_filter() {
+@@ -77,6 +98,11 @@ installkernel() {
+ }
+
+ # called by dracut
++cmdline() {
++ install_ibft
++}
++
++# called by dracut
+ install() {
+ inst_multiple umount iscsistart hostname iscsi-iname
+ inst_multiple -o iscsiuio
diff --git a/0037-95iscsi-Install-libgcc_s-library.patch b/0037-95iscsi-Install-libgcc_s-library.patch
new file mode 100644
index 0000000..a4b5ad4
--- /dev/null
+++ b/0037-95iscsi-Install-libgcc_s-library.patch
@@ -0,0 +1,29 @@
+From 4aad3438f7e9fcd58f6c65d2d0d52c0a0db1f00a Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:45:58 +0100
+Subject: [PATCH] 95iscsi: Install libgcc_s library
+
+iscsiuio is using pthread, which requires libgcc_s for
+pthread_cancel to work.
+Without this library iscsiuio will crash with SIGABRT.
+
+References: bnc#881692
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 5d2a39b..3641fb8 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -106,6 +106,7 @@ cmdline() {
+ install() {
+ inst_multiple umount iscsistart hostname iscsi-iname
+ inst_multiple -o iscsiuio
++ inst_libdir_file 'libgcc_s.so*'
+ inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
+ inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
+ inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
diff --git a/0038-95iscsi-Set-correct-iscsi_started-value-for-iSCSI-fi.patch b/0038-95iscsi-Set-correct-iscsi_started-value-for-iSCSI-fi.patch
new file mode 100644
index 0000000..a962e45
--- /dev/null
+++ b/0038-95iscsi-Set-correct-iscsi_started-value-for-iSCSI-fi.patch
@@ -0,0 +1,35 @@
+From a3a2266046299ef4cfed48ce3a2e6bb573ee0dc7 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:45:59 +0100
+Subject: [PATCH] 95iscsi: Set correct iscsi_started value for iSCSI firmware
+
+When iSCSI firmware booting is selected we should not rely on
+'netroot' or 'iscsiroot' variables to be set.
+
+References: bnc#873448
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/parse-iscsiroot.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index ca57668..85c3027 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -90,8 +90,12 @@ if [ -n "$netroot" ] && [ "$root" != "/dev/root" ] && [ "$root" != "dhcp" ]; the
+ fi
+ fi
+
+-netroot_enc=$(str_replace "$netroot" '/' '\2f')
+-echo "[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh
++if [ -n "$iscsi_firmware" ] ; then
++ echo "[ -f '/tmp/iscsistarted-firmware' ]" > $hookdir/initqueue/finished/iscsi_started.sh
++else
++ netroot_enc=$(str_replace "$netroot" '/' '\2f')
++ echo "[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh
++fi
+
+ # Done, all good!
+ rootok=1
diff --git a/0039-95iscsi-strip-one-set-of-quotes-when-calling-initque.patch b/0039-95iscsi-strip-one-set-of-quotes-when-calling-initque.patch
new file mode 100644
index 0000000..13d8bbb
--- /dev/null
+++ b/0039-95iscsi-strip-one-set-of-quotes-when-calling-initque.patch
@@ -0,0 +1,52 @@
+From 9ebf4a5d3c1b47d7e681b2331cf062920613bf2e Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:00 +0100
+Subject: [PATCH] 95iscsi: strip one set of quotes when calling initqueue
+
+The bad initqueue parameter passing is already addressed by git commit:
+commit bb8c16d12178373f17553294603ff5187e318b51
+and
+commit 486a8f33e2edaf249e3a09c98a910094e201cf9e
+
+However this appraoch is slightly different:
+"$netroot" instead of "'$netroot'", etc.
+
+initqueue will process the arguments, assuming the first non-option
+argument to be the program to be executed. Putting the entire
+commandline into this argument confuses both, initqueue and the
+program in question.
+
+References: bnc#879038
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/parse-iscsiroot.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index 85c3027..37e46ad 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -59,10 +59,10 @@ fi
+
+ # iscsi_firmware does not need argument checking
+ if [ -n "$iscsi_firmware" ] ; then
+- netroot=${netroot:-iscsi:}
++ [ -z "$netroot" ] && netroot=iscsi:
+ modprobe -q iscsi_boot_sysfs 2>/dev/null
+ modprobe -q iscsi_ibft
+- initqueue --onetime --timeout /sbin/iscsiroot dummy "'$netroot'" "'$NEWROOT'"
++ initqueue --onetime --timeout /sbin/iscsiroot dummy "$netroot" "$NEWROOT"
+ fi
+
+ # If it's not iscsi we don't continue
+@@ -86,7 +86,7 @@ fi
+
+ if [ -n "$netroot" ] && [ "$root" != "/dev/root" ] && [ "$root" != "dhcp" ]; then
+ if ! getargbool 1 rd.neednet >/dev/null || ! getarg "ip="; then
+- initqueue --onetime --settled /sbin/iscsiroot dummy "'$netroot'" "'$NEWROOT'"
++ initqueue --onetime --settled /sbin/iscsiroot dummy "$netroot" "$NEWROOT"
+ fi
+ fi
+
diff --git a/0040-95iscsi-Fixup-bnx2i-offload-booting.patch b/0040-95iscsi-Fixup-bnx2i-offload-booting.patch
new file mode 100644
index 0000000..84094cc
--- /dev/null
+++ b/0040-95iscsi-Fixup-bnx2i-offload-booting.patch
@@ -0,0 +1,67 @@
+From 2e34f3809524d5a69e06a51e13bb3f41b300b4ed Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:01 +0100
+Subject: [PATCH] 95iscsi: Fixup bnx2i offload booting
+
+bnx2i is using a separate iSCSI offload engine with a separate
+MAC address. As a result, the iBFT information is displaying
+a MAC address which does not relate to any MAC address from
+the network interfaces.
+In addition, the iSCSI offload engine works independently on
+the NIC, so we do not need to enable the NIC for iSCSI offload
+to work.
+This patch modifies the automatic iBFT detection to not set
+the 'ip=ibft' flag when bnx2i offload is detected.
+
+References: bnc#855747
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 26 +++++++++++++++++++++++++-
+ 1 file changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 3641fb8..d30e64f 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -28,14 +28,38 @@ check() {
+ return 0
+ }
+
++get_ibft_mod() {
++ local ibft_mac=$1
++ # Return the iSCSI offload module for a given MAC address
++ iscsiadm -m iface | while read iface_name iface_desc ; do
++ IFS=$','
++ set -- $iface_desc
++ if [ "$ibft_mac" = "$2" ] ; then
++ echo $1
++ return 0
++ fi
++ unset IFS
++ done
++}
++
+ install_ibft() {
+ # When iBFT / iscsi_boot is detected:
+ # - Use 'ip=ibft' to set up iBFT network interface
++ # Note: bnx2i is using a different MAC address of iSCSI offloading
++ # so the 'ip=ibft' parameter must not be set
+ # - specify firmware booting cmdline parameter
+
+ for d in /sys/firmware/* ; do
++ if [ -d ${d}/ethernet0 ] ; then
++ read ibft_mac < ${d}/ethernet0/mac
++ ibft_mod=$(get_ibft_mod $ibft_mac)
++ fi
++ if [ -z "$ibft_mod" ] && [ -d ${d}/ethernet1 ] ; then
++ read ibft_mac < ${d}/ethernet1/mac
++ ibft_mod=$(get_ibft_mod $ibft_mac)
++ fi
+ if [ -d ${d}/initiator ] ; then
+- if [ ${d##*/} = "ibft" ] ; then
++ if [ ${d##*/} = "ibft" ] && [ "$ibft_mod" != "bnx2i" ] ; then
+ echo -n "ip=ibft "
+ fi
+ echo -n "rd.iscsi.firmware=1"
diff --git a/0041-95iscsi-More-empty-cmdline-fixes.patch b/0041-95iscsi-More-empty-cmdline-fixes.patch
new file mode 100644
index 0000000..3a455e7
--- /dev/null
+++ b/0041-95iscsi-More-empty-cmdline-fixes.patch
@@ -0,0 +1,45 @@
+From 54e28d79b9f67b8be349ae97f92dde2c6c118e11 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:02 +0100
+Subject: [PATCH] 95iscsi: More empty cmdline fixes
+
+This fixes up some 95iscsi/module-setup.sh which might print out empty
+commandline files.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index d30e64f..29bba82 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -76,12 +76,6 @@ depends() {
+ installkernel() {
+ local _arch=$(uname -m)
+
+- # Detect iBFT and perform mandatory steps
+- if [[ $hostonly_cmdline == "yes" ]] ; then
+- install_ibft > "${initdir}/etc/cmdline.d/95iscsi.conf"
+- echo >> "${initdir}/etc/cmdline.d/95iscsi.conf"
+- fi
+-
+ instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi
+ hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs
+ iscsi_module_filter() {
+@@ -131,6 +125,13 @@ install() {
+ inst_multiple umount iscsistart hostname iscsi-iname
+ inst_multiple -o iscsiuio
+ inst_libdir_file 'libgcc_s.so*'
++
++ # Detect iBFT and perform mandatory steps
++ if [[ $hostonly_cmdline == "yes" ]] ; then
++ local _ibftconf=$(install_ibft)
++ [[ $_ibftconf ]] && printf "%s\n" "$_ibftconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
++ fi
++
+ inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
+ inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
+ inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
diff --git a/0042-95iscsi-generate-commandline-for-software-iscsi.patch b/0042-95iscsi-generate-commandline-for-software-iscsi.patch
new file mode 100644
index 0000000..647268a
--- /dev/null
+++ b/0042-95iscsi-generate-commandline-for-software-iscsi.patch
@@ -0,0 +1,142 @@
+From c4d8793c67cb75804dfb8b14985e125a22f212eb Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:03 +0100
+Subject: [PATCH] 95iscsi: generate commandline for software iscsi
+
+When installing on an software iscsi root we need to generate
+the correct commandline, otherwise the system cannot boot.
+
+References: bnc#880108
+Patch: 0093
+
+When using software iscsi we should be using the existing
+configuration from the system for the time being.
+
+References: bnc#884768
+Patch: 0095
+
+Avoid bad ip route call on empty address
+Patch: 0143
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 91 +++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 88 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 29bba82..cd6cb4b 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -67,6 +67,84 @@ install_ibft() {
+ done
+ }
+
++install_iscsiroot() {
++ local devpath=$1
++ local scsi_path iscsi_lun session c d conn
++ local iscsi_session iscsi_address iscsi_port iscsi_targetname iscsi_tpgt
++
++ scsi_path=${devpath%%/block*}
++ [ "$scsi_path" = "$devpath" ] && return 1
++ iscsi_lun=${scsi_path##*:}
++ [ "$iscsi_lun" = "$scsi_path" ] && return 1
++ session=${devpath%%/target*}
++ [ "$session" = "$devpath" ] && return 1
++ iscsi_session=${session##*/}
++ [ "$iscsi_session" = "$session" ] && return 1
++
++ for d in ${session}/* ; do
++ case $d in
++ *connection*)
++ c=${d##*/}
++ conn=${d}/iscsi_connection/${c}
++ if [ -d ${conn} ] ; then
++ iscsi_address=$(cat ${conn}/persistent_address)
++ iscsi_port=$(cat ${conn}/persistent_port)
++ fi
++ ;;
++ *session)
++ if [ -d ${d}/${iscsi_session} ] ; then
++ iscsi_initiator=$(cat ${d}/${iscsi_session}/initiatorname)
++ iscsi_targetname=$(cat ${d}/${iscsi_session}/targetname)
++ fi
++ ;;
++ esac
++ done
++
++ [ -z "$iscsi_address" ] && return
++ local_address=$(ip -o route get to $iscsi_address | sed -n 's/.*src \([0-9a-f.:]*\).*/\1/p')
++ ifname=$(ip -o route get to $iscsi_address | sed -n 's/.*dev \([^ ]*\).*/\1/p')
++ printf 'ip=%s:static ' ${ifname}
++
++ if [ -e /sys/class/net/$ifname/address ] ; then
++ ifmac=$(cat /sys/class/net/$ifname/address)
++ printf 'ifname=%s:%s ' ${ifname} ${ifmac}
++ fi
++
++ if [ -n "$iscsi_address" -a -n "$iscsi_targetname" ] ; then
++ if [ -n "$iscsi_port" -a "$iscsi_port" -eq 3260 ] ; then
++ iscsi_port=
++ fi
++ if [ -n "$iscsi_lun" -a "$iscsi_lun" -eq 0 ] ; then
++ iscsi_lun=
++ fi
++ # In IPv6 case rd.iscsi.initatior= must pass address in [] brackets
++ case "$iscsi_address" in
++ *:*)
++ iscsi_address="[$iscsi_address]"
++ ;;
++ esac
++ echo "rd.iscsi.initiator=${iscsi_initiator} netroot=iscsi:${iscsi_address}::${iscsi_port}:${iscsi_lun}:${iscsi_targetname}"
++ fi
++ return 0
++}
++
++
++install_softiscsi() {
++ [ -d /sys/firmware/ibft ] && return 0
++
++ is_softiscsi() {
++ local _dev=$1
++ local iscsi_dev
++
++ [[ -L "/sys/dev/block/$_dev" ]] || return
++ iscsi_dev=$(cd -P /sys/dev/block/$_dev; echo $PWD)
++ install_iscsiroot $iscsi_dev
++ }
++
++ for_each_host_dev_and_slaves_all is_softiscsi || return 255
++ return 0
++}
++
+ # called by dracut
+ depends() {
+ echo network rootfs-block
+@@ -117,7 +195,14 @@ installkernel() {
+
+ # called by dracut
+ cmdline() {
+- install_ibft
++ local _iscsiconf=$(install_ibft)
++ {
++ if [ "$_iscsiconf" ] ; then
++ echo ${_iscsiconf}
++ else
++ install_softiscsi
++ fi
++ } | sort | uniq
+ }
+
+ # called by dracut
+@@ -128,8 +213,8 @@ install() {
+
+ # Detect iBFT and perform mandatory steps
+ if [[ $hostonly_cmdline == "yes" ]] ; then
+- local _ibftconf=$(install_ibft)
+- [[ $_ibftconf ]] && printf "%s\n" "$_ibftconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
++ local _iscsiconf=$(cmdline)
++ [[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
+ fi
+
+ inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
diff --git a/0043-iscsi-iscsi.initiator-and-others-can-and-must-only-s.patch b/0043-iscsi-iscsi.initiator-and-others-can-and-must-only-s.patch
new file mode 100644
index 0000000..8d5593d
--- /dev/null
+++ b/0043-iscsi-iscsi.initiator-and-others-can-and-must-only-s.patch
@@ -0,0 +1,70 @@
+From f34a2ef14df05affa3347d7191ff324bcb547e79 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:04 +0100
+Subject: [PATCH] iscsi: iscsi.initiator and others can and must only show up
+ once
+
+Make sure duplicates of iscsi.initiator vanish.
+Only get one rd.iscsi.* paramter value. If getargs is used and several
+parameters are parsed, one gets two values separated by whitespace in a
+variable which breaks later code and is not suppported.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/iscsiroot.sh | 18 +++++++++---------
+ modules.d/95iscsi/module-setup.sh | 5 ++++-
+ 2 files changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 7351427..5bfb017 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -81,23 +81,23 @@ handle_netroot()
+ local p
+
+ # override conf settings by command line options
+- arg=$(getargs rd.iscsi.initiator -d iscsi_initiator=)
++ arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=)
+ [ -n "$arg" ] && iscsi_initiator=$arg
+- arg=$(getargs rd.iscsi.target.name -d iscsi_target_name=)
++ arg=$(getarg rd.iscsi.target.name -d iscsi_target_name=)
+ [ -n "$arg" ] && iscsi_target_name=$arg
+- arg=$(getargs rd.iscsi.target.ip -d iscsi_target_ip)
++ arg=$(getarg rd.iscsi.target.ip -d iscsi_target_ip)
+ [ -n "$arg" ] && iscsi_target_ip=$arg
+- arg=$(getargs rd.iscsi.target.port -d iscsi_target_port=)
++ arg=$(getarg rd.iscsi.target.port -d iscsi_target_port=)
+ [ -n "$arg" ] && iscsi_target_port=$arg
+- arg=$(getargs rd.iscsi.target.group -d iscsi_target_group=)
++ arg=$(getarg rd.iscsi.target.group -d iscsi_target_group=)
+ [ -n "$arg" ] && iscsi_target_group=$arg
+- arg=$(getargs rd.iscsi.username -d iscsi_username=)
++ arg=$(getarg rd.iscsi.username -d iscsi_username=)
+ [ -n "$arg" ] && iscsi_username=$arg
+- arg=$(getargs rd.iscsi.password -d iscsi_password)
++ arg=$(getarg rd.iscsi.password -d iscsi_password)
+ [ -n "$arg" ] && iscsi_password=$arg
+- arg=$(getargs rd.iscsi.in.username -d iscsi_in_username=)
++ arg=$(getarg rd.iscsi.in.username -d iscsi_in_username=)
+ [ -n "$arg" ] && iscsi_in_username=$arg
+- arg=$(getargs rd.iscsi.in.password -d iscsi_in_password=)
++ arg=$(getarg rd.iscsi.in.password -d iscsi_in_password=)
+ [ -n "$arg" ] && iscsi_in_password=$arg
+ for p in $(getargs rd.iscsi.param -d iscsi_param); do
+ iscsi_param="$iscsi_param --param $p"
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index cd6cb4b..9975e59 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -123,7 +123,10 @@ install_iscsiroot() {
+ iscsi_address="[$iscsi_address]"
+ ;;
+ esac
+- echo "rd.iscsi.initiator=${iscsi_initiator} netroot=iscsi:${iscsi_address}::${iscsi_port}:${iscsi_lun}:${iscsi_targetname}"
++ # Must be two separate lines, so that "sort | uniq" commands later
++ # can sort out rd.iscsi.initiator= duplicates
++ echo "rd.iscsi.initiator=${iscsi_initiator}"
++ echo "netroot=iscsi:${iscsi_address}::${iscsi_port}:${iscsi_lun}:${iscsi_targetname}"
+ fi
+ return 0
+ }
diff --git a/0044-Implement-rd.timeout-to-modify-the-device-timeout.patch b/0044-Implement-rd.timeout-to-modify-the-device-timeout.patch
new file mode 100644
index 0000000..a8df6c6
--- /dev/null
+++ b/0044-Implement-rd.timeout-to-modify-the-device-timeout.patch
@@ -0,0 +1,104 @@
+From 56663e7e322cdba5d66cb45424489fd84791a544 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:05 +0100
+Subject: [PATCH] Implement 'rd.timeout' to modify the device timeout
+
+When generating units for devices the administrator might
+want to use a different timeout than the default.
+So implement a new parameter 'rd.timeout' for this.
+
+References: bnc#878770
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.cmdline.7.asc | 7 ++++++-
+ modules.d/98systemd/rootfs-generator.sh | 7 +++++--
+ modules.d/99base/dracut-lib.sh | 6 +++++-
+ 3 files changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 8e4835d..5ff84ef 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -142,11 +142,16 @@ Misc
+ have been loaded. This parameter can be specified multiple times.
+
+ **rd.retry=**__<seconds>__::
+- specify how long dracut should wait for devices to appear.
++ specify how long dracut should retry the initqueue to configure devices.
+ The default is 30 seconds. After 2/3 of the time, degraded raids are force
+ started. If you have hardware, which takes a very long time to announce its
+ drives, you might want to extend this value.
+
++**rd.timeout=**__<seconds>__::
++ specify how long dracut should wait for devices to appear. The
++ default is '0', which means 'forever'. Note that this timeout
++ should be longer than rd.retry to allow for proper configuration.
++
+ **rd.noverifyssl**::
+ accept self-signed certificates for ssl downloads.
+
+diff --git a/modules.d/98systemd/rootfs-generator.sh b/modules.d/98systemd/rootfs-generator.sh
+index 9523729..5b06137 100755
+--- a/modules.d/98systemd/rootfs-generator.sh
++++ b/modules.d/98systemd/rootfs-generator.sh
+@@ -5,8 +5,11 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+ generator_wait_for_dev()
+ {
+ local _name
++ local _timeout
+
+ _name="$(str_replace "$1" '/' '\x2f')"
++ _timeout=$(getarg rd.timeout)
++ _timeout=${_timeout:-0}
+
+ [ -e "$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
+
+@@ -27,7 +30,7 @@ generator_wait_for_dev()
+ mkdir -p /run/systemd/generator/${_name}.device.d
+ {
+ echo "[Unit]"
+- echo "JobTimeoutSec=0"
++ echo "JobTimeoutSec=$_timeout"
+ } > /run/systemd/generator/${_name}.device.d/timeout.conf
+ fi
+ }
+@@ -58,6 +61,6 @@ case "$root" in
+ rootok=1 ;;
+ esac
+
+-[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}"
++[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}" "$RDRETRY"
+
+ exit 0
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 5fc5615..f7cffc4 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -890,12 +890,16 @@ wait_for_dev()
+ local _name
+ local _needreload
+ local _noreload
++ local _timeout
+
+ if [ "$1" = "-n" ]; then
+ _noreload=1
+ shift
+ fi
+
++ _timeout=$(getarg rd.timeout)
++ _timeout=${_timeout:-0}
++
+ _name="$(str_replace "$1" '/' '\x2f')"
+
+ type mark_hostonly >/dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
+@@ -922,7 +926,7 @@ wait_for_dev()
+ mkdir -p ${PREFIX}/etc/systemd/system/${_name}.device.d
+ {
+ echo "[Unit]"
+- echo "JobTimeoutSec=0"
++ echo "JobTimeoutSec=$_timeout"
+ } > ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
+ type mark_hostonly >/dev/null 2>&1 && mark_hostonly /etc/systemd/system/${_name}.device.d/timeout.conf
+ _needreload=1
diff --git a/0045-Do-not-call-lvm-for-non-LVM-device-mapper-devices.patch b/0045-Do-not-call-lvm-for-non-LVM-device-mapper-devices.patch
new file mode 100644
index 0000000..5482757
--- /dev/null
+++ b/0045-Do-not-call-lvm-for-non-LVM-device-mapper-devices.patch
@@ -0,0 +1,35 @@
+From 3244bf59816096377edee6f8937f16838dc1a709 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:06 +0100
+Subject: [PATCH] Do not call 'lvm' for non-LVM device-mapper devices
+
+If a device-mapper device is not created by LVM it's pointless
+to call any 'lvm' programs got extract details; they'll be
+failing anyway. So check the UUID before calling 'lvm'.
+This speeds up initrd creation and avoids I/O errors on
+multipath devices.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut-functions.sh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 17a71f0..edd8ea9 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -698,10 +698,12 @@ 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
++ 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
diff --git a/0046-Print-stored-dracut-commandline-during-initramfs-bui.patch b/0046-Print-stored-dracut-commandline-during-initramfs-bui.patch
new file mode 100644
index 0000000..a8a49dd
--- /dev/null
+++ b/0046-Print-stored-dracut-commandline-during-initramfs-bui.patch
@@ -0,0 +1,36 @@
+From fe273e3901f0931c3cc1365177f82f03b6560d30 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:07 +0100
+Subject: [PATCH] Print stored dracut commandline during initramfs build
+
+When generating the initramfs we should be printing out the
+generated dracut commandline used for booting.
+This will simplify debugging.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.sh | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/dracut.sh b/dracut.sh
+index a542f33..cda7955 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1584,6 +1584,16 @@ if ! ( echo $PARMS_TO_STORE > $initdir/lib/dracut/build-parameter.txt ); then
+ exit 1
+ fi
+
++if [[ $hostonly_cmdline ]] ; then
++ if [ -d $initdir/etc/cmdline.d ];then
++ dinfo "Stored kernel commandline:"
++ for conf in $initdir/etc/cmdline.d/*.conf ; do
++ dinfo "$(< $conf)"
++ done
++ else
++ dinfo "No dracut internal kernel commandline stored in initrd"
++ fi
++fi
+ rm -f -- "$outfile"
+ dinfo "*** Creating image file ***"
+
diff --git a/0047-Align-dev_unit_name-with-systemd-s-function.patch b/0047-Align-dev_unit_name-with-systemd-s-function.patch
new file mode 100644
index 0000000..08c7ebc
--- /dev/null
+++ b/0047-Align-dev_unit_name-with-systemd-s-function.patch
@@ -0,0 +1,55 @@
+From e3eec4b8a21a640b7557678b92716a32f8d3dadf Mon Sep 17 00:00:00 2001
+From: Thorsten Behrens <tbehrens at suse.com>
+Date: Thu, 11 Dec 2014 15:46:08 +0100
+Subject: [PATCH] Align dev_unit_name() with systemd's function.
+
+Add more corner cases from systemd's
+unit_name_from_path_instance() C function.
+
+Signed-off-by: Thorsten Behrens <tbehrens at suse.com>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/99base/dracut-lib.sh | 24 ++++++++++++++++++------
+ 1 file changed, 18 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index f7cffc4..5c1504f 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -866,18 +866,30 @@ wait_for_mount()
+ } >> "$hookdir/emergency/90-${_name}.sh"
+ }
+
++# get a systemd-compatible unit name from a path
++# (mimicks unit_name_from_path_instance())
+ dev_unit_name()
+ {
++ local dev="$1"
++
+ if command -v systemd-escape >/dev/null; then
+- systemd-escape -p "$1"
++ systemd-escape -p "$dev"
+ return
+ fi
+
+- _name="${1%%/}"
+- _name="${_name##/}"
+- _name="$(str_replace "$_name" '-' '\x2d')"
+- _name="$(str_replace "$_name" '/' '-')"
+- echo "$_name"
++ if [ "$dev" = "/" -o -z "$dev" ]; then
++ printf -- "-"
++ exit 0
++ fi
++
++ dev="${1%%/}"
++ dev="${dev##/}"
++ dev="$(str_replace "$dev" '\' '\x5c')"
++ dev="$(str_replace "$dev" '-' '\x2d')"
++ dev=${dev/#\./\\x2e}
++ dev="$(str_replace "$dev" '/' '-')"
++
++ printf -- "%s" "$dev"
+ }
+
+ # wait_for_dev <dev>
diff --git a/0048-Generate-fallback-mount-unit-for-root-filesystem.patch b/0048-Generate-fallback-mount-unit-for-root-filesystem.patch
new file mode 100644
index 0000000..a3139f1
--- /dev/null
+++ b/0048-Generate-fallback-mount-unit-for-root-filesystem.patch
@@ -0,0 +1,68 @@
+From bd44831b825da5bf38f883344c3e25844bee4df7 Mon Sep 17 00:00:00 2001
+From: Thorsten Behrens <tbehrens at suse.com>
+Date: Thu, 11 Dec 2014 15:46:09 +0100
+Subject: [PATCH] Generate fallback mount unit for root filesystem
+
+If kernel cmdline has no root= provided, *and* the initrd carries
+a default value, create a systemd mount unit to have it available
+in /sysroot
+
+References: bnc#855258
+
+Signed-off-by: Thorsten Behrens <tbehrens at suse.com>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/98systemd/rootfs-generator.sh | 34 ++++++++++++++++++++++++++++++++-
+ 1 file changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98systemd/rootfs-generator.sh b/modules.d/98systemd/rootfs-generator.sh
+index 5b06137..f3c7d1f 100755
+--- a/modules.d/98systemd/rootfs-generator.sh
++++ b/modules.d/98systemd/rootfs-generator.sh
+@@ -35,6 +35,35 @@ generator_wait_for_dev()
+ fi
+ }
+
++generator_mount_rootfs()
++{
++ local _type=$2
++ local _flags=$3
++ local _name
++
++ [ -z "$1" ] && return 0
++
++ _name=$(dev_unit_name "$1")
++ [ -d /run/systemd/generator ] || mkdir -p /run/systemd/generator
++ if ! [ -f /run/systemd/generator/sysroot.mount ]; then
++ {
++ echo "[Unit]"
++ echo "Before=initrd-root-fs.target"
++ echo "RequiresOverridable=systemd-fsck@${_name}.service"
++ echo "After=systemd-fsck@${_name}.service"
++ echo "[Mount]"
++ echo "Where=/sysroot"
++ echo "What=$1"
++ echo "Options=${_flags}"
++ echo "Type=${_type}"
++ } > /run/systemd/generator/sysroot.mount
++ fi
++ if ! [ -L /run/systemd/generator/initrd-root-fs.target.requires/sysroot.mount ]; then
++ [ -d /run/systemd/generator/initrd-root-fs.target.requires ] || mkdir -p /run/systemd/generator/initrd-root-fs.target.requires
++ ln -s ../sysroot.mount /run/systemd/generator/initrd-root-fs.target.requires/sysroot.mount
++ fi
++}
++
+ root=$(getarg root=)
+ case "$root" in
+ block:LABEL=*|LABEL=*)
+@@ -61,6 +90,9 @@ case "$root" in
+ rootok=1 ;;
+ esac
+
+-[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}" "$RDRETRY"
++if [ "${root%%:*}" = "block" ]; then
++ generator_wait_for_dev "${root#block:}" "$RDRETRY"
++ grep -q 'root=' /proc/cmdline || generator_mount_rootfs "${root#block:}" "$(getarg rootfstype=)" "$(getarg rootflags=)"
++fi
+
+ exit 0
diff --git a/0049-99base-warn-on-invalid-command-for-initqueue.patch b/0049-99base-warn-on-invalid-command-for-initqueue.patch
new file mode 100644
index 0000000..e7a47bc
--- /dev/null
+++ b/0049-99base-warn-on-invalid-command-for-initqueue.patch
@@ -0,0 +1,31 @@
+From 7c2311660f3f540c2ad9471bcc13686899d677cd Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:10 +0100
+Subject: [PATCH] 99base: warn on invalid command for initqueue
+
+When 'initqueue' is called with an invalid command it'll generate
+invalid job scripts. This will lead to confusing error messages
+later on.
+So abort in these cases and print out a warning.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/99base/initqueue.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/99base/initqueue.sh b/modules.d/99base/initqueue.sh
+index 4a07da3..193cc5c 100755
+--- a/modules.d/99base/initqueue.sh
++++ b/modules.d/99base/initqueue.sh
+@@ -42,6 +42,10 @@ exe=$1
+ shift
+
+ [ -x "$exe" ] || exe=$(command -v $exe)
++if [ -z "$exe" ] ; then
++ echo "Invalid command"
++ exit 1
++fi
+
+ {
+ [ -n "$onetime" ] && echo '[ -e "$job" ] && rm -f -- "$job"'
diff --git a/0050-Handle-module-alias-properly.patch b/0050-Handle-module-alias-properly.patch
new file mode 100644
index 0000000..ab306d1
--- /dev/null
+++ b/0050-Handle-module-alias-properly.patch
@@ -0,0 +1,36 @@
+From 3ae60e559f049ba41d5d198f27509721a245d6ea Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:11 +0100
+Subject: [PATCH] Handle module alias properly
+
+Some modules (like ext4) provide aliases by which the modules
+can be accessed, too. But when using aliases directly dracut
+fails to include the correct module. So translate the alias
+into the correct module name before checking the module.
+
+References: bnc#886839
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut-functions.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index edd8ea9..7a12a76 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1689,6 +1689,13 @@ instmods() {
+ --*) _mpargs+=" $_mod" ;;
+ *)
+ _mod=${_mod##*/}
++ # Check for aliased modules
++ _modalias=$(modinfo -k $kernel -F filename $_mod 2> /dev/null)
++ _modalias=${_modalias%.ko}
++ if [ "${_modalias##*/}" != "$_mod" ] ; then
++ _mod=${_modalias##*/}
++ fi
++
+ # if we are already installed, skip this module and go on
+ # to the next one.
+ if [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && \
diff --git a/0051-99base-Increase-initqueue-timeout-in-non-systemd-cas.patch b/0051-99base-Increase-initqueue-timeout-in-non-systemd-cas.patch
new file mode 100644
index 0000000..4397b30
--- /dev/null
+++ b/0051-99base-Increase-initqueue-timeout-in-non-systemd-cas.patch
@@ -0,0 +1,28 @@
+From 517d27a75f678d4c295cbb07687453950b55df5a Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:12 +0100
+Subject: [PATCH] 99base: Increase initqueue timeout in non systemd case
+
+In case of systemd is used the timeout already is set to 180s, compare
+with file: modules.d/98systemd/dracut-initqueue.sh
+
+Do the same if systemd is not used, e.g. in kdump case.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/99base/init.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 7fcea4a..918dea5 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -166,7 +166,7 @@ make_trace_mem "hook initqueue" '1:shortmem' '2+:mem' '3+:slab'
+ getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+
+ RDRETRY=$(getarg rd.retry -d 'rd_retry=')
+-RDRETRY=${RDRETRY:-30}
++RDRETRY=${RDRETRY:-180}
+ RDRETRY=$(($RDRETRY*2))
+ export RDRETRY
+ main_loop=0
diff --git a/0052-90lvm-Install-dm-snapshot-module.patch b/0052-90lvm-Install-dm-snapshot-module.patch
new file mode 100644
index 0000000..a9cb20e
--- /dev/null
+++ b/0052-90lvm-Install-dm-snapshot-module.patch
@@ -0,0 +1,27 @@
+From 5c84d51b3f258af9035a4031c6b482103adea4d9 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:13 +0100
+Subject: [PATCH] 90lvm: Install dm-snapshot module
+
+bnc#888530
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/90lvm/module-setup.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index 9ddc56e..5515ac0 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -42,6 +42,10 @@ cmdline() {
+ done
+ }
+
++installkernel() {
++ instmods dm-snapshot
++}
++
+ # called by dracut
+ install() {
+ local _i
diff --git a/0053-Check-for-logfile-logfile-option-and-create-it-if-ne.patch b/0053-Check-for-logfile-logfile-option-and-create-it-if-ne.patch
new file mode 100644
index 0000000..21d57f6
--- /dev/null
+++ b/0053-Check-for-logfile-logfile-option-and-create-it-if-ne.patch
@@ -0,0 +1,37 @@
+From 3838dc47c3f15128f171bfbd0eaf2e3e8641e4e8 Mon Sep 17 00:00:00 2001
+From: jloeser <jloeser at suse.de>
+Date: Thu, 11 Dec 2014 15:46:14 +0100
+Subject: [PATCH] Check for logfile (--logfile option) and create it if
+ necessary
+
+If a logfile is passed to dracut via --logfile option and doesn't
+exist, dracut doesn't create it and logs nothing. Instead, dracut
+should try to touch the file and print a warning if creating fails.
+
+References: bnc#892191
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.sh | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/dracut.sh b/dracut.sh
+index cda7955..79f36b6 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -816,6 +816,16 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
+ # eliminate IFS hackery when messing with fw_dir
+ fw_dir=${fw_dir//:/ }
+
++# check for logfile and try to create one if it doesn't exist
++if [[ -n "$logfile" ]];then
++ if [[ ! -f "$logfile" ]];then
++ touch "$logfile"
++ if [ ! $? -eq 0 ] ;then
++ printf "%s\n" "dracut: touch $logfile failed." >&2
++ fi
++ fi
++fi
++
+ # handle compression options.
+ [[ $compress ]] || compress="gzip"
+ case $compress in
diff --git a/0054-dracut.sh-Avoid-duplicate-devices-in-host_devs.patch b/0054-dracut.sh-Avoid-duplicate-devices-in-host_devs.patch
new file mode 100644
index 0000000..8304a68
--- /dev/null
+++ b/0054-dracut.sh-Avoid-duplicate-devices-in-host_devs.patch
@@ -0,0 +1,91 @@
+From 118ca9ecfcc8cec0a428352355592717d0a44109 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:15 +0100
+Subject: [PATCH] dracut.sh: Avoid duplicate devices in host_devs
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.sh | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 79f36b6..a4c7ce5 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -219,6 +219,16 @@ push() {
+ done
+ }
+
++# Fills up host_devs stack variable and makes sure there are no duplicates
++push_host_devs() {
++ local _dev
++ for _dev in ${host_devs[@]}; do
++ [ "$_dev" = "$1" ] && return
++ done
++ push host_devs "$1"
++}
++
++
+ # function pop()
+ # pops the last value from a stack
+ # assigns value to second argument variable
+@@ -1062,25 +1072,25 @@ declare -A host_fs_types
+ for line in "${fstab_lines[@]}"; do
+ set -- $line
+ #dev mp fs fsopts
+- push host_devs "$1"
++ push_host_devs "$1"
+ host_fs_types["$1"]="$3"
+ done
+
+ for f in $add_fstab; do
+ [[ -e $f ]] || continue
+ while read dev rest; do
+- push host_devs "$dev"
++ push_host_devs "$dev"
+ done < "$f"
+ done
+
+ for dev in $add_device; do
+- push host_devs "$dev"
++ push_host_devs "$dev"
+ done
+
+ if (( ${#add_device_l[@]} )); then
+ while pop add_device_l val; do
+ add_device+=" $val "
+- push host_devs "$val"
++ push_host_devs "$val"
+ done
+ fi
+
+@@ -1109,9 +1119,9 @@ if [[ $hostonly ]]; then
+ _dev=$(find_block_device "$mp")
+ _bdev=$(readlink -f "/dev/block/$_dev")
+ [[ -b $_bdev ]] && _dev=$_bdev
+- push host_devs $_dev
++ push_host_devs $_dev
+ [[ "$mp" == "/" ]] && root_dev="$_dev"
+- push host_devs "$_dev"
++ push_host_devs "$_dev"
+ done
+
+ if [[ -f /proc/swaps ]] && [[ -f /etc/fstab ]]; then
+@@ -1140,7 +1150,7 @@ if [[ $hostonly ]]; then
+ done < /etc/crypttab
+ fi
+
+- push host_devs "$(readlink -f "$dev")"
++ push_host_devs "$(readlink -f "$dev")"
+ break
+ done < /etc/fstab
+ done < /proc/swaps
+@@ -1205,7 +1215,7 @@ for dev in "${!host_fs_types[@]}"; do
+ fi
+ if [[ $journaldev ]]; then
+ dev="$(readlink -f "$dev")"
+- push host_devs "$dev"
++ push_host_devs "$dev"
+ _get_fs_type "$dev"
+ check_block_and_slaves_all _get_fs_type "$(get_maj_min "$dev")"
+ fi
diff --git a/0055-dracut.sh-Fix-UUID-fstab-parsing-in-case-mount-optio.patch b/0055-dracut.sh-Fix-UUID-fstab-parsing-in-case-mount-optio.patch
new file mode 100644
index 0000000..0c758c3
--- /dev/null
+++ b/0055-dracut.sh-Fix-UUID-fstab-parsing-in-case-mount-optio.patch
@@ -0,0 +1,50 @@
+From 6df523517f364882c51bbcc5b3245dd568eca3b3 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:16 +0100
+Subject: [PATCH] dracut.sh: Fix UUID= fstab parsing in case --mount option is
+ passed
+
+Dracut parses /etc/fstab when --mount is option is passed (e.g. kdump).
+
+In host_devs variable the real block device must be stored, not UUID=
+There are other /etc/fstab syntax possibilities we now warn that they
+are not correctly parsed. This will be fixed by another patch
+when there is time to test this properly.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.sh | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index a4c7ce5..2eba19b 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1071,9 +1071,25 @@ declare -A host_fs_types
+
+ for line in "${fstab_lines[@]}"; do
+ set -- $line
++ dev="$1"
+ #dev mp fs fsopts
+- push_host_devs "$1"
+- host_fs_types["$1"]="$3"
++ case "$dev" in
++ UUID=*)
++ dev=$(blkid -l -t UUID=${dev#UUID=} -o device)
++ ;;
++ LABEL=*)
++ dev=$(blkid -l -t LABEL=${dev#LABEL=} -o device)
++ ;;
++ PARTUUID=*)
++ dev=$(blkid -l -t PARTUUID=${dev#PARTUUID=} -o device)
++ ;;
++ PARTLABEL=*)
++ dev=$(blkid -l -t PARTLABEL=${dev#PARTLABEL=} -o device)
++ ;;
++ esac
++ [ -z "$dev" ] && dwarn "Bad fstab entry $@" && continue
++ push_host_devs "$dev"
++ host_fs_types["$dev"]="$3"
+ done
+
+ for f in $add_fstab; do
diff --git a/0056-dracut.usage.asc-Remove-distro-specific-help-from-ma.patch b/0056-dracut.usage.asc-Remove-distro-specific-help-from-ma.patch
new file mode 100644
index 0000000..366c771
--- /dev/null
+++ b/0056-dracut.usage.asc-Remove-distro-specific-help-from-ma.patch
@@ -0,0 +1,47 @@
+From 4d25892179e4eff9fc4bd2a2ab45a91c5a372fc2 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:17 +0100
+Subject: [PATCH] dracut.usage.asc: Remove distro specific help from manpage
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.usage.asc | 19 +------------------
+ 1 file changed, 1 insertion(+), 18 deletions(-)
+
+diff --git a/dracut.usage.asc b/dracut.usage.asc
+index 9e788c1..b4a8663 100644
+--- a/dracut.usage.asc
++++ b/dracut.usage.asc
+@@ -246,23 +246,6 @@ specified multiple times.
+ If your root partition is on a network drive, you have to have the network
+ dracut modules installed to create a network aware initramfs image.
+
+-On a Red Hat Enterprise Linux or Fedora system, this means, you have to install
+-the _dracut-network_ rpm package:
+-
+-
+-----
+-# yum install dracut-network
+-----
+-
+-The resulting initramfs image can be served by a boot manager residing on your
+-local hard drive or it can be served by a PXE/TFTP server.
+-
+-How to setup your PXE/TFTP server can be found in the
+-http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/[Red
+-Hat Enterprise Linux 6 Storage Administration Guide]
+-or http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/[Red
+-Hat Enterprise Linux 7 Storage Administration Guide].
+-
+ If you specify ip=dhcp on the kernel command line, then dracut asks a dhcp
+ server about the ip adress for the machine. The dhcp server can also serve an
+ additional root-path, which will set the root device for dracut. With this
+@@ -302,7 +285,7 @@ This will reduce the size of the initramfs image significantly.
+ If the boot process does not succeed, you have several options to debug the
+ situation. Some of the basic operations are covered here. For more information
+ you should also visit:
+-http://fedoraproject.org/wiki/How_to_debug_Dracut_problems
++https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html
+
+
+ [[identifying-your-problem-area]]
diff --git a/0057-nfs-Add-ip-.-and-root-nfs.-parameters-to-internal-dr.patch b/0057-nfs-Add-ip-.-and-root-nfs.-parameters-to-internal-dr.patch
new file mode 100644
index 0000000..d62e9a9
--- /dev/null
+++ b/0057-nfs-Add-ip-.-and-root-nfs.-parameters-to-internal-dr.patch
@@ -0,0 +1,88 @@
+From 206345ce9b5eda660d82ce552620edc12db4b2e3 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:18 +0100
+Subject: [PATCH] nfs: Add ip=... and root=nfs... parameters to internal dracut
+
+ cmdline
+
+If the rootfs is an nfs mount, also know as nfsroot, add the correct
+parameter to the dracut cmdline.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95nfs/module-setup.sh | 44 +++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 42 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
+index e1340b3..8eb542c 100755
+--- a/modules.d/95nfs/module-setup.sh
++++ b/modules.d/95nfs/module-setup.sh
+@@ -14,7 +14,6 @@ check() {
+ done
+ return 255
+ }
+-
+ return 0
+ }
+
+@@ -29,6 +28,43 @@ installkernel() {
+ instmods nfs sunrpc ipv6 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files
+ }
+
++cmdline() {
++ local nfs_device
++ local nfs_options
++ local nfs_root
++ local nfs_address
++ local lookup
++ local ifname
++
++ ### nfsroot= ###
++ nfs_device=$(findmnt -t nfs4 -n -o SOURCE /)
++ if [ -n "$nfs_device" ];then
++ nfs_root="root=nfs4:$nfs_device"
++ else
++ nfs_device=$(findmnt -t nfs -n -o SOURCE /)
++ [ -z "$nfs_device" ] && return
++ nfs_root="root=nfs:$nfs_device"
++ fi
++ nfs_options=$(findmnt -t nfs4,nfs -n -o OPTIONS /)
++ [ -n "$nfs_options" ] && nfs_root="$nfs_root:$nfs_options"
++ echo "$nfs_root"
++
++ ### ip= ###
++ if [[ $nfs_device = [0-9]*\.[0-9]*\.[0-9]*.[0-9]* ]] || [[ $nfs_device = \[.*\] ]]; then
++ nfs_address="$nfs_device"
++ else
++ lookup=$(host $(echo ${nfs_device%%:*})| head -n1)
++ nfs_address=${lookup##* }
++ fi
++ ifname=$(ip -o route get to $nfs_address | sed -n 's/.*dev \([^ ]*\).*/\1/p')
++ if [ -e /sys/class/net/$ifname/address ] ; then
++ ifmac=$(cat /sys/class/net/$ifname/address)
++ printf 'ifname=%s:%s ' ${ifname} ${ifmac}
++ fi
++
++ printf 'ip=%s:static\n' ${ifname}
++}
++
+ # called by dracut
+ install() {
+ local _i
+@@ -37,6 +73,11 @@ install() {
+ mount.nfs4 umount rpc.idmapd sed /etc/netconfig
+ inst_multiple /etc/services /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/idmapd.conf
+
++ if [[ $hostonly_cmdline == "yes" ]]; then
++ local _netconf="$(cmdline)"
++ [[ $_netconf ]] && printf "%s\n" "$_netconf" >> "${initdir}/etc/cmdline.d/95nfs.conf"
++ fi
++
+ if [ -f /lib/modprobe.d/nfs.conf ]; then
+ inst_multiple /lib/modprobe.d/nfs.conf
+ else
+@@ -75,4 +116,3 @@ install() {
+ && chown rpc.rpc "$initdir/var/lib/rpcbind"
+ dracut_need_initqueue
+ }
+-
diff --git a/0058-95iscsi-parse-output-from-iscsiadm-correctly.patch b/0058-95iscsi-parse-output-from-iscsiadm-correctly.patch
new file mode 100644
index 0000000..10cd507
--- /dev/null
+++ b/0058-95iscsi-parse-output-from-iscsiadm-correctly.patch
@@ -0,0 +1,44 @@
+From cd72830807e231f8a88bd81c8f2df951c5a6d33e Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:19 +0100
+Subject: [PATCH] 95iscsi: parse output from iscsiadm correctly
+
+Due to some obsure reason the IFS parameter is not set correctly
+when evaluating get_ibft_mod(). So change the parsing to not rely
+on IFS altogether.
+
+References: bnc#886199
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95iscsi/module-setup.sh | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 9975e59..f13119f 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -30,15 +30,16 @@ check() {
+
+ get_ibft_mod() {
+ local ibft_mac=$1
++ local iface_mac iface_mod
+ # Return the iSCSI offload module for a given MAC address
+- iscsiadm -m iface | while read iface_name iface_desc ; do
+- IFS=$','
+- set -- $iface_desc
+- if [ "$ibft_mac" = "$2" ] ; then
+- echo $1
++ for iface_desc in $(iscsiadm -m iface | cut -f 2 -d ' '); do
++ iface_mod=${iface_desc%%,*}
++ iface_mac=${iface_desc#*,}
++ iface_mac=${iface_mac%%,*}
++ if [ "$ibft_mac" = "$iface_mac" ] ; then
++ echo $iface_mod
+ return 0
+ fi
+- unset IFS
+ done
+ }
+
diff --git a/0059-dracut-Do-not-stop-installing-drivers-if-one-fails.patch b/0059-dracut-Do-not-stop-installing-drivers-if-one-fails.patch
new file mode 100644
index 0000000..e27687c
--- /dev/null
+++ b/0059-dracut-Do-not-stop-installing-drivers-if-one-fails.patch
@@ -0,0 +1,45 @@
+From 8d40852e8cf5a4b5db38cbbb52c42b348d3c7502 Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:20 +0100
+Subject: [PATCH] dracut: Do not stop installing drivers if one fails
+
+--add-drivers and --filesystems kernel drivers are added via:
+instmods -c
+The check option makes the function return if one driver could not get
+installed without trying to install further drivers which is bad.
+
+The user is still informed ($_silent is by default no), but all modules
+passed to instmods are tried to be loaded, even if one fails.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut-functions.sh | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 7a12a76..b91d8dc 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1742,18 +1742,16 @@ instmods() {
+ if (($# == 0)); then # filenames from stdin
+ while read _mod; do
+ inst1mod "${_mod%.ko*}" || {
+- if [[ "$_check" == "yes" ]]; then
+- [[ "$_silent" == "no" ]] && dfatal "Failed to install module $_mod"
+- return 1
++ if [[ "$_check" == "yes" ]] && [[ "$_silent" == "no" ]]; then
++ dfatal "Failed to install module $_mod"
+ fi
+ }
+ done
+ fi
+ while (($# > 0)); do # filenames as arguments
+ inst1mod ${1%.ko*} || {
+- if [[ "$_check" == "yes" ]]; then
+- [[ "$_silent" == "no" ]] && dfatal "Failed to install module $1"
+- return 1
++ if [[ "$_check" == "yes" ]] && [[ "$_silent" == "no" ]]; then
++ dfatal "Failed to install module $1"
+ fi
+ }
+ shift
diff --git a/0060-95fcoe-update-fcoe-interface-check.patch b/0060-95fcoe-update-fcoe-interface-check.patch
new file mode 100644
index 0000000..0eebd7e
--- /dev/null
+++ b/0060-95fcoe-update-fcoe-interface-check.patch
@@ -0,0 +1,36 @@
+From c64a94caa98749ceb4fad3c551d8e389f508d6df Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:21 +0100
+Subject: [PATCH] 95fcoe: update fcoe interface check
+
+The 'create' sysfs entry has been removed for newer fcoe modules,
+so just check if the module directory exists.
+
+References: bnc#877288
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95fcoe/parse-fcoe.sh | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/modules.d/95fcoe/parse-fcoe.sh b/modules.d/95fcoe/parse-fcoe.sh
+index 59de56f..9604503 100755
+--- a/modules.d/95fcoe/parse-fcoe.sh
++++ b/modules.d/95fcoe/parse-fcoe.sh
+@@ -20,14 +20,11 @@
+
+
+ # BRCM: Later, should check whether bnx2x is loaded first before loading bnx2fc so do not load bnx2fc when there are no Broadcom adapters
+-[ -e /sys/module/fcoe/parameters/create ] || modprobe -a fcoe || die "FCoE requested but kernel/initrd does not support FCoE"
++[ -d /sys/module/fcoe ] || modprobe -a fcoe || die "FCoE requested but kernel/initrd does not support FCoE"
+
+ modprobe bnx2fc >/dev/null 2>&1
+ udevadm settle --timeout=30
+
+-# FCoE actually supported?
+-[ -e /sys/module/fcoe/parameters/create ] || modprobe fcoe || die "FCoE requested but kernel/initrd does not support FCoE"
+-
+ parse_fcoe_opts() {
+ local IFS=:
+ set $fcoe
diff --git a/0061-95fcoe-Store-current-configuration-in-dracut-cmdline.patch b/0061-95fcoe-Store-current-configuration-in-dracut-cmdline.patch
new file mode 100644
index 0000000..49e1f9c
--- /dev/null
+++ b/0061-95fcoe-Store-current-configuration-in-dracut-cmdline.patch
@@ -0,0 +1,94 @@
+From 8b257fcc86f9a470613c1a5719641144a688acf7 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:22 +0100
+Subject: [PATCH] 95fcoe: Store current configuration in dracut cmdline
+
+When running with --hostonly-cmdline we should be storing
+the current configuration in /etc/cmdline.d so that dracut
+will be configure the system automatically.
+
+References: bnc#877288
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95fcoe/module-setup.sh | 52 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+
+diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh
+index b67aa04..174745a 100755
+--- a/modules.d/95fcoe/module-setup.sh
++++ b/modules.d/95fcoe/module-setup.sh
+@@ -2,7 +2,16 @@
+
+ # called by dracut
+ check() {
++ [[ $hostonly ]] || [[ $mount_needs ]] && {
++ for c in /sys/bus/fcoe/devices/ctlr_* ; do
++ [ -L $c ] || continue
++ fcoe_ctlr=$c
++ done
++ [ -z "$fcoe_ctlr" ] && return 255
++ }
++
+ require_binaries dcbtool fipvlan lldpad ip readlink || return 1
++
+ return 0
+ }
+
+@@ -17,12 +26,55 @@ installkernel() {
+ instmods fcoe 8021q edd
+ }
+
++get_vlan_parent() {
++ local link=$1
++
++ [ -d $link ] || return
++ read iflink < $link/iflink
++ for if in /sys/class/net/* ; do
++ read idx < $if/ifindex
++ if [ $idx -eq $iflink ] ; then
++ echo ${if##*/}
++ fi
++ done
++}
++
++# called by dracut
++cmdline() {
++
++ for c in /sys/bus/fcoe/devices/ctlr_* ; do
++ [ -L $c ] || continue
++ read enabled < $c/enabled
++ [ $enabled -eq 0 ] && continue
++ d=$(cd -P $c; echo $PWD)
++ i=${d%/*}
++ read mac < ${i}/address
++ s=$(dcbtool gc ${i##*/} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p')
++ if [ -z "$s" ] ; then
++ p=$(get_vlan_parent ${i})
++ if [ "$p" ] ; then
++ s=$(dcbtool gc ${p} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p')
++ fi
++ fi
++ if [ "$s" = "on" ] ; then
++ dcb="dcb"
++ else
++ dcb="nodcb"
++ fi
++ echo "fcoe=${mac}:${dcb}"
++ done
++}
++
+ # called by dracut
+ install() {
+ inst_multiple ip dcbtool fipvlan lldpad readlink lldptool
+
+ mkdir -m 0755 -p "$initdir/var/lib/lldpad"
+
++ if [[ $hostonly_cmdline == "yes" ]] ; then
++ local _fcoeconf=$(cmdline)
++ [[ $_fcoeconf ]] && printf "%s\n" "$_fcoeconf" >> "${initdir}/etc/cmdline.d/95fcoe.conf"
++ fi
+ inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up"
+ inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"
+ inst "$moddir/fcoe-genrules.sh" "/sbin/fcoe-genrules.sh"
diff --git a/0062-95fcoe-skip-VLAN-devices-in-fcoe-up.patch b/0062-95fcoe-skip-VLAN-devices-in-fcoe-up.patch
new file mode 100644
index 0000000..3343e3c
--- /dev/null
+++ b/0062-95fcoe-skip-VLAN-devices-in-fcoe-up.patch
@@ -0,0 +1,36 @@
+From 0a68a26cffad7fc75e454b06206c0bbf297361b7 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:23 +0100
+Subject: [PATCH] 95fcoe: skip VLAN devices in fcoe-up
+
+DCB & fipvlan can only be called on real devices, not VLAN
+ones. So skip any VLAN devices which might been added to the
+list of network interfaces.
+
+References: bnc#878583
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95fcoe/fcoe-up.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh
+index b9d0411..7f6eb1b 100755
+--- a/modules.d/95fcoe/fcoe-up.sh
++++ b/modules.d/95fcoe/fcoe-up.sh
+@@ -16,6 +16,14 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
+ netif=$1
+ dcb=$2
+
++iflink=$(cat /sys/class/net/$netif/iflink)
++ifindex=$(cat /sys/class/net/$netif/ifindex)
++if [ "$iflink" != "$ifindex" ] ; then
++ # Skip VLAN devices
++ exit 0
++fi
++
++ip link set dev $netif up
+ linkup "$netif"
+
+ netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
diff --git a/0063-95fcoe-start-lldpad-separately.patch b/0063-95fcoe-start-lldpad-separately.patch
new file mode 100644
index 0000000..2f58c04
--- /dev/null
+++ b/0063-95fcoe-start-lldpad-separately.patch
@@ -0,0 +1,76 @@
+From 22e837b6458d5d17d1cb6a9b09b7515746d4e098 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:24 +0100
+Subject: [PATCH] 95fcoe: start lldpad separately
+
+lldpad is a system-wide process, which must be started only once.
+So we should be separate it from fcoe-up, as it might be called
+several times.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95fcoe/fcoe-up.sh | 8 --------
+ modules.d/95fcoe/lldpad.sh | 14 ++++++++++++++
+ modules.d/95fcoe/module-setup.sh | 1 +
+ 3 files changed, 15 insertions(+), 8 deletions(-)
+ create mode 100644 modules.d/95fcoe/lldpad.sh
+
+diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh
+index 7f6eb1b..43a0ad5 100755
+--- a/modules.d/95fcoe/fcoe-up.sh
++++ b/modules.d/95fcoe/fcoe-up.sh
+@@ -30,10 +30,6 @@ netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
+ netdriver=${netdriver##*/}
+
+ if [ "$dcb" = "dcb" ]; then
+- # Note lldpad will stay running after switchroot, the system initscripts
+- # are to kill it and start a new lldpad to take over. Data is transfered
+- # between the 2 using a shm segment
+- lldpad -d
+ # wait for lldpad to be ready
+ i=0
+ while [ $i -lt 60 ]; do
+@@ -43,10 +39,6 @@ if [ "$dcb" = "dcb" ]; then
+ i=$(($i+1))
+ done
+
+- # on some systems lldpad needs some time
+- # sleep until we find a better solution
+- sleep 30
+-
+ while [ $i -lt 60 ]; do
+ dcbtool sc "$netif" dcb on && break
+ info "Retrying to turn dcb on"
+diff --git a/modules.d/95fcoe/lldpad.sh b/modules.d/95fcoe/lldpad.sh
+new file mode 100644
+index 0000000..d06a3bd
+--- /dev/null
++++ b/modules.d/95fcoe/lldpad.sh
+@@ -0,0 +1,14 @@
++#!/bin/bash
++
++# Note lldpad will stay running after switchroot, the system initscripts
++# are to kill it and start a new lldpad to take over. Data is transfered
++# between the 2 using a shm segment
++lldpad -d
++# wait for lldpad to be ready
++i=0
++while [ $i -lt 60 ]; do
++ lldptool -p && break
++ info "Waiting for lldpad to be ready"
++ sleep 1
++ i=$(($i+1))
++done
+diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh
+index 174745a..9c67f17 100755
+--- a/modules.d/95fcoe/module-setup.sh
++++ b/modules.d/95fcoe/module-setup.sh
+@@ -78,6 +78,7 @@ install() {
+ inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up"
+ inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"
+ inst "$moddir/fcoe-genrules.sh" "/sbin/fcoe-genrules.sh"
++ inst_hook pre-trigger 03 "$moddir/lldpad.sh"
+ inst_hook cmdline 99 "$moddir/parse-fcoe.sh"
+ dracut_need_initqueue
+ }
diff --git a/0064-Enhance-suse.conf-and-debug-module-example-with-SUSE.patch b/0064-Enhance-suse.conf-and-debug-module-example-with-SUSE.patch
new file mode 100644
index 0000000..c6b99b1
--- /dev/null
+++ b/0064-Enhance-suse.conf-and-debug-module-example-with-SUSE.patch
@@ -0,0 +1,61 @@
+From 94920084351349cba579ce80a89321ab6544653c Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:25 +0100
+Subject: [PATCH] Enhance suse.conf and debug module example with SUSE-specific
+ settings
+
+SUSE is using specific settings for dracut, so add them
+to the suse.conf.example file.
+
+Add vi and find to the debug module add some help text to the suse.conf
+file when and how to use it.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.conf.d/suse.conf.example | 21 +++++++++++++++++++++
+ modules.d/95debug/module-setup.sh | 3 +--
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.conf.d/suse.conf.example b/dracut.conf.d/suse.conf.example
+index 1e7f80e..37ffd72 100644
+--- a/dracut.conf.d/suse.conf.example
++++ b/dracut.conf.d/suse.conf.example
+@@ -1,3 +1,24 @@
++# SUSE specifc dracut settings
++#
++# SUSE by default always builds a as small as possible initrd for performance
++# and resource reasons.
++# If you like to build a generic initrd which works on other platforms than
++# on the one dracut/mkinitrd got called comment out below setting(s).
++hostonly="yes"
++hostonly_cmdline="yes"
++
++compress="xz -0 --check=crc32 --memlimit-compress=50%"
++
+ i18n_vars="/etc/sysconfig/language:RC_LANG-LANG,RC_LC_ALL-LC_ALL /etc/sysconfig/console:CONSOLE_UNICODEMAP-FONT_UNIMAP,CONSOLE_FONT-FONT,CONSOLE_SCREENMAP-FONT_MAP /etc/sysconfig/keyboard:KEYTABLE-KEYMAP"
+ omit_drivers+=" i2o_scsi"
+
++# Below adds additional tools to the initrd which are not urgently necessary to
++# bring up the system, but help to debug problems.
++# See /usr/lib/dracut/modules.d/95debug/module-setup.sh which additional tools
++# are installed and add more if you need them. This specifically helps if you
++# use:
++# rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|
++# mount|pre-pivot|cleanup]
++# boot parameter or if you are forced to enter the dracut emergency shell.
++
++# add_dracutmodules+=debug
+diff --git a/modules.d/95debug/module-setup.sh b/modules.d/95debug/module-setup.sh
+index 625f7fb..5a9aaac 100755
+--- a/modules.d/95debug/module-setup.sh
++++ b/modules.d/95debug/module-setup.sh
+@@ -14,8 +14,7 @@ depends() {
+ # called by dracut
+ install() {
+ inst_multiple -o ps grep more cat rm strace free showmount \
+- ping netstat rpcinfo vi scp ping6 ssh \
++ ping netstat rpcinfo vi scp ping6 ssh find vi \
+ fsck fsck.ext2 fsck.ext4 fsck.ext3 fsck.ext4dev fsck.vfat e2fsck
+-
+ }
+
diff --git a/0065-40network-add-missing-_arch-variable-declaration.patch b/0065-40network-add-missing-_arch-variable-declaration.patch
new file mode 100644
index 0000000..c2b9bc3
--- /dev/null
+++ b/0065-40network-add-missing-_arch-variable-declaration.patch
@@ -0,0 +1,25 @@
+From 681462eca8bd87383c9cb8c0bc34ebad827c4421 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:26 +0100
+Subject: [PATCH] 40network: add missing _arch variable declaration
+
+The module_setup.sh script was missing an '_arch' declaration,
+causing network not to be installed on s390.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/40network/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index 55bee4c..f7e0a87 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -17,6 +17,7 @@ depends() {
+ # called by dracut
+ installkernel() {
+ # Include wired net drivers, excluding wireless
++ local _arch=$(uname -m)
+
+ net_module_filter() {
+ local _net_drivers='eth_type_trans|register_virtio_device|usbnet_open'
diff --git a/0066-99base-Add-chown-binary.patch b/0066-99base-Add-chown-binary.patch
new file mode 100644
index 0000000..ced65d0
--- /dev/null
+++ b/0066-99base-Add-chown-binary.patch
@@ -0,0 +1,29 @@
+From a262ad91e82729b661049f24a5d5968d08ce161c Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:27 +0100
+Subject: [PATCH] 99base: Add chown binary
+
+nvidia driver needs this via modprobe script.
+Needs to do change the group after a device node got created.
+Add chown instead of chgrp which can also change the owner of a file.
+
+Ask Stefand Dirsch <sndirsch at suse.de> for details.
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/99base/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 7d30320..a1046af 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -15,7 +15,7 @@ depends() {
+ install() {
+ local _d
+
+- inst_multiple mount mknod mkdir sleep chroot \
++ inst_multiple mount mknod mkdir sleep chroot chown \
+ sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
+ inst $(command -v modprobe) /sbin/modprobe
+
diff --git a/0067-90kernel-modules-install-scsi_dh_alua.patch b/0067-90kernel-modules-install-scsi_dh_alua.patch
new file mode 100644
index 0000000..c479ca2
--- /dev/null
+++ b/0067-90kernel-modules-install-scsi_dh_alua.patch
@@ -0,0 +1,28 @@
+From ce8f354dbd5a54be247ee8a96aa14b555503f3b6 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:28 +0100
+Subject: [PATCH] 90kernel-modules: install scsi_dh_alua
+
+Install the missing scsi_dh_alua module, too.
+
+References: bnc#871617
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/90kernel-modules/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 2fa263c..1a8fcff 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -41,7 +41,7 @@ installkernel() {
+ uhci-hcd \
+ xhci-hcd
+
+- instmods yenta_socket scsi_dh_rdac scsi_dh_emc \
++ instmods yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
+ atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech \
+ hid-logitech-dj hid-microsoft hid-lcpower firewire-ohci \
+ pcmcia hid-hyperv hv-vmbus hyperv-keyboard
diff --git a/0068-Fix-non-export-of-journal-dev-boot-options.patch b/0068-Fix-non-export-of-journal-dev-boot-options.patch
new file mode 100644
index 0000000..d553c47
--- /dev/null
+++ b/0068-Fix-non-export-of-journal-dev-boot-options.patch
@@ -0,0 +1,30 @@
+From 486030575d3573237e776a630b3df0139c11fab3 Mon Sep 17 00:00:00 2001
+From: Thorsten Behrens <tbehrens at suse.com>
+Date: Thu, 11 Dec 2014 15:46:29 +0100
+Subject: [PATCH] Fix non-export of journal dev boot options.
+
+cmdline_journal does not contain linefeeds anymore, so read
+silently skipped it altogether.
+
+Signed-off-by: Thorsten Behrens <tbehrens at suse.com>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95rootfs-block/module-setup.sh | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 258b32f..c2f71bb 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -43,9 +43,8 @@ cmdline() {
+ # called by dracut
+ install() {
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline_journal | while read journaldev; do
+- [[ $journaldev ]] && printf "%s\n" "$journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
+- done
++ local _journaldev=$(cmdline_journal)
++ [[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
+ fi
+
+ inst_multiple umount
diff --git a/0069-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch b/0069-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
new file mode 100644
index 0000000..76b1753
--- /dev/null
+++ b/0069-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
@@ -0,0 +1,48 @@
+From 7700b3df4c753112d9a38745388b1e1fd54ce5c5 Mon Sep 17 00:00:00 2001
+From: Thorsten Behrens <tbehrens at suse.com>
+Date: Thu, 11 Dec 2014 15:46:30 +0100
+Subject: [PATCH] Also export root= boot param for hostonly-cmdline case.
+
+If there's a root fallback, at least attempt to have it falling
+back to the last root filesystem this system ran off of.
+
+Signed-off-by: Thorsten Behrens <tbehrens at suse.com>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95rootfs-block/module-setup.sh | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index c2f71bb..81de177 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -29,14 +29,18 @@ cmdline_journal() {
+ return 0
+ }
+
+-# called by dracut
+-cmdline() {
++cmdline_rootfs() {
+ local dev=/dev/block/$(find_root_block_device)
+ if [ -e $dev ]; then
+ printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
+ printf " rootflags=%s" "$(find_mp_fsopts /)"
+ printf " rootfstype=%s" "$(find_mp_fstype /)"
+ fi
++}
++
++# called by dracut
++cmdline() {
++ cmdline_rootfs
+ cmdline_journal
+ }
+
+@@ -45,6 +49,8 @@ install() {
+ if [[ $hostonly_cmdline == "yes" ]]; then
+ local _journaldev=$(cmdline_journal)
+ [[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
++ local _rootdev=$(cmdline_rootfs)
++ [[ $_rootdev ]] && printf "%s\n" "$_rootdev" >> "${initdir}/etc/cmdline.d/95root-dev.conf"
+ fi
+
+ inst_multiple umount
diff --git a/0070-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch b/0070-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
new file mode 100644
index 0000000..c6c7398
--- /dev/null
+++ b/0070-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
@@ -0,0 +1,94 @@
+From fe116c1670c622fa117a7765abb17c976cc48333 Mon Sep 17 00:00:00 2001
+From: Thorsten Behrens <tbehrens at suse.com>
+Date: Thu, 11 Dec 2014 15:46:31 +0100
+Subject: [PATCH] Don't create lots of empty cmdline files for hostonly-cmdline
+ case
+
+This aligns other places piping cmdline() output to cmdline.d files
+with the earlier fix for 95rootfs-block.
+
+Signed-off-by: Thorsten Behrens <tbehrens at suse.com>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/90crypt/module-setup.sh | 4 ++--
+ modules.d/90dmraid/module-setup.sh | 4 ++--
+ modules.d/90lvm/module-setup.sh | 4 ++--
+ modules.d/90mdraid/module-setup.sh | 4 ++--
+ modules.d/95resume/module-setup.sh | 4 ++--
+ 5 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 37ae859..ea1e340 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -50,8 +50,8 @@ cmdline() {
+ install() {
+
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline >> "${initdir}/etc/cmdline.d/90crypt.conf"
+- echo >> "${initdir}/etc/cmdline.d/90crypt.conf"
++ local _cryptconf=$(cmdline)
++ [[ $_cryptconf ]] && printf "%s\n" "$_cryptconf" >> "${initdir}/etc/cmdline.d/90crypt.conf"
+ fi
+
+ inst_multiple cryptsetup rmdir readlink umount
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 508598b..044e01f 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -64,8 +64,8 @@ install() {
+ local _i
+
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+- echo >> "${initdir}/etc/cmdline.d/90dmraid.conf"
++ local _raidconf=$(cmdline)
++ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+ fi
+
+ inst_multiple dmraid
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index 5515ac0..592a2e2 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -53,8 +53,8 @@ install() {
+ inst lvm
+
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline >> "${initdir}/etc/cmdline.d/90lvm.conf"
+- echo >> "${initdir}/etc/cmdline.d/90lvm.conf"
++ local _lvmconf=$(cmdline)
++ [[ $_lvmconf ]] && printf "%s\n" "$_lvmconf" >> "${initdir}/etc/cmdline.d/90lvm.conf"
+ fi
+
+ inst_rules "$moddir/64-lvm.rules"
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index ce3394a..747ea8a 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -71,8 +71,8 @@ install() {
+ inst $(command -v mdadm) /sbin/mdadm
+
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+- echo >> "${initdir}/etc/cmdline.d/90mdraid.conf"
++ local _raidconf=$(cmdline)
++ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+ fi
+
+ # <mdadm-3.3 udev rule
+diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
+index 1ddb6e4..dfd4350 100755
+--- a/modules.d/95resume/module-setup.sh
++++ b/modules.d/95resume/module-setup.sh
+@@ -29,8 +29,8 @@ install() {
+ local _bin
+
+ if [[ $hostonly_cmdline == "yes" ]]; then
+- cmdline >> "${initdir}/etc/cmdline.d/95resume.conf"
+- echo >> "${initdir}/etc/cmdline.d/95resume.conf"
++ local _resumeconf=$(cmdline)
++ [[ $_resumeconf ]] && printf "%s\n" "$_resumeconf" >> "${initdir}/etc/cmdline.d/95resume.conf"
+ fi
+
+ # Optional uswsusp support
diff --git a/0071-95rootfs-block-Correctly-terminate-commandline-param.patch b/0071-95rootfs-block-Correctly-terminate-commandline-param.patch
new file mode 100644
index 0000000..bf3006d
--- /dev/null
+++ b/0071-95rootfs-block-Correctly-terminate-commandline-param.patch
@@ -0,0 +1,59 @@
+From 4b6b46bb2aa9e6a72f96501888035f2d38b82266 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare at suse.de>
+Date: Thu, 11 Dec 2014 15:46:32 +0100
+Subject: [PATCH] 95rootfs-block: Correctly terminate commandline parameter
+
+95rootfs-block would not terminate the commandline parameter with
+a space or newline, instead it'll rely on the main routine from
+dracut.sh to do this.
+Which will cause unexpected problems for any modules called
+after this.
+
+So terminate the commandline parameters correctly here and remove
+the newline from dracut.sh.
+
+Signed-off-by: Hannes Reinecke <hare at suse.de>
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ dracut.sh | 1 -
+ modules.d/95rootfs-block/module-setup.sh | 8 ++++----
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 2eba19b..f384d2d 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1299,7 +1299,6 @@ if [[ $print_cmdline ]]; then
+ module_cmdline "$_d_mod"
+ done
+ unset moddir
+- printf "\n"
+ exit 0
+ fi
+
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 81de177..33875f8 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -22,7 +22,7 @@ cmdline_journal() {
+ fi
+
+ if [ -n "$journaldev" ]; then
+- printf " root.journaldev=%s" "$journaldev"
++ echo "root.journaldev=${journaldev}"
+ fi
+ done
+ fi
+@@ -32,9 +32,9 @@ cmdline_journal() {
+ cmdline_rootfs() {
+ local dev=/dev/block/$(find_root_block_device)
+ if [ -e $dev ]; then
+- printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
+- printf " rootflags=%s" "$(find_mp_fsopts /)"
+- printf " rootfstype=%s" "$(find_mp_fstype /)"
++ printf "root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
++ printf "rootflags=%s" "$(find_mp_fsopts /)"
++ printf "rootfstype=%s\n" "$(find_mp_fstype /)"
+ fi
+ }
+
diff --git a/0072-dracut-nbd-Only-complain-of-missing-binary-in-hoston.patch b/0072-dracut-nbd-Only-complain-of-missing-binary-in-hoston.patch
new file mode 100644
index 0000000..55201f1
--- /dev/null
+++ b/0072-dracut-nbd-Only-complain-of-missing-binary-in-hoston.patch
@@ -0,0 +1,39 @@
+From e683985d103f1b0f15a9ccd9678169f4fb7aeb5f Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn at suse.de>
+Date: Thu, 11 Dec 2014 15:46:33 +0100
+Subject: [PATCH] dracut: nbd: Only complain of missing binary in hostonly mode
+ if
+
+ rootfs is on nbd
+
+In not hostonly mode, require_binaries will still complain.
+If in hostonly mode and the module is explicitly added via -a nbd, then
+install() section will still complain later:
+dracut-install: ERROR: installing 'nbd-client'
+
+Signed-off-by: Thomas Renninger <trenn at suse.de>
+---
+ modules.d/95nbd/module-setup.sh | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
+index 4f9e350..3cb6f49 100755
+--- a/modules.d/95nbd/module-setup.sh
++++ b/modules.d/95nbd/module-setup.sh
+@@ -3,8 +3,6 @@
+ # called by dracut
+ check() {
+ local _rootdev
+- # If our prerequisites are not met, fail.
+- require_binaries nbd-client || return 1
+
+ # if an nbd device is not somewhere in the chain of devices root is
+ # mounted on, fail the hostonly check.
+@@ -15,6 +13,7 @@ check() {
+ [[ -b /dev/block/$_rootdev ]] || return 1
+ check_block_and_slaves is_nbd "$_rootdev" || return 255
+ }
++ require_binaries nbd-client || return 1
+
+ return 0
+ }
diff --git a/0073-dracut-functions.sh-for-module-handling-strip-all-.k.patch b/0073-dracut-functions.sh-for-module-handling-strip-all-.k.patch
new file mode 100644
index 0000000..02f7dce
--- /dev/null
+++ b/0073-dracut-functions.sh-for-module-handling-strip-all-.k.patch
@@ -0,0 +1,72 @@
+From bea41b898a93e4437640817964861bbb694b01e6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 17 Dec 2014 11:22:46 +0100
+Subject: [PATCH] dracut-functions.sh: for module handling, strip all ".ko*"
+
+Just strip anything after ".ko" including ".ko", otherwise compressed
+modules are not stripped, if they end on e.g. ".ko.gz"
+---
+ dracut-functions.sh | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index b91d8dc..410960d 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1461,7 +1461,7 @@ install_kmod_with_fw() {
+
+ if [[ $omit_drivers ]]; then
+ local _kmod=${1##*/}
+- _kmod=${_kmod%.ko}
++ _kmod=${_kmod%.ko*}
+ _kmod=${_kmod/-/_}
+ if [[ "$_kmod" =~ $omit_drivers ]]; then
+ dinfo "Omitting driver $_kmod"
+@@ -1475,7 +1475,7 @@ install_kmod_with_fw() {
+
+ if [[ $silent_omit_drivers ]]; then
+ local _kmod=${1##*/}
+- _kmod=${_kmod%.ko}
++ _kmod=${_kmod%.ko*}
+ _kmod=${_kmod/-/_}
+ [[ "$_kmod" =~ $silent_omit_drivers ]] && return 0
+ [[ "${1##*/lib/modules/$kernel/}" =~ $silent_omit_drivers ]] && return 0
+@@ -1599,7 +1599,7 @@ module_is_host_only() {
+ local _mod=$1
+ local _modenc a i _k _s _v _aliases
+ _mod=${_mod##*/}
+- _mod=${_mod%.ko}
++ _mod=${_mod%.ko*}
+ _modenc=${_mod//-/_}
+
+ [[ " $add_drivers " == *\ ${_mod}\ * ]] && return 0
+@@ -1691,16 +1691,16 @@ instmods() {
+ _mod=${_mod##*/}
+ # Check for aliased modules
+ _modalias=$(modinfo -k $kernel -F filename $_mod 2> /dev/null)
+- _modalias=${_modalias%.ko}
+- if [ "${_modalias##*/}" != "$_mod" ] ; then
++ _modalias=${_modalias%.ko*}
++ if [[ $_modalias ]] && [ "${_modalias##*/}" != "${_mod%.ko*}" ] ; then
+ _mod=${_modalias##*/}
+ fi
+
+ # if we are already installed, skip this module and go on
+ # to the next one.
+ if [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && \
+- [[ -f "$DRACUT_KERNEL_LAZY_HASHDIR/${_mod%.ko}.ko" ]]; then
+- read _ret <"$DRACUT_KERNEL_LAZY_HASHDIR/${_mod%.ko}.ko"
++ [[ -f "$DRACUT_KERNEL_LAZY_HASHDIR/${_mod%.ko*}" ]]; then
++ read _ret <"$DRACUT_KERNEL_LAZY_HASHDIR/${_mod%.ko*}"
+ return $_ret
+ fi
+
+@@ -1730,7 +1730,7 @@ instmods() {
+ ((_ret+=$?))
+ else
+ [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && \
+- echo $_mod >> "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist"
++ echo ${_mod%.ko*} >> "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist"
+ fi
+ ;;
+ esac
diff --git a/0074-Revert-95rootfs-block-Correctly-terminate-commandlin.patch b/0074-Revert-95rootfs-block-Correctly-terminate-commandlin.patch
new file mode 100644
index 0000000..4439846
--- /dev/null
+++ b/0074-Revert-95rootfs-block-Correctly-terminate-commandlin.patch
@@ -0,0 +1,72 @@
+From a17d5cf4941addd0a7e94129062520fd64585a7d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 17 Dec 2014 11:44:18 +0100
+Subject: [PATCH] Revert "95rootfs-block: Correctly terminate commandline
+ parameter"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This reverts commit 4b6b46bb2aa9e6a72f96501888035f2d38b82266.
+
+$ ./dracut.sh -l --print-cmdline
+root=UUID=d5e53483-30bc-4119-8c0c-841d47a2f76brootflags=rw,noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cacherootfstype=btrfs
+
+instead of:
+
+$ ./dracut.sh -l --print-cmdline
+ root=UUID=d5e53483-30bc-4119-8c0c-841d47a2f76b
+rootflags=rw,noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache
+rootfstype=btrfs
+
+and also
+
+$ make testimage
+…
+ *** Store current command line parameters ***
+Stored kernel commandline:
+root=UUID=d5e53483-30bc-4119-8c0c-841d47a2f76brootflags=rw,noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cacherootfstype=btrfs
+…
+---
+ dracut.sh | 1 +
+ modules.d/95rootfs-block/module-setup.sh | 8 ++++----
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index f384d2d..2eba19b 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1299,6 +1299,7 @@ if [[ $print_cmdline ]]; then
+ module_cmdline "$_d_mod"
+ done
+ unset moddir
++ printf "\n"
+ exit 0
+ fi
+
+diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
+index 33875f8..81de177 100755
+--- a/modules.d/95rootfs-block/module-setup.sh
++++ b/modules.d/95rootfs-block/module-setup.sh
+@@ -22,7 +22,7 @@ cmdline_journal() {
+ fi
+
+ if [ -n "$journaldev" ]; then
+- echo "root.journaldev=${journaldev}"
++ printf " root.journaldev=%s" "$journaldev"
+ fi
+ done
+ fi
+@@ -32,9 +32,9 @@ cmdline_journal() {
+ cmdline_rootfs() {
+ local dev=/dev/block/$(find_root_block_device)
+ if [ -e $dev ]; then
+- printf "root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
+- printf "rootflags=%s" "$(find_mp_fsopts /)"
+- printf "rootfstype=%s\n" "$(find_mp_fstype /)"
++ printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
++ printf " rootflags=%s" "$(find_mp_fsopts /)"
++ printf " rootfstype=%s" "$(find_mp_fstype /)"
+ fi
+ }
+
diff --git a/0075-resume-make-use-of-systemd-hibernate-resume-if-exist.patch b/0075-resume-make-use-of-systemd-hibernate-resume-if-exist.patch
new file mode 100644
index 0000000..03ddcb0
--- /dev/null
+++ b/0075-resume-make-use-of-systemd-hibernate-resume-if-exist.patch
@@ -0,0 +1,31 @@
+From 733c71ce9e2d161c9e04772aeb1c5fb38e3fcb3a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 17 Dec 2014 12:08:37 +0100
+Subject: [PATCH] resume: make use of systemd-hibernate-resume, if existant
+
+In systemd mode, and if systemd-hibernate-resume exists, use it
+exclusively.
+---
+ modules.d/95resume/module-setup.sh | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
+index dfd4350..7fe6df3 100755
+--- a/modules.d/95resume/module-setup.sh
++++ b/modules.d/95resume/module-setup.sh
+@@ -33,6 +33,15 @@ install() {
+ [[ $_resumeconf ]] && printf "%s\n" "$_resumeconf" >> "${initdir}/etc/cmdline.d/95resume.conf"
+ fi
+
++ # if systemd is included and has the hibernate-resume tool, use it and nothing else
++ if dracut_module_included "systemd" && [[ -x $systemdutildir/systemd-hibernate-resume ]]; then
++ inst_multiple -o \
++ $systemdutildir/system-generators/systemd-hibernate-resume-generator \
++ $systemdsystemunitdir/systemd-hibernate-resume at .service \
++ $systemdutildir/systemd-hibernate-resume
++ return 0
++ fi
++
+ # Optional uswsusp support
+ for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume
+ do
diff --git a/0076-systemd-add-systemd-journald-audit.socket.patch b/0076-systemd-add-systemd-journald-audit.socket.patch
new file mode 100644
index 0000000..6363ba9
--- /dev/null
+++ b/0076-systemd-add-systemd-journald-audit.socket.patch
@@ -0,0 +1,29 @@
+From 3e7a05f2a5f051a97ac08885f5288bc310c367c2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 19 Dec 2014 12:47:49 +0100
+Subject: [PATCH] systemd: add systemd-journald-audit.socket
+
+---
+ modules.d/98systemd/module-setup.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index 53e07a2..51ea288 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -83,6 +83,7 @@ install() {
+ $systemdsystemunitdir/systemd-udevd-kernel.socket \
+ $systemdsystemunitdir/systemd-ask-password-plymouth.path \
+ $systemdsystemunitdir/systemd-journald.socket \
++ $systemdsystemunitdir/systemd-journald-audit.socket \
+ $systemdsystemunitdir/systemd-ask-password-console.service \
+ $systemdsystemunitdir/systemd-modules-load.service \
+ $systemdsystemunitdir/systemd-halt.service \
+@@ -105,6 +106,7 @@ install() {
+ $systemdsystemunitdir/sockets.target.wants/systemd-udevd-control.socket \
+ $systemdsystemunitdir/sockets.target.wants/systemd-udevd-kernel.socket \
+ $systemdsystemunitdir/sockets.target.wants/systemd-journald.socket \
++ $systemdsystemunitdir/sockets.target.wants/systemd-journald-audit.socket \
+ $systemdsystemunitdir/sockets.target.wants/systemd-journald-dev-log.socket \
+ $systemdsystemunitdir/sysinit.target.wants/systemd-udevd.service \
+ $systemdsystemunitdir/sysinit.target.wants/systemd-udev-trigger.service \
diff --git a/0077-dracut-Don-t-fail-at-copying-files-when-including-di.patch b/0077-dracut-Don-t-fail-at-copying-files-when-including-di.patch
new file mode 100644
index 0000000..3235546
--- /dev/null
+++ b/0077-dracut-Don-t-fail-at-copying-files-when-including-di.patch
@@ -0,0 +1,46 @@
+From 332ecaa900a5af83ffae64f3e103270e49de88de Mon Sep 17 00:00:00 2001
+From: Erwan Velu <erwan.velu at enovance.com>
+Date: Wed, 17 Dec 2014 17:04:19 +0100
+Subject: [PATCH] dracut: Don't fail at copying files when including
+ directories
+
+When including a directory, the files were considered in the directory
+name which lead to messages like :
+
+cp: failed to access '/var/tmp/initramfs.L9s2zO///init-func': No such file or directory
+
+This patch does make the destdir more explicit and copy files into the
+destination directory instead of destdir/filename/
+---
+ dracut.sh | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 2eba19b..07e4965 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1493,12 +1493,13 @@ while pop include_src src && pop include_target tgt; do
+ inst $src $tgt
+ else
+ ddebug "Including directory: $src"
+- mkdir -p "${initdir}/${tgt}"
++ destdir="${initdir}/${tgt}"
++ mkdir -p "$destdir"
+ # check for preexisting symlinks, so we can cope with the
+ # symlinks to $prefix
+ for i in "$src"/*; do
+ [[ -e "$i" || -h "$i" ]] || continue
+- s=${initdir}/${tgt}/${i#$src/}
++ s=${destdir}/${i#$src/}
+ if [[ -d "$i" ]]; then
+ if ! [[ -e "$s" ]]; then
+ mkdir -m 0755 -p "$s"
+@@ -1506,7 +1507,7 @@ while pop include_src src && pop include_target tgt; do
+ fi
+ cp --reflink=auto --sparse=auto -fa -t "$s" "$i"/*
+ else
+- cp --reflink=auto --sparse=auto -fa -t "$s" "$i"
++ cp --reflink=auto --sparse=auto -fa -t "$destdir" "$i"
+ fi
+ done
+ fi
diff --git a/dracut.spec b/dracut.spec
index f4b4ac6..5616cb2 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -11,7 +11,7 @@
Name: dracut
Version: 040
-Release: 30.git20141208%{?dist}
+Release: 78.git20141219%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@@ -59,6 +59,54 @@ Patch26: 0026-40network-Fix-the-syntax-to-correct-the-judgment-sen.patch
Patch27: 0027-initrd-release-move-from-etc-to-usr-lib.patch
Patch28: 0028-dracut.conf.d-fedora.conf.example-turn-on-early_micr.patch
Patch29: 0029-Fixed-the-dracut-shutdown.service.patch
+Patch30: 0030-dmsquash-live-setup-the-images-in-run-initramfs.patch
+Patch31: 0031-mkinitrd-suse-Update-to-sles12-SUSE-state.patch
+Patch32: 0032-systemd-always-tries-to-load-autofs4.patch
+Patch33: 0033-Fixup-mdraid-setup.patch
+Patch34: 0034-95udev-rules-Include-correct-sg3_utils-rules.patch
+Patch35: 0035-90multipath-install-correct-multipath-rules.patch
+Patch36: 0036-95iscsi-Autodetect-iSCSI-firmware.patch
+Patch37: 0037-95iscsi-Install-libgcc_s-library.patch
+Patch38: 0038-95iscsi-Set-correct-iscsi_started-value-for-iSCSI-fi.patch
+Patch39: 0039-95iscsi-strip-one-set-of-quotes-when-calling-initque.patch
+Patch40: 0040-95iscsi-Fixup-bnx2i-offload-booting.patch
+Patch41: 0041-95iscsi-More-empty-cmdline-fixes.patch
+Patch42: 0042-95iscsi-generate-commandline-for-software-iscsi.patch
+Patch43: 0043-iscsi-iscsi.initiator-and-others-can-and-must-only-s.patch
+Patch44: 0044-Implement-rd.timeout-to-modify-the-device-timeout.patch
+Patch45: 0045-Do-not-call-lvm-for-non-LVM-device-mapper-devices.patch
+Patch46: 0046-Print-stored-dracut-commandline-during-initramfs-bui.patch
+Patch47: 0047-Align-dev_unit_name-with-systemd-s-function.patch
+Patch48: 0048-Generate-fallback-mount-unit-for-root-filesystem.patch
+Patch49: 0049-99base-warn-on-invalid-command-for-initqueue.patch
+Patch50: 0050-Handle-module-alias-properly.patch
+Patch51: 0051-99base-Increase-initqueue-timeout-in-non-systemd-cas.patch
+Patch52: 0052-90lvm-Install-dm-snapshot-module.patch
+Patch53: 0053-Check-for-logfile-logfile-option-and-create-it-if-ne.patch
+Patch54: 0054-dracut.sh-Avoid-duplicate-devices-in-host_devs.patch
+Patch55: 0055-dracut.sh-Fix-UUID-fstab-parsing-in-case-mount-optio.patch
+Patch56: 0056-dracut.usage.asc-Remove-distro-specific-help-from-ma.patch
+Patch57: 0057-nfs-Add-ip-.-and-root-nfs.-parameters-to-internal-dr.patch
+Patch58: 0058-95iscsi-parse-output-from-iscsiadm-correctly.patch
+Patch59: 0059-dracut-Do-not-stop-installing-drivers-if-one-fails.patch
+Patch60: 0060-95fcoe-update-fcoe-interface-check.patch
+Patch61: 0061-95fcoe-Store-current-configuration-in-dracut-cmdline.patch
+Patch62: 0062-95fcoe-skip-VLAN-devices-in-fcoe-up.patch
+Patch63: 0063-95fcoe-start-lldpad-separately.patch
+Patch64: 0064-Enhance-suse.conf-and-debug-module-example-with-SUSE.patch
+Patch65: 0065-40network-add-missing-_arch-variable-declaration.patch
+Patch66: 0066-99base-Add-chown-binary.patch
+Patch67: 0067-90kernel-modules-install-scsi_dh_alua.patch
+Patch68: 0068-Fix-non-export-of-journal-dev-boot-options.patch
+Patch69: 0069-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
+Patch70: 0070-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
+Patch71: 0071-95rootfs-block-Correctly-terminate-commandline-param.patch
+Patch72: 0072-dracut-nbd-Only-complain-of-missing-binary-in-hoston.patch
+Patch73: 0073-dracut-functions.sh-for-module-handling-strip-all-.k.patch
+Patch74: 0074-Revert-95rootfs-block-Correctly-terminate-commandlin.patch
+Patch75: 0075-resume-make-use-of-systemd-hibernate-resume-if-exist.patch
+Patch76: 0076-systemd-add-systemd-journald-audit.socket.patch
+Patch77: 0077-dracut-Don-t-fail-at-copying-files-when-including-di.patch
Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
@@ -507,6 +555,9 @@ rm -rf -- $RPM_BUILD_ROOT
%endif
%changelog
+* Fri Dec 19 2014 Harald Hoyer <harald at redhat.com> 040-78.git20141219
+- git snapshot
+
* Mon Dec 08 2014 Harald Hoyer <harald at redhat.com> 040-30.git20141208
- fixed dracut-shutdown
More information about the scm-commits
mailing list