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

Attachment: pgpAasLDDhwAH.pgp
Description: PGP signature

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to