mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-01 19:33:03 +00:00
Merging the changes to get systemd with lvm2 working
This commit is contained in:
commit
8f73cdeac2
@ -1,39 +0,0 @@
|
|||||||
Work around LVM/cryptsetup errors like:
|
|
||||||
|
|
||||||
semid 32768: semop failed for cookie 0xd4d41f4: incorrect semaphore state
|
|
||||||
Failed to set a proper state for notification semaphore identified by cookie value 223166964 (0xd4d41f4) to initialize waiting for incoming notifications.
|
|
||||||
|
|
||||||
and (when running "cryptsetup --debug"):
|
|
||||||
|
|
||||||
Uevent not generated! Calling udev_complete internally to avoid process lock-up.
|
|
||||||
|
|
||||||
Here for some reason libdm *thinks* that the uevent hasn't been
|
|
||||||
emitted, so it calls udev_complete. But the uevent actually *has*
|
|
||||||
been emitted, so udev calls ‘dmsetup udevcomplete’ as well, leading to
|
|
||||||
a race.
|
|
||||||
|
|
||||||
This is probably a reoccurence of the problem described here:
|
|
||||||
|
|
||||||
http://www.redhat.com/archives/dm-devel/2011-August/msg00075.html
|
|
||||||
http://www.redhat.com/archives/linux-lvm/2011-September/msg00023.html
|
|
||||||
|
|
||||||
which was fixed in the kernel, so it's not clear why it's surfacing
|
|
||||||
again. Maybe netlink_broadcast_filtered() has started returning some
|
|
||||||
other bogus error code.
|
|
||||||
|
|
||||||
diff -ru -x '*~' LVM2.2.02.98/libdm/ioctl/libdm-iface.c LVM2.2.02.98-new/libdm/ioctl/libdm-iface.c
|
|
||||||
--- LVM2.2.02.98/libdm/ioctl/libdm-iface.c 2012-10-15 10:24:58.000000000 -0400
|
|
||||||
+++ LVM2.2.02.98-new/libdm/ioctl/libdm-iface.c 2012-10-15 14:19:06.774363736 -0400
|
|
||||||
@@ -1754,9 +1754,12 @@
|
|
||||||
|
|
||||||
if (ioctl_with_uevent && dm_udev_get_sync_support() &&
|
|
||||||
!_check_uevent_generated(dmi)) {
|
|
||||||
+ log_debug("warning: Uevent might not be generated!");
|
|
||||||
+#if 0
|
|
||||||
log_debug("Uevent not generated! Calling udev_complete "
|
|
||||||
"internally to avoid process lock-up.");
|
|
||||||
_udev_complete(dmt);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_dm_ioctl_unmangle_names(dmt->type, dmi))
|
|
@ -1,19 +1,17 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, udev, utillinux, coreutils }:
|
{ stdenv, fetchurl, pkgconfig, udev, utillinux, coreutils }:
|
||||||
|
|
||||||
let
|
let
|
||||||
v = "2.02.98";
|
v = "2.02.100";
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "lvm2-${v}";
|
name = "lvm2-${v}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${v}.tgz";
|
url = "ftp://sources.redhat.com/pub/lvm2/releases/LVM2.${v}.tgz";
|
||||||
sha256 = "0r6q6z8ip6q5qgkzng0saljassp4912k6i21ra10vq7pzrc0l0vi";
|
md5 = "9629cf5728544d7e637cafde1f73d777";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./assume-uevent-generated.patch ];
|
|
||||||
|
|
||||||
configureFlags =
|
configureFlags =
|
||||||
"--disable-readline --enable-udev_rules --enable-udev_sync --enable-pkgconfig --enable-applib";
|
"--disable-readline --enable-udev_rules --enable-udev_sync --enable-pkgconfig --enable-applib";
|
||||||
|
|
||||||
@ -25,6 +23,9 @@ stdenv.mkDerivation {
|
|||||||
--replace /usr/bin/tr ${coreutils}/bin/tr
|
--replace /usr/bin/tr ${coreutils}/bin/tr
|
||||||
substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
|
substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
|
||||||
--replace /usr/sbin/lvm $out/sbin/lvm
|
--replace /usr/sbin/lvm $out/sbin/lvm
|
||||||
|
|
||||||
|
sed -i /DEFAULT_SYS_DIR/d Makefile.in
|
||||||
|
sed -i /DEFAULT_PROFILE_DIR/d conf/Makefile.in
|
||||||
'';
|
'';
|
||||||
|
|
||||||
#patches = [ ./purity.patch ];
|
#patches = [ ./purity.patch ];
|
||||||
@ -39,6 +40,11 @@ stdenv.mkDerivation {
|
|||||||
''
|
''
|
||||||
substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \
|
substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \
|
||||||
--replace $out/sbin/blkid ${utillinux}/sbin/blkid
|
--replace $out/sbin/blkid ${utillinux}/sbin/blkid
|
||||||
|
|
||||||
|
# Systemd stuff
|
||||||
|
mkdir -p $out/etc/systemd/system $out/lib/systemd/system-generators
|
||||||
|
cp scripts/blk_availability_systemd_red_hat.service $out/etc/systemd/system
|
||||||
|
cp scripts/lvm2_activation_generator_systemd_red_hat $out/lib/systemd/system-generators
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -6854,6 +6854,15 @@ let
|
|||||||
|
|
||||||
systemd = callPackage ../os-specific/linux/systemd { };
|
systemd = callPackage ../os-specific/linux/systemd { };
|
||||||
|
|
||||||
|
# In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get
|
||||||
|
# LVM2 working in systemd.
|
||||||
|
systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: {
|
||||||
|
name = p.name + "-with-lvm2";
|
||||||
|
postInstall = p.postInstall + ''
|
||||||
|
cp ${pkgs.lvm2}/lib/systemd/system-generators/* $out/lib/systemd/system-generat
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
sysvinit = callPackage ../os-specific/linux/sysvinit { };
|
sysvinit = callPackage ../os-specific/linux/sysvinit { };
|
||||||
|
|
||||||
sysvtools = callPackage ../os-specific/linux/sysvinit {
|
sysvtools = callPackage ../os-specific/linux/sysvinit {
|
||||||
|
Loading…
Reference in New Issue
Block a user