On 7/22/19 9:25 AM, Richard W.M. Jones wrote: > This has an annoying subtlety around the fact that we can pass a > single user_data and multiple closures in one function call. > > The LIBNBD_CALLBACK_FREE function would be called several times with > the same user_data in this case, which means the callback must do some > kind of reference counting before the user_data can be freed. > > I propose that we split up Closure so it describes a single closure, > although that does mean that separate user_data must be passed with > each function pointer (which may not be a bad thing).
Indeed, and it is a bit more API churn (nbd_aio_pread_structured_allback and nbd_aio_block_status_callback would now take two void* user_data parameters, which means they must have different parameter names: maybe extent_user_data vs. callback_user_data), but it makes sense. But it also simplifies 'Closure' in the generator, as you no longer have an array of callback functions that share a common data. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs