[Libguestfs] [nbdkit PATCH 4/5] api: Add .cleanup callback
Richard W.M. Jones
rjones at redhat.com
Tue May 11 14:21:17 UTC 2021
On Thu, May 06, 2021 at 08:59:39PM -0500, Eric Blake wrote:
> The existing .unload callback is currently called inner-to-outer,
> which is not suitable for use in late cleanups where a filter wants to
> make one final call into the underlying plugin. We were careful to
> state that unload does not have a specific ordering, but switching
> that ordering may not be helpful. Late cleanup may also want one
> final chance to open a context into the plugin, which implies one
> final access to the backend pointer from filters (in contrast to
> .unload taking no parameters).
>
> So, I found it easier to introduce a new .cleanup callback,
> specifically stated to be the counterpart of .after_fork. This leaves
> .load/.unload as a pair for handling things at the dlopen barrier
> (affecting only the local filter or plugin, but no interaction with
> other modules), and .after_fork/.cleanup for handling things related
> to the first and last points at which it is safe to interact with the
> underlying plugin. The new callback has no return value, as by the
> time we are cleaning up, any failures are not going to change the fact
> we are shutting down anyway.
> ---
> docs/nbdkit-filter.pod | 22 +++++++++++++++++++---
> docs/nbdkit-plugin.pod | 33 ++++++++++++++++++++++++++++++---
> include/nbdkit-filter.h | 1 +
> include/nbdkit-plugin.h | 4 +++-
> server/internal.h | 2 ++
> server/filters.c | 13 +++++++++++++
> server/main.c | 1 +
> server/plugins.c | 13 +++++++++++++
> tests/test-layers-filter.c | 8 ++++++++
> tests/test-layers-plugin.c | 9 ++++++++-
> tests/test-layers.c | 12 ++++++++++++
> 11 files changed, 110 insertions(+), 8 deletions(-)
Yes this one is fine - it could be pushed immediately.
The difference between plugin.cleanup and plugin.unload
is quite subtle :-)
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
More information about the Libguestfs
mailing list