[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