[systemd/f16] Workaround for the crypto-on-lvm-on-crypto disk layout

Michal Schmidt michich at fedoraproject.org
Thu Sep 29 00:28:24 UTC 2011


commit 0afbbc68db2613e404f484b3cb18577842855bac
Author: Michal Schmidt <mschmidt at redhat.com>
Date:   Thu Sep 29 02:26:24 2011 +0200

    Workaround for the crypto-on-lvm-on-crypto disk layout
    
    Resolves: #741655

 fedora-crypto-lvm-hack       |   12 ++++++++++++
 fedora-crypto-lvm-hack.patch |   23 +++++++++++++++++++++++
 systemd.spec                 |   15 ++++++++++++++-
 3 files changed, 49 insertions(+), 1 deletions(-)
---
diff --git a/fedora-crypto-lvm-hack b/fedora-crypto-lvm-hack
new file mode 100755
index 0000000..c7c4313
--- /dev/null
+++ b/fedora-crypto-lvm-hack
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Test if the given device is an LVM PV. If yes, activate its VG.
+#
+# Suggested by Milan Brož in
+# https://bugzilla.redhat.com/show_bug.cgi?id=741655#c19
+
+device="$1"
+[ -b "$device" ] || exit 1
+
+blkid -t TYPE=LVM2_member "$device" > /dev/null && \
+    vgchange -a y $(pvs --noheadings -o vg_name "$device")
diff --git a/fedora-crypto-lvm-hack.patch b/fedora-crypto-lvm-hack.patch
new file mode 100644
index 0000000..30789cf
--- /dev/null
+++ b/fedora-crypto-lvm-hack.patch
@@ -0,0 +1,23 @@
+Fedora workaround for bz741655
+
+After unlocking a crypto device, give LVM a chance to assemble a VG from it.
+Needed to make the crypto-on-lvm-on-crypto disk layout work.
+
+Non-upstream patch. Will be obsoleted as soon as LVM gets the planned
+'policy daemon which will activate LV according to some system policy'.
+
+Index: systemd-36/src/cryptsetup-generator.c
+===================================================================
+--- systemd-36.orig/src/cryptsetup-generator.c
++++ systemd-36/src/cryptsetup-generator.c
+@@ -132,8 +132,10 @@ static int create_disk(
+                 "RemainAfterExit=yes\n"
+                 "TimeoutSec=0\n" /* the binary handles timeouts anyway */
+                 "ExecStart=" SYSTEMD_CRYPTSETUP_PATH " attach '%s' '%s' '%s' '%s'\n"
++                "ExecStartPost=/lib/systemd/fedora-crypto-lvm-hack '/dev/mapper/%s'\n"
+                 "ExecStop=" SYSTEMD_CRYPTSETUP_PATH " detach '%s'\n",
+                 name, u, strempty(password), strempty(options),
++                name,
+                 name);
+ 
+         if (has_option(options, "tmp"))
diff --git a/systemd.spec b/systemd.spec
index 1c88aa1..3375e0a 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -2,7 +2,7 @@ Name:           systemd
 Url:            http://www.freedesktop.org/wiki/Software/systemd
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Version:        36
-Release:        3%{?dist}
+Release:        4%{?dist}
 License:        GPLv2+
 Group:          System Environment/Base
 Summary:        A System and Service Manager
@@ -44,8 +44,12 @@ Source1:        macros.systemd
 Source2:        systemd-sysv-convert
 # Stop-gap, just to ensure things work out-of-the-box for this driver.
 Source3:        udlfb.conf
+# Workaround https://bugzilla.redhat.com/show_bug.cgi?id=741655
+Source4:        fedora-crypto-lvm-hack
 # We revert this one for https://bugzilla.redhat.com/show_bug.cgi?id=741078
 Patch0:         0001-unit-fix-complementing-of-requirement-deps-with-Afte.patch
+# Workaround https://bugzilla.redhat.com/show_bug.cgi?id=741655
+Patch100:       fedora-crypto-lvm-hack.patch
 
 # For sysvinit tools
 Obsoletes:      SysVinit < 2.86-24, sysvinit < 2.86-24
@@ -109,6 +113,7 @@ SysV compatibility tools for systemd
 %prep
 %setup -q
 %patch0 -p1 -R
+%patch100 -p1
 
 %build
 %configure --with-rootdir= --with-distro=fedora --with-rootlibdir=/%{_lib}
@@ -167,6 +172,9 @@ install -m 0755 %{SOURCE2} %{buildroot}%{_bindir}/
 mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d/
 install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/modprobe.d/
 
+# install the Fedora crypto-LVM hack
+install -m 0755 %{SOURCE4} %{buildroot}/lib/systemd/
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -260,6 +268,7 @@ fi
 /usr/bin/systemd-stdio-bridge
 /usr/bin/systemd-analyze
 /lib/systemd/systemd-*
+/lib/systemd/fedora-crypto-lvm-hack
 /lib/udev/rules.d/*.rules
 /lib/systemd/system-generators/systemd-cryptsetup-generator
 /lib/systemd/system-generators/systemd-getty-generator
@@ -353,6 +362,10 @@ fi
 %{_bindir}/systemd-sysv-convert
 
 %changelog
+* Thu Sep 29 2011 Michal Schmidt <mschmidt at redhat.com> - 36-4
+- Workaround for the crypto-on-lvm-on-crypto disk layout
+- Resolves: #741655
+
 * Sun Sep 25 2011 Michal Schmidt <mschmidt at redhat.com> - 36-3
 - Revert an upstream patch that caused ordering cycles
 - Resolves: #741078


More information about the scm-commits mailing list