Hi, I'm having some problems with a few of my VMs which all share in common an encrypted root. They pivot into a shutdown ramfs and walk through the blockdevs in sysfs, breaking down and unmounting each device. Universally, these VMs all hang when calling 'cryptsetup remove', and only under systemd. The relevant bits of stack trace look something like this:
ioctl(3, DM_DEV_REMOVE, 0xe1b8b0) = 0 semget(0xd4d255f, 1, 0) = 229376 semctl(229376, 0, GETVAL, 0xffffffffffffffff) = 2 semop(229376, {{0, -1, IPC_NOWAIT}}, 1) = 0 semop(229376, {{0, 0, 0}}, 1 I've found 2 solutions so far to avoiding this hang: 1) Not letting systemd get its paws on my block devices to umount them. Specifically, avoiding the dm_detach_all() call seems to alleviate this. 2) Removing the mlockall() call in src/core/shutdown.c on line 351 (according to git master as of this posting). So this, to me, raises 2 questions: 1) Can systemd just leave block devices which it didn't assemble alone? I'd expect that if the initramfs assembled and mounted a device, it should be responsible for tearing it down. In theory, this could just be something as simple as just skipping over / and /usr. 2) What's the goal of calling mlockall() here? The original patch that added this (b1b2a107d15a) gives no indication of why it's wanted/needed. Cheers, Dave
pgpAasLDDhwAH.pgp
Description: PGP signature
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel