summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2012-06-25 14:08:03 +0200
committerHarald Hoyer <harald@redhat.com>2012-06-25 14:08:03 +0200
commit53e9906e08886c6a359389f3b52660c841a58f26 (patch)
treeedff591d67821cd9e31bb713a9ec1f3877acd0c9
parent5414ff20d668aba1fe2bb333715344ee120d8090 (diff)
downloaddracut-53e9906e08886c6a359389f3b52660c841a58f26.tar.gz
dracut-53e9906e08886c6a359389f3b52660c841a58f26.tar.xz
dracut-53e9906e08886c6a359389f3b52660c841a58f26.zip
dracut-019-92.git20120625
- support vlan tagged binding - speedup initramfs emergency service - speedup image creation - fix installkernel() return codes Resolves: rhbz#833256 - add qemu and qemu-net modules to add qemu drivers even in host-only - speedup btrfs and xfs fsck (nop) - no more mknod in the initramfs (fixes plymouth on s390)
-rw-r--r--0062-network-support-vlan-tagged-bonding.patch71
-rw-r--r--0063-systemd-emergency.service-remove-Type-idle.patch22
-rw-r--r--0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch74
-rw-r--r--0065-dracut-functions.sh-replace-strstr.patch23
-rw-r--r--0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch23
-rw-r--r--0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch26
-rw-r--r--0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch79
-rw-r--r--0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch43
-rw-r--r--0070-dracut-functions.sh-inst_decompress-simplify-functio.patch44
-rw-r--r--0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch38
-rw-r--r--0072-dracut.sh-speedup-strip.patch39
-rw-r--r--0073-profile.py-do-not-count-negative-timestamp-differenc.patch23
-rw-r--r--0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch84
-rw-r--r--0075-base-module-setup.sh-use-force-for-ln.patch43
-rw-r--r--0076-systemd-module-setup.sh-only-create-empty-machine-id.patch25
-rw-r--r--0077-systemd-module-setup.sh-ln-with-force.patch50
-rw-r--r--0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch26
-rw-r--r--0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch21
-rw-r--r--0080-no-more-mknod-in-the-initramfs.patch62
-rw-r--r--0081-udev-rules-module-setup.sh-ln-with-force.patch22
-rw-r--r--0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch25
-rw-r--r--0083-network-module-setup.sh-fixed-installkernel-return-c.patch45
-rw-r--r--0084-iscsi-module-setup.sh-speedup-installkernel.patch61
-rw-r--r--0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch24
-rw-r--r--0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch38
-rw-r--r--0087-multipath-module-setup.sh-installkernel-fix-return-c.patch68
-rw-r--r--0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch127
-rw-r--r--0089-dracut-logger.sh-use-for-numeric-comparisons.patch80
-rw-r--r--0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch54
-rw-r--r--0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch27
-rw-r--r--dracut.spec44
31 files changed, 1430 insertions, 1 deletions
diff --git a/0062-network-support-vlan-tagged-bonding.patch b/0062-network-support-vlan-tagged-bonding.patch
new file mode 100644
index 0000000..be70150
--- /dev/null
+++ b/0062-network-support-vlan-tagged-bonding.patch
@@ -0,0 +1,71 @@
+From 472edf825e478826bc7735961961576fe7c94c5f Mon Sep 17 00:00:00 2001
+From: Cong Wang <xiyou.wangcong@gmail.com>
+Date: Thu, 21 Jun 2012 11:44:35 +0800
+Subject: [PATCH] network: support vlan tagged bonding
+
+This patch adds support of vlan tagged bonding, for example,
+bond0.2. In case of regression, I also tested bond0 and eth0.2,
+all work fine.
+
+Cc: Harald Hoyer <harald@redhat.com>
+Cc: Dave Young <dyoung@redhat.com>
+Cc: Vivek Goyal <vgoyal@redhat.com>
+Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
+---
+ modules.d/40network/ifup.sh | 8 ++++++--
+ modules.d/40network/net-genrules.sh | 6 +++---
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
+index 31eb966..316a21a 100755
+--- a/modules.d/40network/ifup.sh
++++ b/modules.d/40network/ifup.sh
+@@ -188,7 +188,7 @@ if [ -e /tmp/bridge.info ]; then
+ brctl setfd $bridgename 0
+ for ethname in $ethnames ; do
+ if [ "$ethname" = "$bondname" ] ; then
+- DO_BOND_SETUP=yes ifup $bondname
++ DO_BOND_SETUP=yes ifup $bondname -m
+ else
+ ip link set $ethname up
+ fi
+@@ -211,7 +211,11 @@ get_vid() {
+
+ if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then
+ modprobe 8021q
+- ip link set "$phydevice" up
++ if [ "$phydevice" = "$bondname" ] ; then
++ DO_BOND_SETUP=yes ifup $phydevice -m
++ else
++ ip link set "$phydevice" up
++ fi
+ wait_for_if_up "$phydevice"
+ ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname; echo $?)"
+ fi
+diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
+index 99d0fe5..867abcf 100755
+--- a/modules.d/40network/net-genrules.sh
++++ b/modules.d/40network/net-genrules.sh
+@@ -21,19 +21,19 @@ fix_bootif() {
+ # bridge: attempt only the defined interface
+ if [ -e /tmp/bridge.info ]; then
+ . /tmp/bridge.info
+- IFACES=${ethnames%% *}
++ IFACES+=" ${ethnames%% *}"
+ fi
+
+ # bond: attempt only the defined interface (override bridge defines)
+ if [ -e /tmp/bond.info ]; then
+ . /tmp/bond.info
+ # It is enough to fire up only one
+- IFACES=${bondslaves%% *}
++ IFACES+=" ${bondslaves%% *}"
+ fi
+
+ if [ -e /tmp/vlan.info ]; then
+ . /tmp/vlan.info
+- IFACES=$phydevice
++ IFACES+=" $phydevice"
+ fi
+
+ ifup='/sbin/ifup $env{INTERFACE}'
diff --git a/0063-systemd-emergency.service-remove-Type-idle.patch b/0063-systemd-emergency.service-remove-Type-idle.patch
new file mode 100644
index 0000000..41089a0
--- /dev/null
+++ b/0063-systemd-emergency.service-remove-Type-idle.patch
@@ -0,0 +1,22 @@
+From e3295047b101a9a92c8548909cd18b2675bc9977 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 21 Jun 2012 13:51:49 +0200
+Subject: [PATCH] systemd/emergency.service: remove Type=idle
+
+Type=idle might cause a 3 second delay.
+---
+ modules.d/98systemd/emergency.service | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules.d/98systemd/emergency.service b/modules.d/98systemd/emergency.service
+index 431e2b0..b79af22 100644
+--- a/modules.d/98systemd/emergency.service
++++ b/modules.d/98systemd/emergency.service
+@@ -18,7 +18,6 @@ ExecStartPre=-/bin/plymouth quit
+ ExecStartPre=-/bin/echo -e '\n\nEntering emergency mode. Exit the shell to continue.\nType "journalctl" to view system logs.\n'
+ ExecStart=-/bin/sh -i -l
+ ExecStopPost=-/bin/rm -f /.console_lock
+-Type=idle
+ StandardInput=tty-force
+ StandardOutput=inherit
+ StandardError=inherit
diff --git a/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch b/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
new file mode 100644
index 0000000..1339172
--- /dev/null
+++ b/0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
@@ -0,0 +1,74 @@
+From d17e0fcd431e823c3f93bbcff8e853578d6bfdc9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 21 Jun 2012 14:10:41 +0200
+Subject: [PATCH] systemd: add ConditionPathExists=/etc/initrd-release to
+ services
+
+---
+ modules.d/98systemd/dracut-cmdline.service | 1 +
+ modules.d/98systemd/dracut-initqueue.service | 1 +
+ modules.d/98systemd/dracut-pre-pivot.service | 1 +
+ modules.d/98systemd/dracut-pre-trigger.service | 1 +
+ modules.d/98systemd/dracut-pre-udev.service | 1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/modules.d/98systemd/dracut-cmdline.service b/modules.d/98systemd/dracut-cmdline.service
+index 938ccbe..c84f62b 100644
+--- a/modules.d/98systemd/dracut-cmdline.service
++++ b/modules.d/98systemd/dracut-cmdline.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-initqueue.service b/modules.d/98systemd/dracut-initqueue.service
+index 31fe9e4..4fde539 100644
+--- a/modules.d/98systemd/dracut-initqueue.service
++++ b/modules.d/98systemd/dracut-initqueue.service
+@@ -22,6 +22,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-pivot.service b/modules.d/98systemd/dracut-pre-pivot.service
+index e61750b..38d252d 100644
+--- a/modules.d/98systemd/dracut-pre-pivot.service
++++ b/modules.d/98systemd/dracut-pre-pivot.service
+@@ -21,6 +21,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-trigger.service b/modules.d/98systemd/dracut-pre-trigger.service
+index b06d17f..97c505d 100644
+--- a/modules.d/98systemd/dracut-pre-trigger.service
++++ b/modules.d/98systemd/dracut-pre-trigger.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
+diff --git a/modules.d/98systemd/dracut-pre-udev.service b/modules.d/98systemd/dracut-pre-udev.service
+index d867b38..9b83e3e 100644
+--- a/modules.d/98systemd/dracut-pre-udev.service
++++ b/modules.d/98systemd/dracut-pre-udev.service
+@@ -23,6 +23,7 @@ StandardInput=null
+ StandardOutput=syslog
+ StandardError=syslog+console
+ KillMode=process
++ConditionPathExists=/etc/initrd-release
+
+ # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+ # terminates cleanly.
diff --git a/0065-dracut-functions.sh-replace-strstr.patch b/0065-dracut-functions.sh-replace-strstr.patch
new file mode 100644
index 0000000..86a1b2d
--- /dev/null
+++ b/0065-dracut-functions.sh-replace-strstr.patch
@@ -0,0 +1,23 @@
+From bc616b4d5660d8d79465202bdc3a1b43b4ea3ba1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 08:57:20 +0200
+Subject: [PATCH] dracut-functions.sh: replace strstr()
+
+the new strstr() is faster, when compared
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index d4a766b..ace5a0b 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -21,7 +21,7 @@
+ #
+
+ # Generic substring function. If $2 is in $1, return 0.
+-strstr() { [ "${1#*$2*}" != "$1" ]; }
++strstr() { [[ $1 = *$2* ]]; }
+
+ if ! [[ $dracutbasedir ]]; then
+ dracutbasedir=${BASH_SOURCE[0]%/*}
diff --git a/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch b/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
new file mode 100644
index 0000000..9084fdf
--- /dev/null
+++ b/0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
@@ -0,0 +1,23 @@
+From 68966a1d7e6dc9d6be054effa62d61836704714b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 08:58:39 +0200
+Subject: [PATCH] dracut-functions.sh: mksubdirs(): check for dir existence
+ first
+
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index ace5a0b..3b562e7 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -74,7 +74,7 @@ fi
+
+ # Create all subdirectories for given path without creating the last element.
+ # $1 = path
+-mksubdirs() { mkdir -m 0755 -p ${1%/*}; }
++mksubdirs() { [[ -e ${1%/*} ]] || mkdir -m 0755 -p ${1%/*}; }
+
+ # Version comparision function. Assumes Linux style version scheme.
+ # $1 = version a
diff --git a/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch b/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
new file mode 100644
index 0000000..fe8d509
--- /dev/null
+++ b/0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
@@ -0,0 +1,26 @@
+From f550ba07400662633295c9681a80787fc44e61fa Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 08:59:22 +0200
+Subject: [PATCH] dracut-functions.sh: cp with --reflink=auto and
+ --sparse=auto
+
+cp will use COW data copy most of the time. So, it's even better than
+hardlink, because we don't have to care about hardlinks, when modifying
+files in post.
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 3b562e7..b9ce688 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -435,7 +435,7 @@ inst_simple() {
+ inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
+ fi
+ ddebug "Installing $_src"
+- cp --sparse=always -pfL "$_src" "${initdir}/$target"
++ cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
+ }
+
+ # find symlinks linked to given library file
diff --git a/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch b/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
new file mode 100644
index 0000000..74ee576
--- /dev/null
+++ b/0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
@@ -0,0 +1,79 @@
+From a6b48b4c239d8ebacf545c27aa801ba0f8762a2b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 14:50:06 +0200
+Subject: [PATCH] Add qemu kernel modules, if we detect a qemu instance
+
+Regardless of the host-only setting, add all know kernel driver for qemu
+instances to support changing the virtual hardware.
+---
+ dracut.spec | 2 ++
+ modules.d/90qemu-net/module-setup.sh | 16 ++++++++++++++++
+ modules.d/90qemu/module-setup.sh | 16 ++++++++++++++++
+ 3 files changed, 34 insertions(+)
+ create mode 100755 modules.d/90qemu-net/module-setup.sh
+ create mode 100755 modules.d/90qemu/module-setup.sh
+
+diff --git a/dracut.spec b/dracut.spec
+index 982a66d..b19d15b 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -271,6 +271,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/90lvm
+ %{dracutlibdir}/modules.d/90mdraid
+ %{dracutlibdir}/modules.d/90multipath
++%{dracutlibdir}/modules.d/90qemu
+ %{dracutlibdir}/modules.d/91crypt-gpg
+ %{dracutlibdir}/modules.d/95debug
+ %{dracutlibdir}/modules.d/95resume
+@@ -313,6 +314,7 @@ rm -rf $RPM_BUILD_ROOT
+ %{dracutlibdir}/modules.d/95fcoe
+ %{dracutlibdir}/modules.d/95iscsi
+ %{dracutlibdir}/modules.d/90livenet
++%{dracutlibdir}/modules.d/90qemu-net
+ %{dracutlibdir}/modules.d/95nbd
+ %{dracutlibdir}/modules.d/95nfs
+ %{dracutlibdir}/modules.d/95ssh-client
+diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh
+new file mode 100755
+index 0000000..3d61792
+--- /dev/null
++++ b/modules.d/90qemu-net/module-setup.sh
+@@ -0,0 +1,16 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++check() {
++ vm=$(systemd-detect-virt --vm)
++ (($? != 0)) && return 255
++ [[ $vm = "qemu" ]] && return 0
++ [[ $vm = "kvm" ]] && return 0
++ return 255
++}
++
++installkernel() {
++ # qemu specific modules
++ hostonly='' instmods virtio_net e1000 8139cp pcnet32 e100 ne2k_pci
++}
+diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh
+new file mode 100755
+index 0000000..094f5a3
+--- /dev/null
++++ b/modules.d/90qemu/module-setup.sh
+@@ -0,0 +1,16 @@
++#!/bin/bash
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++check() {
++ vm=$(systemd-detect-virt --vm)
++ (($? != 0)) && return 255
++ [[ $vm = "qemu" ]] && return 0
++ [[ $vm = "kvm" ]] && return 0
++ return 255
++}
++
++installkernel() {
++ # qemu specific modules
++ hostonly='' instmods virtio_blk virtio virtio_ring virtio_pci ata_piix ata_generic pata_acpi cdrom sr_mod ahci virtio_scsi
++}
diff --git a/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch b/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
new file mode 100644
index 0000000..c163fad
--- /dev/null
+++ b/0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
@@ -0,0 +1,43 @@
+From 7953a6ab718185096e5729482f91b319d4a67e90 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:09:07 +0200
+Subject: [PATCH] dracut-functions.sh:inst_simple() do inst_symlink for
+ symlinks
+
+---
+ dracut-functions.sh | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index b9ce688..273d2a5 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -424,18 +424,21 @@ inst_simple() {
+ [[ -f "$1" ]] || return 1
+ strstr "$1" "/" || return 1
+
+- local _src=$1 target="${2:-$1}"
+- if ! [[ -d ${initdir}/$target ]]; then
+- [[ -e ${initdir}/$target ]] && return 0
+- [[ -L ${initdir}/$target ]] && return 0
+- [[ -d "${initdir}/${target%/*}" ]] || inst_dir "${target%/*}"
++ local _src=$1 _target="${2:-$1}"
++
++ [[ -L $_src ]] && return inst_symlink $_src $_target
++
++ if ! [[ -d ${initdir}/$_target ]]; then
++ [[ -e ${initdir}/$_target ]] && return 0
++ [[ -L ${initdir}/$_target ]] && return 0
++ [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
+ fi
+ # install checksum files also
+ if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+- inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
++ inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
+ fi
+ ddebug "Installing $_src"
+- cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
++ cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
+ }
+
+ # find symlinks linked to given library file
diff --git a/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch b/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
new file mode 100644
index 0000000..a047130
--- /dev/null
+++ b/0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
@@ -0,0 +1,44 @@
+From 04569ec8da0a553a7e4dfd37ce1d62508e3441eb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:09:45 +0200
+Subject: [PATCH] dracut-functions.sh:inst_decompress() simplify function
+
+---
+ dracut-functions.sh | 17 ++---------------
+ 1 file changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 273d2a5..9861bb7 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -773,7 +773,7 @@ inst_libdir_file() {
+ # Function install targets in the same paths inside overlay but decompressed
+ # and without extensions (.gz, .bz2).
+ inst_decompress() {
+- local _src _dst _realsrc _realdst _cmd
++ local _src _cmd
+
+ for _src in $@
+ do
+@@ -782,20 +782,7 @@ inst_decompress() {
+ *.bz2) _cmd='bzip2 -d' ;;
+ *) return 1 ;;
+ esac
+-
+- if [[ -L ${_src} ]]
+- then
+- _realsrc="$(readlink -f ${_src})" # symlink target with extension
+- _dst="${_src%.*}" # symlink without extension
+- _realdst="${_realsrc%.*}" # symlink target without extension
+- mksubdirs "${initdir}/${_src}"
+- # Create symlink without extension to target without extension.
+- ln -sfn "${_realdst}" "${initdir}/${_dst}"
+- fi
+-
+- # If the source is symlink we operate on its target.
+- [[ ${_realsrc} ]] && _src=${_realsrc}
+- inst ${_src}
++ inst_simple ${_src}
+ # Decompress with chosen tool. We assume that tool changes name e.g.
+ # from 'name.gz' to 'name'.
+ ${_cmd} "${initdir}${_src}"
diff --git a/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch b/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
new file mode 100644
index 0000000..539cb18
--- /dev/null
+++ b/0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
@@ -0,0 +1,38 @@
+From 48e4a9a11c3d1ccd138e8a6dbea68010f47a1359 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:10:11 +0200
+Subject: [PATCH] dracut-functions.sh:find_kernel_modules_by_path() use IFS=:
+
+For modules.dep use simpler IFS=: to read the file.
+---
+ dracut-functions.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 9861bb7..cecd59a 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1115,17 +1115,22 @@ for_each_kmod_dep() {
+
+
+ find_kernel_modules_by_path () (
++ local _OLDIFS
+ if ! [[ $hostonly ]]; then
++ _OLDIFS=$IFS
++ IFS=:
+ while read a rest; do
+ if [[ "${a##kernel}" != "$a" ]]; then
+ [[ "${a##kernel/$1}" != "$a" ]] || continue
+ fi
+- echo $srcmods/${a%:}
++ echo $srcmods/$a
+ done < $srcmods/modules.dep
++ IFS=$_OLDIFS
+ else
+ ( cd /sys/module; echo *; ) \
+ | xargs modinfo -F filename -k $kernel 2>/dev/null
+ fi
++ return 0
+ )
+
+ find_kernel_modules () {
diff --git a/0072-dracut.sh-speedup-strip.patch b/0072-dracut.sh-speedup-strip.patch
new file mode 100644
index 0000000..fe05f37
--- /dev/null
+++ b/0072-dracut.sh-speedup-strip.patch
@@ -0,0 +1,39 @@
+From 8e41fb1dfd47f99d374bf7190344400e6bb1d018 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:13:47 +0200
+Subject: [PATCH] dracut.sh: speedup "strip"
+
+---
+ dracut.sh | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 5600ec0..cc3669a 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -844,7 +844,7 @@ fi
+
+ # strip binaries
+ if [[ $do_strip = yes ]] ; then
+- for p in strip grep find; do
++ for p in strip xargs find; do
+ if ! type -P $p >/dev/null; then
+ derror "Could not find '$p'. You should run $0 with '--nostrip'."
+ do_strip=no
+@@ -853,12 +853,10 @@ if [[ $do_strip = yes ]] ; then
+ fi
+
+ if [[ $do_strip = yes ]] ; then
+- for f in $(find "$initdir" -type f \
+- \( -perm -0100 -or -perm -0010 -or -perm -0001 \
+- -or -path '*/lib/modules/*.ko' \) ); do
+- dinfo "Stripping $f"
+- strip -g "$f" 2>/dev/null|| :
+- done
++ find "$initdir" -type f \
++ \( -perm -0100 -or -perm -0010 -or -perm -0001 \
++ -or -path '*/lib/modules/*.ko' \) -print0 \
++ | xargs -0 strip -g 2>/dev/null
+ fi
+
+ type hardlink &>/dev/null && {
diff --git a/0073-profile.py-do-not-count-negative-timestamp-differenc.patch b/0073-profile.py-do-not-count-negative-timestamp-differenc.patch
new file mode 100644
index 0000000..34614f6
--- /dev/null
+++ b/0073-profile.py-do-not-count-negative-timestamp-differenc.patch
@@ -0,0 +1,23 @@
+From b5f5a081d1b6c4c1890a26e637b10234164ab388 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:14:27 +0200
+Subject: [PATCH] profile.py: do not count negative timestamp differences
+
+---
+ profile.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/profile.py b/profile.py
+index e1d0cab..7f98a13 100644
+--- a/profile.py
++++ b/profile.py
+@@ -36,7 +36,8 @@ def gen_times(t):
+ fx=float(x[0])
+ if oldx:
+ #print fx - float(oldx[0]), x[0], x[1], oldx[0], oldx[1]
+- yield (fx - float(oldx[0]), oldx[1])
++ if ((fx - float(oldx[0])) > 0):
++ yield (fx - float(oldx[0]), oldx[1])
+
+ oldx = x
+
diff --git a/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch b/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
new file mode 100644
index 0000000..afe5934
--- /dev/null
+++ b/0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
@@ -0,0 +1,84 @@
+From 8f01a6a775fe9599fa8171d9cca17fb1b3c990af Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:16:55 +0200
+Subject: [PATCH] fs-lib/fs-lib.sh: removed test mounting of btrfs and xfs
+
+mount/umount check only costs time and we fail later anyway.
+mount can take very long on large filesystems. Better fail on the real
+mount.
+---
+ modules.d/99fs-lib/fs-lib.sh | 58 +++---------------------------------------
+ 1 file changed, 4 insertions(+), 54 deletions(-)
+
+diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
+index 75bee92..d1b7a9d 100755
+--- a/modules.d/99fs-lib/fs-lib.sh
++++ b/modules.d/99fs-lib/fs-lib.sh
+@@ -80,63 +80,13 @@ fsck_able() {
+ # note: all drivers inherit: _drv _fop _dev
+
+ fsck_drv_xfs() {
+- local _ret
+-
+- # fs must be cleanly mounted (and umounted) first, before attempting any
+- # xfs tools - if this works, nothing else should be needed
+- # note, that user is always dropped into the shell, if the filesystem is
+- # not mountable or if -f flag is found among _fop
+- mkdir -p /tmp/.xfs
+-
+- info "trying to mount $_dev"
+- if mount -t xfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then
+- _ret=0
+- info "xfs: $_dev is clean"
+- umount "$_dev" >/dev/null 2>&1
+- else
+- _ret=4
+- warn "*** $_dev is unmountable"
+- fi
+- if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
+- warn "*** Dropping you to a shell. You have"
+- warn "*** xfs_repair and xfs_check (xfs_db) available."
+- warn "*** Note that if xfs didn't mount properly, it's"
+- warn "*** probably pretty serious condition."
+- emergency_shell -n "(Repair filesystem)"
+- fi
+-
+- rm -r /tmp/.xfs
+- return $_ret
++ # xfs fsck is not necessary... Either it mounts or not
++ return 0
+ }
+
+ fsck_drv_btrfs() {
+- local _ret
+-
+- # fs must be cleanly mounted (and umounted) first, before attempting any
+- # btrfs tools - if this works, nothing else should be needed
+- # note, that user is always dropped into the shell, if the filesystem is
+- # not mountable or if -f flag is found among _fop
+- mkdir -p /tmp/.btrfs
+-
+- info "trying to mount $_dev"
+- if mount -t btrfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then
+- _ret=0
+- info "btrfs: $_dev is clean"
+- umount "$_dev" >/dev/null 2>&1
+- else
+- _ret=4
+- warn "*** $_dev is unmountable"
+- fi
+- if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
+- warn "*** Dropping you to a shell. You have"
+- warn "*** btrfsck available."
+- warn "*** Note that if btrfs didn't mount properly, it's"
+- warn "*** probably pretty serious condition."
+- emergency_shell -n "(Repair filesystem)"
+- fi
+-
+- rm -r /tmp/.btrfs
+- return $_ret
++ # btrfs fsck is not necessary... Either it mounts or not
++ return 0
+ }
+
+
diff --git a/0075-base-module-setup.sh-use-force-for-ln.patch b/0075-base-module-setup.sh-use-force-for-ln.patch
new file mode 100644
index 0000000..61c01f7
--- /dev/null
+++ b/0075-base-module-setup.sh-use-force-for-ln.patch
@@ -0,0 +1,43 @@
+From 9d6458faa41039b6e63cf08bc60fc4660563597d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:18:45 +0200
+Subject: [PATCH] base/module-setup.sh: use --force for ln
+
+---
+ modules.d/99base/module-setup.sh | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
+index 96c18ab..75afa72 100755
+--- a/modules.d/99base/module-setup.sh
++++ b/modules.d/99base/module-setup.sh
+@@ -24,6 +24,7 @@ install() {
+ #add common users in /etc/passwd, it will be used by nfs/ssh currently
+ egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
+ egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
++
+ # install our scripts and hooks
+ inst "$moddir/init.sh" "/init"
+ inst "$moddir/initqueue.sh" "/sbin/initqueue"
+@@ -43,12 +44,12 @@ install() {
+ mkdir -p "${initdir}/var"
+ [ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp
+ if [[ $realinitpath ]]; then
+- for i in $realinitpath; do
++ for i in $realinitpath; do
+ echo "rd.distroinit=$i"
+ done > "${initdir}/etc/cmdline.d/distroinit.conf"
+ fi
+
+- ln -s /proc/self/mounts "$initdir/etc/mtab"
++ ln -fs /proc/self/mounts "$initdir/etc/mtab"
+
+ if [ -e /etc/os-release ]; then
+ . /etc/os-release
+@@ -74,5 +75,5 @@ install() {
+ echo ANSI_COLOR=\"$ANSI_COLOR\"
+ } > $initdir/etc/initrd-release
+ echo dracut-$DRACUT_VERSION > $initdir/lib/dracut/dracut-$DRACUT_VERSION
+- ln -s initrd-release $initdir/etc/os-release
++ ln -sf initrd-release $initdir/etc/os-release
+ }
diff --git a/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch b/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
new file mode 100644
index 0000000..b5e8fe7
--- /dev/null
+++ b/0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
@@ -0,0 +1,25 @@
+From af83b70cf27150d981844f508b55d50dd0cbc6c1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:19:32 +0200
+Subject: [PATCH] systemd/module-setup.sh: only create empty machine-id if non
+ existing
+
+---
+ modules.d/98systemd/module-setup.sh | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index a6e2365..206f341 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -101,7 +101,9 @@ install() {
+ /etc/vconsole.conf \
+ /etc/locale.conf
+ else
+- > "$initdir/etc/machine-id"
++ if ! [[ -e "$initdir/etc/machine-id" ]]; then
++ > "$initdir/etc/machine-id"
++ fi
+ fi
+
+ ln -fs $systemdutildir/systemd "$initdir/init"
diff --git a/0077-systemd-module-setup.sh-ln-with-force.patch b/0077-systemd-module-setup.sh-ln-with-force.patch
new file mode 100644
index 0000000..ae1edad
--- /dev/null
+++ b/0077-systemd-module-setup.sh-ln-with-force.patch
@@ -0,0 +1,50 @@
+From 5e7bff1fee8f98a8444be56ca8b206ee32962a62 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:20:06 +0200
+Subject: [PATCH] systemd/module-setup.sh: ln with --force
+
+---
+ modules.d/98systemd/module-setup.sh | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
+index 206f341..338f14d 100755
+--- a/modules.d/98systemd/module-setup.sh
++++ b/modules.d/98systemd/module-setup.sh
+@@ -116,30 +116,30 @@ install() {
+
+ inst "$moddir/initrd-switch-root.target" ${systemdsystemunitdir}/initrd-switch-root.target
+ inst "$moddir/initrd-switch-root.service" ${systemdsystemunitdir}/initrd-switch-root.service
+- ln -s basic.target "${initdir}${systemdsystemunitdir}/default.target"
++ ln -fs basic.target "${initdir}${systemdsystemunitdir}/default.target"
+
+ mkdir -p "${initdir}${systemdsystemunitdir}/basic.target.wants"
+
+ inst "$moddir/dracut-cmdline.sh" /bin/dracut-cmdline
+ inst "$moddir/dracut-cmdline.service" ${systemdsystemunitdir}/dracut-cmdline.service
+- ln -s ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
++ ln -fs ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
+
+ inst "$moddir/dracut-pre-udev.sh" /bin/dracut-pre-udev
+ inst "$moddir/dracut-pre-udev.service" ${systemdsystemunitdir}/dracut-pre-udev.service
+- ln -s ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
++ ln -fs ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
+
+ inst "$moddir/dracut-pre-trigger.sh" /bin/dracut-pre-trigger
+ inst "$moddir/dracut-pre-trigger.service" ${systemdsystemunitdir}/dracut-pre-trigger.service
+- ln -s ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
++ ln -fs ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
+
+ inst "$moddir/dracut-initqueue.sh" /bin/dracut-initqueue
+ inst "$moddir/dracut-initqueue.service" ${systemdsystemunitdir}/dracut-initqueue.service
+- ln -s ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
++ ln -fs ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
+
+ inst "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot
+ inst "$moddir/dracut-pre-pivot.service" ${systemdsystemunitdir}/dracut-pre-pivot.service
+ mkdir -p "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants"
+- ln -s ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
++ ln -fs ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
+
+ }
+
diff --git a/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch b/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
new file mode 100644
index 0000000..d806e51
--- /dev/null
+++ b/0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
@@ -0,0 +1,26 @@
+From 0dd85327dfbb788a5b23820a7413c4e1e96deafe Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:21:11 +0200
+Subject: [PATCH] i18n/module-setup.sh:install_all_kbd(): speedup install
+
+---
+ modules.d/10i18n/module-setup.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
+index d1854c2..7c8cd66 100755
+--- a/modules.d/10i18n/module-setup.sh
++++ b/modules.d/10i18n/module-setup.sh
+@@ -92,9 +92,9 @@ install() {
+ install_all_kbd() {
+ local rel f
+
+- find $(eval echo ${kbddir}/{${KBDSUBDIRS}}) -type f -print | \
+- while read f; do
+- inst_simple $f
++ for _src in $(eval echo ${kbddir}/{${KBDSUBDIRS}}); do
++ inst_dir "$_src"
++ cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_src%/*}" "$_src"
+ done
+
+ # remove unnecessary files
diff --git a/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch b/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
new file mode 100644
index 0000000..bc89103
--- /dev/null
+++ b/0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
@@ -0,0 +1,21 @@
+From 07a8e55f418f9362f074eb4de59070e297f54fd6 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:23:56 +0200
+Subject: [PATCH] bootchart/module-setup.sh: no need for mknod anymore
+
+---
+ modules.d/00bootchart/module-setup.sh | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/modules.d/00bootchart/module-setup.sh b/modules.d/00bootchart/module-setup.sh
+index 17dd137..a2a2c00 100755
+--- a/modules.d/00bootchart/module-setup.sh
++++ b/modules.d/00bootchart/module-setup.sh
+@@ -25,7 +25,5 @@ install() {
+ inst /bin/grep
+ inst /bin/usleep
+ inst /usr/bin/[ /bin/[
+-
+- mknod -m 0666 "${initdir}/dev/null" c 1 3
+ }
+
diff --git a/0080-no-more-mknod-in-the-initramfs.patch b/0080-no-more-mknod-in-the-initramfs.patch
new file mode 100644
index 0000000..6cccaaa
--- /dev/null
+++ b/0080-no-more-mknod-in-the-initramfs.patch
@@ -0,0 +1,62 @@
+From 070433429368aa721af68a250279483dea0b19fd Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:27:40 +0200
+Subject: [PATCH] no more "mknod" in the initramfs!!
+
+---
+ modules.d/50gensplash/gensplash-pretrigger.sh | 4 ----
+ modules.d/50plymouth/plymouth-pretrigger.sh | 6 ------
+ modules.d/99base/init.sh | 2 --
+ 3 files changed, 12 deletions(-)
+
+diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh
+index 074aa78..b697438 100755
+--- a/modules.d/50gensplash/gensplash-pretrigger.sh
++++ b/modules.d/50gensplash/gensplash-pretrigger.sh
+@@ -3,10 +3,6 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+ if getargbool 1 rd.splash -n rd_NO_SPLASH; then
+- [ -c /dev/null ] || mknod /dev/null c 1 3
+- [ -c /dev/console ] || mknod /dev/console c 5 1
+- [ -c /dev/tty0 ] || mknod /dev/tty0 c 4 0
+-
+ info "Starting Gentoo Splash"
+
+ [ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
+diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
+index 483cc70..5cc9112 100755
+--- a/modules.d/50plymouth/plymouth-pretrigger.sh
++++ b/modules.d/50plymouth/plymouth-pretrigger.sh
+@@ -4,18 +4,12 @@
+
+ if [ -x /bin/plymouthd ]; then
+ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
+- [ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
+ # first trigger graphics subsystem
+ udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
+ # first trigger graphics and tty subsystem
+ udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
+
+ udevadm settle --timeout=30 2>&1 | vinfo
+- [ -c /dev/zero ] || mknod -m 0666 /dev/zero c 1 5
+- [ -c /dev/tty0 ] || mknod -m 0620 /dev/tty0 c 4 0
+- [ -e /dev/systty ] || ln -s tty0 /dev/systty
+- [ -c /dev/fb0 ] || mknod -m 0660 /dev/fb0 c 29 0
+- [ -e /dev/fb ] || ln -s fb0 /dev/fb
+
+ info "Starting plymouth daemon"
+ mkdir -m 0755 /run/plymouth
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 5c693e4..d395a99 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -22,8 +22,6 @@ RD_DEBUG=""
+
+ trap "emergency_shell Signal caught!" 0
+
+-[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
+-
+ # mount some important things
+ [ ! -d /proc/self ] && \
+ mount -t proc -o nosuid,noexec,nodev proc /proc >/dev/null 2>&1
diff --git a/0081-udev-rules-module-setup.sh-ln-with-force.patch b/0081-udev-rules-module-setup.sh-ln-with-force.patch
new file mode 100644
index 0000000..26bf557
--- /dev/null
+++ b/0081-udev-rules-module-setup.sh-ln-with-force.patch
@@ -0,0 +1,22 @@
+From 8148fd4a73345449828198396cb9d149f8f3dc6b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:28:23 +0200
+Subject: [PATCH] udev-rules/module-setup.sh: ln with --force
+
+---
+ modules.d/95udev-rules/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index a48b0cb..f98de57 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -15,7 +15,7 @@ install() {
+ inst "$_i"
+
+ if ! [[ -f ${initdir}/lib/systemd/systemd-udevd ]]; then
+- ln -s "$_i" ${initdir}/lib/systemd/systemd-udevd
++ ln -fs "$_i" ${initdir}/lib/systemd/systemd-udevd
+ fi
+ break
+ done
diff --git a/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch b/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
new file mode 100644
index 0000000..b5444c7
--- /dev/null
+++ b/0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
@@ -0,0 +1,25 @@
+From cb8d852cdcfda3774a0c5aee15dd85511ab21fa1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:29:04 +0200
+Subject: [PATCH] terminfo/module-setup.sh: speedup install() of all terminfo
+
+---
+ modules.d/95terminfo/module-setup.sh | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/modules.d/95terminfo/module-setup.sh b/modules.d/95terminfo/module-setup.sh
+index 32a3fe9..e1914a5 100755
+--- a/modules.d/95terminfo/module-setup.sh
++++ b/modules.d/95terminfo/module-setup.sh
+@@ -10,9 +10,7 @@ install() {
+ done
+
+ if [ -d ${_terminfodir} ]; then
+- for f in ${_terminfodir}/*/*; do
+- inst_simple $f
+- done
++ inst_dir "$_terminfodir"
++ cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_terminfodir%/*}" "$_terminfodir"
+ fi
+ }
+-
diff --git a/0083-network-module-setup.sh-fixed-installkernel-return-c.patch b/0083-network-module-setup.sh-fixed-installkernel-return-c.patch
new file mode 100644
index 0000000..dc63c00
--- /dev/null
+++ b/0083-network-module-setup.sh-fixed-installkernel-return-c.patch
@@ -0,0 +1,45 @@
+From fe9bb86bb2d34cbcde7970a0b5a24fffa4e8404e Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:24:28 +0200
+Subject: [PATCH] network/module-setup.sh: fixed installkernel() return code
+
+---
+ modules.d/40network/module-setup.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index a8efbc5..6077f53 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -4,7 +4,6 @@
+
+ check() {
+ local _program
+- . $dracutfunctions
+
+ for _program in ip arping dhclient ; do
+ if ! type -P $_program >/dev/null; then
+@@ -43,6 +42,7 @@ installkernel() {
+ && ! $_fcont =~ iw_handler_get_spy ]] \
+ && echo "$_fname"
+ done
++ return 0
+ }
+ function rotor() {
+ local _f1 _f2
+@@ -52,13 +52,13 @@ installkernel() {
+ echo "$_f2" 1>&${_side2}
+ fi
+ done | nmf1 1>&${_merge}
++ return 0
+ }
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
+- _ret=$?
+ [[ $debug ]] && set -x
+- return $_ret
++ return 0
+ }
+
+ { find_kernel_modules_by_path drivers/net; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/net; fi; } \
diff --git a/0084-iscsi-module-setup.sh-speedup-installkernel.patch b/0084-iscsi-module-setup.sh-speedup-installkernel.patch
new file mode 100644
index 0000000..0ada3af
--- /dev/null
+++ b/0084-iscsi-module-setup.sh-speedup-installkernel.patch
@@ -0,0 +1,61 @@
+From 483e770b4302fc7e3384982657500221e0ec327d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:30:58 +0200
+Subject: [PATCH] iscsi/module-setup.sh: speedup installkernel()
+
+---
+ modules.d/95iscsi/module-setup.sh | 40 ++++++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 9 deletions(-)
+
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index fefc240..5f935d7 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -41,16 +41,38 @@ installkernel() {
+
+ instmods iscsi_tcp iscsi_ibft crc32c bnx2i iscsi_boot_sysfs qla4xxx cxgb3i cxgb4i be2iscsi
+ iscsi_module_filter() {
+- local _iscsifuncs='iscsi_register_transport'
+- local _f
+- while read _f; do case "$_f" in
+- *.ko) [[ $(< $_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+- *.ko.xz) [[ $(xz -dc <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
+- esac
+- done
+- return 0;
++ local _funcs='iscsi_register_transport'
++ # subfunctions inherit following FDs
++ local _merge=8 _side2=9
++ function bmf1() {
++ local _f
++ while read _f; do
++ case "$_f" in
++ *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
++ *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++ *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++ esac
++ done
++ return 0
++ }
++
++ function rotor() {
++ local _f1 _f2
++ while read _f1; do
++ echo "$_f1"
++ if read _f2; then
++ echo "$_f2" 1>&${_side2}
++ fi
++ done | bmf1 1>&${_merge}
++ return 0
++ }
++ # Use two parallel streams to filter alternating modules.
++ set +x
++ eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
++ [[ $debug ]] && set -x
++ return 0
+ }
++
+ { find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;} \
+ | iscsi_module_filter | instmods
+ }
diff --git a/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch b/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
new file mode 100644
index 0000000..fc79835
--- /dev/null
+++ b/0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
@@ -0,0 +1,24 @@
+From efeea5257568523d45b0f873579c4d16f7631c9a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:31:26 +0200
+Subject: [PATCH] plymouth/module-setup.sh:installkernel() fix return code
+
+---
+ modules.d/50plymouth/module-setup.sh | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
+index 69f1bc7..616d9b2 100755
+--- a/modules.d/50plymouth/module-setup.sh
++++ b/modules.d/50plymouth/module-setup.sh
+@@ -45,9 +45,8 @@ installkernel() {
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
+- _ret=$?
+ [[ $debug ]] && set -x
+- return $_ret
++ return 0
+ }
+
+ for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \
diff --git a/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch b/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
new file mode 100644
index 0000000..7960081
--- /dev/null
+++ b/0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
@@ -0,0 +1,38 @@
+From 0663a883d77149b505cb08671d2ebd054eb5bc28 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:32:15 +0200
+Subject: [PATCH] kernel-modules/module-setup.sh:installkernel() fix return
+ code
+
+---
+ modules.d/90kernel-modules/module-setup.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 1d39c85..08f745a 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -16,6 +16,7 @@ installkernel() {
+ *.ko.xz) [[ $(xz -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;;
+ esac
+ done
++ return 0
+ }
+ function rotor() {
+ local _f1 _f2
+@@ -25,12 +26,15 @@ installkernel() {
+ echo "$_f2" 1>&${_side2}
+ fi
+ done | bmf1 1>&${_merge}
++ return 0
+ }
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
+ [[ $debug ]] && set -x
++ return 0
+ }
++
+ hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc ata_piix
+ hostonly='' instmods pcmcia firewire-ohci
+ hostonly='' instmods usb_storage sdhci sdhci-pci
diff --git a/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch b/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
new file mode 100644
index 0000000..14ab9e3
--- /dev/null
+++ b/0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
@@ -0,0 +1,68 @@
+From 7997d8764313d5dc10689e3b6bbdde3dcc373498 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:33:15 +0200
+Subject: [PATCH] multipath/module-setup.sh:installkernel() fix return code
+
+---
+ modules.d/90multipath/module-setup.sh | 43 ++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 12 deletions(-)
+
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 0e8857c..8791560 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -32,23 +32,42 @@ depends() {
+
+ installkernel() {
+ local _ret
+- set +x
++ local _arch=$(uname -m)
+ mp_mod_filter() {
+- local _mpfuncs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
+- local _f
+- while read _f; do case "$_f" in
+- *.ko) [[ $(< $_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+- *.ko.xz) [[ $(xz -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
+- esac
+- done
++ local _funcs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
++ # subfunctions inherit following FDs
++ local _merge=8 _side2=9
++ function bmf1() {
++ local _f
++ while read _f; do
++ case "$_f" in
++ *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
++ *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++ *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
++ esac
++ done
++ return 0
++ }
++
++ function rotor() {
++ local _f1 _f2
++ while read _f1; do
++ echo "$_f1"
++ if read _f2; then
++ echo "$_f2" 1>&${_side2}
++ fi
++ done | bmf1 1>&${_merge}
++ return 0
++ }
++ # Use two parallel streams to filter alternating modules.
++ set +x
++ eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
++ [[ $debug ]] && set -x
++ return 0
+ }
+
+ ( find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;
+ find_kernel_modules_by_path drivers/md ) | mp_mod_filter | instmods
+- _ret=$?
+- [[ $debug ]] && set -x
+- return $_ret
+ }
+
+ install() {
diff --git a/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch b/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
new file mode 100644
index 0000000..c5ce4ad
--- /dev/null
+++ b/0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
@@ -0,0 +1,127 @@
+From 6a767ee403095cdeb67b7cb5f69e8586ad19650a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:33:42 +0200
+Subject: [PATCH] modules.d/*/module-setup.sh: no more sourcing of
+ dracutfunctions
+
+---
+ modules.d/90btrfs/module-setup.sh | 3 ---
+ modules.d/90crypt/module-setup.sh | 2 --
+ modules.d/90dmraid/module-setup.sh | 3 ---
+ modules.d/90lvm/module-setup.sh | 3 ---
+ modules.d/90mdraid/module-setup.sh | 3 ---
+ modules.d/90multipath/module-setup.sh | 3 ---
+ modules.d/95iscsi/module-setup.sh | 4 ----
+ modules.d/95nbd/module-setup.sh | 1 -
+ 8 files changed, 22 deletions(-)
+
+diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh
+index 135abc6..7d8fae0 100755
+--- a/modules.d/90btrfs/module-setup.sh
++++ b/modules.d/90btrfs/module-setup.sh
+@@ -8,9 +8,6 @@ check() {
+ # no point in trying to support it in the initramfs.
+ type -P btrfs >/dev/null || return 1
+
+- . $dracutfunctions
+- [[ $debug ]] && set -x
+-
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ local _found
+ for fs in ${host_fs_types[@]}; do
+diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
+index 5082434..16d6f89 100755
+--- a/modules.d/90crypt/module-setup.sh
++++ b/modules.d/90crypt/module-setup.sh
+@@ -7,8 +7,6 @@ check() {
+ # if cryptsetup is not installed, then we cannot support encrypted devices.
+ type -P cryptsetup >/dev/null || return 1
+
+- . $dracutfunctions
+-
+ check_crypt() {
+ local dev=$1 fs=$2
+ [[ $fs = "crypto_LUKS" ]] || return 1
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 5ce7051..dad54a4 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -8,9 +8,6 @@ check() {
+ # in trying to support it in the initramfs.
+ type -P dmraid >/dev/null || return 1
+
+- . $dracutfunctions
+- [[ $debug ]] && set -x
+-
+ check_dmraid() {
+ local dev=$1 fs=$2 holder DEVPATH DM_NAME
+ [[ "$fs" = "${fs%%_raid_member}" ]] && return 1
+diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
+index 2ce5c50..5182b79 100755
+--- a/modules.d/90lvm/module-setup.sh
++++ b/modules.d/90lvm/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+ # No point trying to support lvm if the binaries are missing
+ type -P lvm >/dev/null || return 1
+
+- . $dracutfunctions
+- [[ $debug ]] && set -x
+-
+ check_lvm() {
+ local DM_VG_NAME DM_LV_NAME DM_UDEV_DISABLE_DISK_RULES_FLAG
+ eval $(udevadm info --query=property --name=$1|egrep '(DM_VG_NAME|DM_LV_NAME|DM_UDEV_DISABLE_DISK_RULES_FLAG)=')
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 350aff8..56f881e 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+ # No mdadm? No mdraid support.
+ type -P mdadm >/dev/null || return 1
+
+- . $dracutfunctions
+- [[ $debug ]] && set -x
+-
+ check_mdraid() {
+ local dev=$1 fs=$2 holder DEVPATH MD_UUID
+ [[ "$fs" = "${fs%%_raid_member}" ]] && return 1
+diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
+index 8791560..bfa4bf8 100755
+--- a/modules.d/90multipath/module-setup.sh
++++ b/modules.d/90multipath/module-setup.sh
+@@ -7,9 +7,6 @@ check() {
+ # if there's no multipath binary, no go.
+ type -P multipath >/dev/null || return 1
+
+- . $dracutfunctions
+- [[ $debug ]] && set -x
+-
+ is_mpath() {
+ local _dev
+ _dev=$(get_maj_min $1)
+diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
+index 5f935d7..1787f92 100755
+--- a/modules.d/95iscsi/module-setup.sh
++++ b/modules.d/95iscsi/module-setup.sh
+@@ -10,10 +10,6 @@ check() {
+ # If hostonly was requested, fail the check if we are not actually
+ # booting from root.
+
+- . $dracutfunctions
+-
+- [[ $debug ]] && set -x
+-
+ is_iscsi() (
+ local _dev
+ _dev=$(get_maj_min $1)
+diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
+index c0f71cc..092aade 100755
+--- a/modules.d/95nbd/module-setup.sh
++++ b/modules.d/95nbd/module-setup.sh
+@@ -11,7 +11,6 @@ check() {
+ # mounted on, fail the hostonly check.
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;}
+- . $dracutfunctions
+
+ _rootdev=$(find_root_block_device)
+ [[ -b /dev/block/$_rootdev ]] || return 1
diff --git a/0089-dracut-logger.sh-use-for-numeric-comparisons.patch b/0089-dracut-logger.sh-use-for-numeric-comparisons.patch
new file mode 100644
index 0000000..cae8171
--- /dev/null
+++ b/0089-dracut-logger.sh-use-for-numeric-comparisons.patch
@@ -0,0 +1,80 @@
+From 6f006ae0c1efbbb90d00cbb340001e74d8d12db1 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:34:24 +0200
+Subject: [PATCH] dracut-logger.sh: use (( )) for numeric comparisons
+
+---
+ dracut-logger.sh | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/dracut-logger.sh b/dracut-logger.sh
+index f1b3a7e..a78e18e 100755
+--- a/dracut-logger.sh
++++ b/dracut-logger.sh
+@@ -116,7 +116,7 @@ dlog_init() {
+
+ if [ -z "$fileloglvl" ]; then
+ [ -w "$logfile" ] && fileloglvl=4 || fileloglvl=0
+- elif [ $fileloglvl -gt 0 ]; then
++ elif (( $fileloglvl >= 0 )); then
+ __oldumask=$(umask)
+ umask 0377
+ ! [ -e "$logfile" ] && >"$logfile"
+@@ -138,7 +138,7 @@ dlog_init() {
+ fi
+ fi
+
+- if [ $sysloglvl -gt 0 ]; then
++ if (( $sysloglvl >= 0 )); then
+ if ! [ -S /dev/log -a -w /dev/log ] || ! command -v logger >/dev/null
+ then
+ # We cannot log to syslog, so turn this facility off.
+@@ -148,7 +148,7 @@ dlog_init() {
+ fi
+ fi
+
+- if [ $sysloglvl -gt 0 -o $kmsgloglvl -gt 0 ]; then
++ if (($sysloglvl >= 0)) || (($kmsgloglvl >= 0 )); then
+ if [ -n "$dracutbasedir" ]; then
+ readonly syslogfacility=user
+ else
+@@ -159,7 +159,7 @@ dlog_init() {
+
+ local lvl; local maxloglvl_l=0
+ for lvl in $stdloglvl $sysloglvl $fileloglvl $kmsgloglvl; do
+- [ $lvl -gt $maxloglvl_l ] && maxloglvl_l=$lvl
++ (( $lvl > $maxloglvl_l )) && maxloglvl_l=$lvl
+ done
+ readonly maxloglvl=$maxloglvl_l
+ export maxloglvl
+@@ -275,14 +275,14 @@ _do_dlog() {
+ local lvlc=$(_lvl2char "$lvl") || return 0
+ local msg="$lvlc: $*"
+
+- [ $lvl -le $stdloglvl ] && echo "$msg" >&2
+- if [ $lvl -le $sysloglvl ]; then
++ (( $lvl <= $stdloglvl )) && echo "$msg" >&2
++ if (( $lvl <= $sysloglvl )); then
+ logger -t "dracut[$$]" -p $(_lvl2syspri $lvl) "$msg"
+ fi
+- if [ $lvl -le $fileloglvl -a -w "$logfile" -a -f "$logfile" ]; then
++ if (( $lvl <= $fileloglvl )) && [[ -w "$logfile" ]] && [[ -f "$logfile" ]]; then
+ echo "$msg" >>"$logfile"
+ fi
+- [ $lvl -le $kmsgloglvl ] && \
++ (( $lvl <= $kmsgloglvl )) && \
+ echo "<$(_dlvl2syslvl $lvl)>dracut[$$] $msg" >/dev/kmsg
+ }
+
+@@ -304,9 +304,9 @@ _do_dlog() {
+ # echo "This is a warning" | dwarn
+ dlog() {
+ [ -z "$maxloglvl" ] && return 0
+- [ $1 -le $maxloglvl ] || return 0
++ (( $1 <= $maxloglvl )) || return 0
+
+- if [ $# -gt 1 ]; then
++ if (( $# > 1 )); then
+ _do_dlog "$@"
+ else
+ while read line; do
diff --git a/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch b/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
new file mode 100644
index 0000000..89a74a6
--- /dev/null
+++ b/0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
@@ -0,0 +1,54 @@
+From a790a8b395b3baddddd099769f3f29c72b29799b Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:35:09 +0200
+Subject: [PATCH] dracut-logger.sh: empty functions for log funcs, which are
+ below level
+
+---
+ dracut-logger.sh | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/dracut-logger.sh b/dracut-logger.sh
+index a78e18e..dbe26ee 100755
+--- a/dracut-logger.sh
++++ b/dracut-logger.sh
+@@ -164,6 +164,39 @@ dlog_init() {
+ readonly maxloglvl=$maxloglvl_l
+ export maxloglvl
+
++
++ if (($stdloglvl < 6)) && (($kmsgloglvl < 6)) && (($fileloglvl < 6)); then
++ unset dtrace
++ dtrace() { :; };
++ fi
++
++ if (($stdloglvl < 5)) && (($kmsgloglvl < 5)) && (($fileloglvl < 5)); then
++ unset ddebug
++ ddebug() { :; };
++ fi
++
++ if (($stdloglvl < 4)) && (($kmsgloglvl < 4)) && (($fileloglvl < 4)); then
++ unset dinfo
++ dinfo() { :; };
++ fi
++
++ if (($stdloglvl < 3)) && (($kmsgloglvl < 3)) && (($fileloglvl < 3)); then
++ unset dwarn
++ dwarn() { :; };
++ unset dwarning
++ dwarning() { :; };
++ fi
++
++ if (($stdloglvl < 2)) && (($kmsgloglvl < 2)) && (($fileloglvl < 2)); then
++ unset derror
++ derror() { :; };
++ fi
++
++ if (($stdloglvl < 1)) && (($kmsgloglvl < 1)) && (($fileloglvl < 1)); then
++ unset dfatal
++ dfatal() { :; };
++ fi
++
+ [ -n "$errmsg" ] && derror "$errmsg"
+
+ return $ret
diff --git a/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch b/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
new file mode 100644
index 0000000..724fb2a
--- /dev/null
+++ b/0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
@@ -0,0 +1,27 @@
+From fabe8a8c29ff657e29f3c33bf6c564cfd0ee613f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 22 Jun 2012 15:49:25 +0200
+Subject: [PATCH] dracut.sh: do not copy devices nodes, mknod them
+
+---
+ dracut.sh | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index cc3669a..0fb0a18 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -714,10 +714,9 @@ if [[ $kernel_only != yes ]]; then
+ mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d
+ done
+ if [[ "$UID" = "0" ]]; then
+- for i in /dev/kmsg /dev/null /dev/console; do
+- [ -e $i ] || continue
+- cp -a $i $initdir/dev
+- done
++ [ -c ${initdir}/dev/null ] || mknod ${initdir}/dev/null c 1 3
++ [ -c ${initdir}/dev/kmsg ] || mknod ${initdir}/dev/kmsg c 1 11
++ [ -c ${initdir}/dev/console ] || mknod ${initdir}/dev/console c 5 1
+ fi
+ fi
+
diff --git a/dracut.spec b/dracut.spec
index fec0b4b..5f40dbb 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
Name: dracut
Version: 019
-Release: 62.git20120621%{?dist}
+Release: 92.git20120625%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@@ -85,6 +85,36 @@ Patch58: 0058-systemd-remove-unneeded-systemd-services.patch
Patch59: 0059-fixed-i18n-for-systemd-and-include-more-config-files.patch
Patch60: 0060-systemd-remove-old-udev-services.patch
Patch61: 0061-systemd-dracut-pre-pivot.sh-copy-service-files-to-ru.patch
+Patch62: 0062-network-support-vlan-tagged-bonding.patch
+Patch63: 0063-systemd-emergency.service-remove-Type-idle.patch
+Patch64: 0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
+Patch65: 0065-dracut-functions.sh-replace-strstr.patch
+Patch66: 0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
+Patch67: 0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
+Patch68: 0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
+Patch69: 0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
+Patch70: 0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
+Patch71: 0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
+Patch72: 0072-dracut.sh-speedup-strip.patch
+Patch73: 0073-profile.py-do-not-count-negative-timestamp-differenc.patch
+Patch74: 0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
+Patch75: 0075-base-module-setup.sh-use-force-for-ln.patch
+Patch76: 0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
+Patch77: 0077-systemd-module-setup.sh-ln-with-force.patch
+Patch78: 0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
+Patch79: 0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
+Patch80: 0080-no-more-mknod-in-the-initramfs.patch
+Patch81: 0081-udev-rules-module-setup.sh-ln-with-force.patch
+Patch82: 0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
+Patch83: 0083-network-module-setup.sh-fixed-installkernel-return-c.patch
+Patch84: 0084-iscsi-module-setup.sh-speedup-installkernel.patch
+Patch85: 0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
+Patch86: 0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
+Patch87: 0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
+Patch88: 0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
+Patch89: 0089-dracut-logger.sh-use-for-numeric-comparisons.patch
+Patch90: 0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
+Patch91: 0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
BuildArch: noarch
@@ -333,6 +363,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90lvm
%{dracutlibdir}/modules.d/90mdraid
%{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
@@ -375,6 +406,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95fcoe
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
+%{dracutlibdir}/modules.d/90qemu-net
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client
@@ -406,6 +438,16 @@ rm -rf $RPM_BUILD_ROOT
%dir /var/lib/dracut/overlay
%changelog
+* Mon Jun 25 2012 Harald Hoyer <harald@redhat.com> 019-92.git20120625
+- support vlan tagged binding
+- speedup initramfs emergency service
+- speedup image creation
+- fix installkernel() return codes
+Resolves: rhbz#833256
+- add qemu and qemu-net modules to add qemu drivers even in host-only
+- speedup btrfs and xfs fsck (nop)
+- no more mknod in the initramfs (fixes plymouth on s390)
+
* Thu Jun 21 2012 Harald Hoyer <harald@redhat.com> 019-62.git20120621
- do not require pkg-config for systemd
- i18n fixes