[dracut/f17] update to latest git
Harald Hoyer
harald at fedoraproject.org
Mon Feb 13 06:15:24 UTC 2012
commit 9d87a2b3b527152c1d3d43ccc6c7090de3c1cb5b
Author: Harald Hoyer <harald at redhat.com>
Date: Mon Feb 13 07:11:06 2012 +0100
update to latest git
...restore-run-initramfs-via-systemd-service.patch | 23 +-
0008-shutdown-on-demand.patch | 349 ++++++++++++++++++++
dracut.spec | 5 +-
3 files changed, 366 insertions(+), 11 deletions(-)
---
diff --git a/0007-Backup-and-restore-run-initramfs-via-systemd-service.patch b/0007-Backup-and-restore-run-initramfs-via-systemd-service.patch
index f281d79..8dca35b 100644
--- a/0007-Backup-and-restore-run-initramfs-via-systemd-service.patch
+++ b/0007-Backup-and-restore-run-initramfs-via-systemd-service.patch
@@ -1,18 +1,16 @@
-From 39fdc4101ac9c04a2b8365567739da8573f12431 Mon Sep 17 00:00:00 2001
+From 4cfd24d1799fafacf6624c9638454de93dd6f331 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald at redhat.com>
Date: Fri, 10 Feb 2012 09:37:18 +0100
Subject: [PATCH] Backup and restore /run/initramfs via systemd services
This saves the space /run/initramfs is taking for the shutdown
-
-[Raw patch edited by kay, this is not the git version]
---
Makefile | 16 ++++++++++++++--
dracut-backup.service | 15 +++++++++++++++
dracut-initramfs-backup.sh | 22 ++++++++++++++++++++++
dracut-restore.service | 18 ++++++++++++++++++
- dracut.spec | 12 +++++++++++-
- 5 files changed, 80 insertions(+), 3 deletions(-)
+ dracut.spec | 13 ++++++++++++-
+ 5 files changed, 81 insertions(+), 3 deletions(-)
create mode 100644 dracut-backup.service
create mode 100644 dracut-initramfs-backup.sh
create mode 100644 dracut-restore.service
@@ -67,7 +65,7 @@ new file mode 100644
index 0000000..69110eb
--- /dev/null
+++ b/dracut-backup.service
-@@ -0,0 +1,16 @@
+@@ -0,0 +1,15 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
@@ -77,7 +75,6 @@ index 0000000..69110eb
+
+[Unit]
+Description=Save /run/initramfs
-+DefaultDependencies=no
+ConditionPathExists=/run/initramfs
+
+[Service]
@@ -138,7 +135,7 @@ index 0000000..3a07efe
+RemainAfterExit=yes
\ No newline at end of file
diff --git a/dracut.spec b/dracut.spec
-index 1b0b76b..17a62b2 100644
+index 1b0b76b..6efd553 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -27,6 +27,7 @@ Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar
@@ -170,7 +167,15 @@ index 1b0b76b..17a62b2 100644
echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/10rpmversion/dracut-version
-@@ -266,6 +272,10 @@ rm -rf $RPM_BUILD_ROOT
+@@ -217,6 +223,7 @@ rm -rf $RPM_BUILD_ROOT
+ %dir %{dracutlibdir}/modules.d
+ %{dracutlibdir}/dracut-functions
+ %{dracutlibdir}/dracut-logger
++%{dracutlibdir}/dracut-initramfs-backup
+ %config(noreplace) /etc/dracut.conf
+ %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} > 6
+ %config /etc/dracut.conf.d/01-dist.conf
+@@ -266,6 +273,10 @@ rm -rf $RPM_BUILD_ROOT
%config(noreplace) /etc/logrotate.d/dracut_log
%attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log
%dir %{_sharedstatedir}/initramfs
diff --git a/0008-shutdown-on-demand.patch b/0008-shutdown-on-demand.patch
new file mode 100644
index 0000000..a2815f9
--- /dev/null
+++ b/0008-shutdown-on-demand.patch
@@ -0,0 +1,349 @@
+From fb67e4aa36948b3ed1208bf963da5569d1b13409 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 10 Feb 2012 11:14:42 +0100
+Subject: [PATCH] shutdown on demand
+
+Do not save and restore the initramfs, but instead, just unpack the
+default initramfs for shutdown on shutdown.
+---
+ Makefile | 9 +++------
+ dracut-backup.service | 15 ---------------
+ dracut-initramfs-backup.sh | 22 ----------------------
+ dracut-initramfs-restore.sh | 10 ++++++++++
+ dracut-restore.service | 18 ------------------
+ dracut-shutdown.service | 18 ++++++++++++++++++
+ dracut.conf.d/fedora.conf.example | 1 -
+ dracut.spec | 2 +-
+ modules.d/90crypt/cryptroot-ask.sh | 1 +
+ modules.d/90dmraid/dmraid.sh | 1 +
+ modules.d/90dmsquash-live/dmsquash-live-root | 2 ++
+ modules.d/90lvm/lvm_scan.sh | 2 ++
+ modules.d/90mdraid/mdraid-cleanup.sh | 4 ++--
+ modules.d/90multipath/multipathd.sh | 1 +
+ modules.d/95fcoe/fcoe-up | 2 ++
+ modules.d/95iscsi/iscsiroot | 2 ++
+ modules.d/95nbd/nbdroot | 1 +
+ modules.d/95nfs/nfsroot | 2 +-
+ modules.d/98usrmount/mount-usr.sh | 10 ++++++++++
+ modules.d/99base/dracut-lib.sh | 4 ++++
+ 20 files changed, 61 insertions(+), 66 deletions(-)
+ delete mode 100644 dracut-backup.service
+ delete mode 100644 dracut-initramfs-backup.sh
+ create mode 100644 dracut-initramfs-restore.sh
+ delete mode 100644 dracut-restore.service
+ create mode 100644 dracut-shutdown.service
+
+diff --git a/Makefile b/Makefile
+index 09e87c8..99279ac 100644
+--- a/Makefile
++++ b/Makefile
+@@ -40,7 +40,7 @@ install: doc
+ mkdir -p $(DESTDIR)$(sysconfdir)/dracut.conf.d
+ install -m 0755 dracut-functions $(DESTDIR)$(pkglibdir)/dracut-functions
+ install -m 0755 dracut-logger $(DESTDIR)$(pkglibdir)/dracut-logger
+- install -m 0755 dracut-initramfs-backup.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-backup
++ install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore
+ cp -arx modules.d $(DESTDIR)$(pkglibdir)
+ install -m 0644 dracut.8 $(DESTDIR)$(mandir)/man8/dracut.8
+ install -m 0644 dracut-catimages.8 $(DESTDIR)$(mandir)/man8/dracut-catimages.8
+@@ -50,12 +50,9 @@ install: doc
+ ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
+ if [ -n "$(systemdsystemunitdir)" ]; then \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
+- install -m 0644 dracut-backup.service $(DESTDIR)$(systemdsystemunitdir); \
+- install -m 0644 dracut-restore.service $(DESTDIR)$(systemdsystemunitdir); \
+- mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \
++ install -m 0644 dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir); \
+ mkdir -p $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants; \
+- ln -s ../dracut-backup.service $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants/dracut-backup.service; \
+- ln -s ../dracut-restore.service $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants/dracut-restore.service; \
++ ln -s ../dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants/dracut-shutdown.service; \
+ fi
+
+ clean:
+diff --git a/dracut-backup.service b/dracut-backup.service
+deleted file mode 100644
+index 69110eb..0000000
+--- a/dracut-backup.service
++++ /dev/null
+@@ -1,15 +0,0 @@
+-# This file is part of systemd.
+-#
+-# systemd is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-
+-[Unit]
+-Description=Save /run/initramfs
+-ConditionPathExists=/run/initramfs
+-
+-[Service]
+-ExecStart=/usr/lib/dracut/dracut-initramfs-backup backup
+-Type=oneshot
+-RemainAfterExit=yes
+diff --git a/dracut-initramfs-backup.sh b/dracut-initramfs-backup.sh
+deleted file mode 100644
+index 7320d40..0000000
+--- a/dracut-initramfs-backup.sh
++++ /dev/null
+@@ -1,22 +0,0 @@
+-#!/bin/sh
+-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+-# ex: ts=8 sw=4 sts=4 et filetype=sh
+-
+-set -e
+-cd /run/initramfs
+-
+-if [ "x$1" = "xbackup" ]; then
+- compress="gzip"
+- command -v pigz > /dev/null 2>&1 && compress="pigz"
+- find . |cpio -H newc -o --quiet \
+- | pigz > /var/lib/initramfs/_run_initramfs-backup.cpio.gz
+- mv -f /var/lib/initramfs/_run_initramfs-backup.cpio.gz \
+- /var/lib/initramfs/run_initramfs-backup.cpio.gz
+- rm -fr etc bin lib lib64 sbin shutdown tmp usr var
+- > .backuped
+-elif [ "x$1" = "xrestore" ]; then
+- [ -f .backuped -a -f /var/lib/initramfs/run_initramfs-backup.cpio.gz ] || exit 1
+- zcat /var/lib/initramfs/run_initramfs-backup.cpio.gz | cpio -id >/dev/null 2>&1
+- rm .backuped
+- rm -f /var/lib/initramfs/run_initramfs-backup.cpio.gz
+-fi
+diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh
+new file mode 100644
+index 0000000..26b698b
+--- /dev/null
++++ b/dracut-initramfs-restore.sh
+@@ -0,0 +1,10 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++set -e
++cd /run/initramfs
++IMG="/boot/initramfs-$(uname -r).img"
++[ -f .need_shutdown -a -f "$IMG" ] || exit 1
++zcat "$IMG" | cpio -id >/dev/null 2>&1
++rm .need_shutdown
+diff --git a/dracut-restore.service b/dracut-restore.service
+deleted file mode 100644
+index 3a07efe..0000000
+--- a/dracut-restore.service
++++ /dev/null
+@@ -1,18 +0,0 @@
+-# This file is part of systemd.
+-#
+-# systemd is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-
+-[Unit]
+-Description=Restore /run/initramfs
+-After=getty at tty1.service prefdm.service
+-Before=reboot.service
+-DefaultDependencies=no
+-ConditionPathExists=/run/initramfs/.backuped
+-
+-[Service]
+-ExecStart=/usr/lib/dracut/dracut-initramfs-backup restore
+-Type=oneshot
+-RemainAfterExit=yes
+\ No newline at end of file
+diff --git a/dracut-shutdown.service b/dracut-shutdown.service
+new file mode 100644
+index 0000000..4f06e35
+--- /dev/null
++++ b/dracut-shutdown.service
+@@ -0,0 +1,18 @@
++# This file is part of systemd.
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++
++[Unit]
++Description=Restore /run/initramfs
++After=getty at tty1.service prefdm.service
++Before=reboot.service
++DefaultDependencies=no
++ConditionPathExists=/run/initramfs/.need_shutdown
++
++[Service]
++ExecStart=/usr/lib/dracut/dracut-initramfs-restore
++Type=oneshot
++RemainAfterExit=yes
+diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example
+index 45063c6..adfecc8 100644
+--- a/dracut.conf.d/fedora.conf.example
++++ b/dracut.conf.d/fedora.conf.example
+@@ -5,6 +5,5 @@ i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-F
+ add_dracutmodules+=" rpmversion "
+ omit_dracutmodules+=" dash "
+ stdloglvl=3
+-prefix=/run/initramfs
+ realinitpath="/usr/lib/systemd/systemd"
+ install_items+=" vi /etc/virc ps grep cat rm openvt "
+diff --git a/dracut.spec b/dracut.spec
+index 6efd553..304f1f3 100644
+--- a/dracut.spec
++++ b/dracut.spec
+@@ -223,7 +223,7 @@ rm -rf $RPM_BUILD_ROOT
+ %dir %{dracutlibdir}/modules.d
+ %{dracutlibdir}/dracut-functions
+ %{dracutlibdir}/dracut-logger
+-%{dracutlibdir}/dracut-initramfs-backup
++%{dracutlibdir}/dracut-initramfs-restore
+ %config(noreplace) /etc/dracut.conf
+ %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} > 6
+ %config /etc/dracut.conf.d/01-dist.conf
+diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh
+index 6a95dc2..aba1331 100755
+--- a/modules.d/90crypt/cryptroot-ask.sh
++++ b/modules.d/90crypt/cryptroot-ask.sh
+@@ -117,6 +117,7 @@ unset device luksname luksfile
+ # mark device as asked
+ >> /tmp/cryptroot-asked-$2
+
++need_shutdown
+ udevsettle
+
+ exit 0
+diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh
+index feff516..574dc3b 100755
+--- a/modules.d/90dmraid/dmraid.sh
++++ b/modules.d/90dmraid/dmraid.sh
+@@ -40,3 +40,4 @@ else
+ done
+ fi
+
++need_shutdown
+diff --git a/modules.d/90dmsquash-live/dmsquash-live-root b/modules.d/90dmsquash-live/dmsquash-live-root
+index d9fcc43..e3606cf 100755
+--- a/modules.d/90dmsquash-live/dmsquash-live-root
++++ b/modules.d/90dmsquash-live/dmsquash-live-root
+@@ -206,4 +206,6 @@ fi
+ ln -s /dev/mapper/live-rw /dev/root
+ printf '/bin/mount %s /dev/mapper/live-rw %s\n' "$ROOTFLAGS" "$NEWROOT" > $hookdir/mount/01-$$-live.sh
+
++need_shutdown
++
+ exit 0
+diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
+index 3c0094e..104565f 100755
+--- a/modules.d/90lvm/lvm_scan.sh
++++ b/modules.d/90lvm/lvm_scan.sh
+@@ -126,3 +126,5 @@ if [ "$lvmwritten" ]; then
+ rm -f /etc/lvm/lvm.conf
+ fi
+ unset lvmwritten
++
++need_shutdown
+diff --git a/modules.d/90mdraid/mdraid-cleanup.sh b/modules.d/90mdraid/mdraid-cleanup.sh
+index 3ffa2d3..2e8a389 100755
+--- a/modules.d/90mdraid/mdraid-cleanup.sh
++++ b/modules.d/90mdraid/mdraid-cleanup.sh
+@@ -13,11 +13,11 @@ for md in /dev/md[0-9_]*; do
+ containers="$containers $md"
+ continue
+ fi
+- mdadm -S "$md" >/dev/null 2>&1
++ mdadm -S "$md" >/dev/null 2>&1 || need_shutdown
+ done
+
+ for md in $containers; do
+- mdadm -S "$md" >/dev/null 2>&1
++ mdadm -S "$md" >/dev/null 2>&1 || need_shutdown
+ done
+
+ unset containers udevinfo
+diff --git a/modules.d/90multipath/multipathd.sh b/modules.d/90multipath/multipathd.sh
+index 4d8935f..6d6eb99 100755
+--- a/modules.d/90multipath/multipathd.sh
++++ b/modules.d/90multipath/multipathd.sh
+@@ -5,6 +5,7 @@
+ if [ -e /etc/multipath.conf ]; then
+ modprobe dm-multipath
+ multipathd -B || multipathd
++ need_shutdown
+ else
+ rm /etc/udev/rules.d/??-multipath.rules 2>/dev/null
+ fi
+diff --git a/modules.d/95fcoe/fcoe-up b/modules.d/95fcoe/fcoe-up
+index 5c5bdb5..1e1bcf5 100755
+--- a/modules.d/95fcoe/fcoe-up
++++ b/modules.d/95fcoe/fcoe-up
+@@ -46,3 +46,5 @@ elif [ "$netdriver" = "bnx2x" ]; then
+ else
+ echo -n "$netif" > /sys/module/fcoe/parameters/create
+ fi
++
++need_shutdown
+diff --git a/modules.d/95iscsi/iscsiroot b/modules.d/95iscsi/iscsiroot
+index e7bac74..d8f7c8f 100755
+--- a/modules.d/95iscsi/iscsiroot
++++ b/modules.d/95iscsi/iscsiroot
+@@ -205,6 +205,8 @@ else
+ handle_netroot $iroot
+ fi
+
++need_shutdown
++
+ # now we have a root filesystem somewhere in /dev/sda*
+ # let the normal block handler handle root=
+ exit 0
+diff --git a/modules.d/95nbd/nbdroot b/modules.d/95nbd/nbdroot
+index 1fb2140..e20b4e4 100755
+--- a/modules.d/95nbd/nbdroot
++++ b/modules.d/95nbd/nbdroot
+@@ -107,4 +107,5 @@ fi
+ # NBD doesn't emit uevents when it gets connected, so kick it
+ echo change > /sys/block/nbd0/uevent
+ udevadm settle
++need_shutdown
+ exit 0
+diff --git a/modules.d/95nfs/nfsroot b/modules.d/95nfs/nfsroot
+index 2103e24..764971b 100755
+--- a/modules.d/95nfs/nfsroot
++++ b/modules.d/95nfs/nfsroot
+@@ -106,4 +106,4 @@ echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > $hookdir/
+ # force udevsettle to break
+ > $hookdir/initqueue/work
+
+-
++need_shutdown
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index 5139c7a..9998624 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -11,6 +11,16 @@ mount_usr()
+ # check, if we have to mount the /usr filesystem
+ while read _dev _mp _fs _opts _rest; do
+ if [ "$_mp" = "/usr" ]; then
++ case "$_dev" in
++ LABEL=*)
++ _dev="$(echo $_dev | sed 's,/,\\x2f,g')"
++ _dev="/dev/disk/by-label/${_dev#LABEL=}"
++ ;;
++ UUID=*)
++ _dev="${_dev#block:}"
++ _dev="/dev/disk/by-uuid/${_dev#UUID=}"
++ ;;
++ esac
+ echo "$_dev ${NEWROOT}${_mp} $_fs ${_opts} $_rest"
+ _usr_found="1"
+ break
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index 4897a3d..6b70adf 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -738,3 +738,7 @@ killproc() {
+ fi
+ done
+ }
++
++need_shutdown() {
++ >/run/initramfs/.need_shutdown
++}
diff --git a/dracut.spec b/dracut.spec
index fd59124..bf45aba 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
Name: dracut
Version: 015
-Release: 9.git20120210%{?dist}
+Release: 9.git20120213%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel} > 6
@@ -31,6 +31,7 @@ Patch4: 0004-dracut-honor-binaries-in-sbin-first.patch
Patch5: 0005-98usrmount-mount-usr.sh-remove-extra-slash.patch
Patch6: 0006-99shutdown-shutdown-don-t-do-console_init-on-shutdow.patch
Patch7: 0007-Backup-and-restore-run-initramfs-via-systemd-service.patch
+Patch8: 0008-shutdown-on-demand.patch
BuildArch: noarch
@@ -231,7 +232,7 @@ rm -rf $RPM_BUILD_ROOT
%dir %{dracutlibdir}/modules.d
%{dracutlibdir}/dracut-functions
%{dracutlibdir}/dracut-logger
-%{dracutlibdir}/dracut-initramfs-backup
+%{dracutlibdir}/dracut-initramfs-restore
%config(noreplace) /etc/dracut.conf
%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} > 6
%config /etc/dracut.conf.d/01-dist.conf
More information about the scm-commits
mailing list