A deeper problem I think is that it's ill-specified what is
supposed to happen when nbdkit receives a termination signal.
We don't specify (for example) that plugin callbacks could or
could not be killed in the middle. Killing them in the middle
of a callback could be bad for some plugins.
Going back to the original problem, perhaps we could have fixed
it instead by acquiring a lock around all plugin callbacks, and
ensuring that plugin_cleanup also acquires the same lock. The
lock would normally be uncontended so it shouldn't cause any
performance issues. That would be a fairly simple revert of
63f0eb088 + alternate fix.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v