summary refs log tree commit diff
path: root/pkgs/os-specific/linux
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@viric.name>2013-09-20 09:45:33 +0200
committerLluís Batlle i Rossell <viric@viric.name>2013-09-20 09:45:33 +0200
commit8f73cdeac2f407a48a46cf802ec81e35f87a87ad (patch)
treebfdb8e4ce980cc4f52d1bd5e6d5140f2a0ac5412 /pkgs/os-specific/linux
parent90092e629d7457ab7b614beb3ca3b3b2218cc275 (diff)
parentc0fd88748a66c9ca38092fdbf7e97f765c8e411d (diff)
Merging the changes to get systemd with lvm2 working
Diffstat (limited to 'pkgs/os-specific/linux')
-rw-r--r--pkgs/os-specific/linux/lvm2/assume-uevent-generated.patch39
-rw-r--r--pkgs/os-specific/linux/lvm2/default.nix16
2 files changed, 11 insertions, 44 deletions
diff --git a/pkgs/os-specific/linux/lvm2/assume-uevent-generated.patch b/pkgs/os-specific/linux/lvm2/assume-uevent-generated.patch
deleted file mode 100644
index 4098d042fd53b..0000000000000
--- a/pkgs/os-specific/linux/lvm2/assume-uevent-generated.patch
+++ /dev/null
@@ -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))
diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix
index ec68304c93552..8cdd317b7b17b 100644
--- a/pkgs/os-specific/linux/lvm2/default.nix
+++ b/pkgs/os-specific/linux/lvm2/default.nix
@@ -1,19 +1,17 @@
 { stdenv, fetchurl, pkgconfig, udev, utillinux, coreutils }:
 
 let
-  v = "2.02.98";
+  v = "2.02.100";
 in
 
 stdenv.mkDerivation {
   name = "lvm2-${v}";
 
   src = fetchurl {
-    url = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${v}.tgz";
-    sha256 = "0r6q6z8ip6q5qgkzng0saljassp4912k6i21ra10vq7pzrc0l0vi";
+    url = "ftp://sources.redhat.com/pub/lvm2/releases/LVM2.${v}.tgz";
+    md5 = "9629cf5728544d7e637cafde1f73d777";
   };
 
-  patches = [ ./assume-uevent-generated.patch ];
-
   configureFlags =
     "--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
       substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
         --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 ];
@@ -39,6 +40,11 @@ stdenv.mkDerivation {
     ''
       substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \
         --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 = {