[pkg-cryptsetup-devel] Bug#698758: cryptsetup: cryptscripts_start deadlocks for 2 min when run from udev script
Andrew Stimpson
e1rdxhk02 at sneakemail.com
Wed Jan 23 10:19:33 UTC 2013
Package: cryptsetup
Version: 2:1.4.3-4
Severity: minor
Tags: patch
Dear Maintainer,
I have a LUKS container on a removable drive, and wanted cryptdisks_start
to automatically open it (using the decrypt_derived keyscript) whenever
I plugged it in. An obvious way to achieve this is with a udev script.
However, cryptdisks_start calls 'udevadm settle' at a certain point. So
any such udev script will deadlock until the default 120 second timeout
is reached. Having to wait 2 minutes for the devices for my encrypted
USB drive to appear is not really a big deal, but it is annoying.
I propose the following patch to /lib/cryptsetup/cryptdisks.functions
which checks whether or not the script is being called by a binary
called '/sbin/udevd' before calling 'udevadm settle'. This solves my
problem, yet I feel like there should be a better way to do this by
playing around with --seq-start or --seq-end option to udevadm. I don't
really understand the situation that requires that 'udevadm settle'
command to be there. A quick googling indicated that that it's
important for avoiding a race condition involving the detection of new
swap devices.
### BEGIN PATCH ###
--- a/lib/cryptsetup/cryptdisks.functions
+++ b/lib/cryptsetup/cryptdisks.functions
@@ -430,7 +430,12 @@
# Rename the device from its temp name to its final name, which will
# trigger mountall
finalize_device () {
- if [ -x /sbin/udevadm ]; then
+ local parent_link
+
+ parent_link="/proc/$PPID/exe"
+ if [ ! -h $parent_link ] || \
+ [ "$( /bin/readlink $parent_link )" != "/sbin/udevd" ] && \
+ [ -x /sbin/udevadm ]; then
udevadm settle
fi
dmsetup rename "${dst}_unformatted" "$dst"
### END PATCH ###
-- Package-specific info:
-- /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.2.0-4-amd64 root=UUID=fd750c27-b2d1-4bcc-a6f9-339ebea239a1 ro nouveau.blacklist=1 i915.i915_enable_rc6=1 i915.semaphores=1 pcie_aspm=force quiet
-- System Information:
Debian Release: 7.0
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages cryptsetup depends on:
ii cryptsetup-bin 2:1.4.3-4
ii debconf [debconf-2.0] 1.5.49
ii dmsetup 2:1.02.74-4
ii libc6 2.13-37
Versions of packages cryptsetup recommends:
ii busybox 1:1.20.0-7
ii console-setup 1.88
ii initramfs-tools [linux-initramfs-tool] 0.109
ii kbd 1.15.3-9
Versions of packages cryptsetup suggests:
ii dosfstools 3.0.13-1
ii liblocale-gettext-perl 1.05-7+b1
-- debconf information:
cryptsetup/prerm_active_mappings: true
More information about the pkg-cryptsetup-devel
mailing list