[Libguestfs] [libnbd PATCH 5/6] api: Add new nbd_aio_FOO_notify functions
Eric Blake
eblake at redhat.com
Tue Jul 2 14:41:40 UTC 2019
On 6/29/19 12:28 PM, Richard W.M. Jones wrote:
>
> Obvious change given the previous patch, so ACK.
>
> I do wonder if we should make the notify parameter mandatory (and
> therefore avoid the duplicate functions).
Maybe. I've already posted the patch for nbdkit to use the notify
parameter. But for other language bindings, the version without a notify
parameter may still be easier to use.
>
> Another trick you might do if feeling really keen is to
> programmatically generate the notify variants of commands, something
> like this:
>
> let make_notify_variant_of_call ({ args; longdesc } as call) =
> let args = List.rev args in
> let flags, args = List.hd args, List.tl args in
> assert (flags = Flags "flags");
> let args = flags :: CallbackPersist ("notify", [ etc ]) :: args in
It's a little trickier - the nbd_aio_pread_structured and
nbd_aio_block_status already have an opaque parameter, but the other
calls need to add an opaque.
> let args = List.rev args in
> let longdesc = longdesc ^ "\nThe C<notify> callback blah blah ..." in
> { call with args; longdesc }
>
> let aio_pwrite_call = {
> default_call with
> args = [ BytesPersistIn ("buf", "count"); UInt64 "offset"; Flags "flags" ]; ]
> (* etc copy the definition of aio_pwrite *)
> }
>
> let aio_pwrite_notify_call = make_notify_variant_of_call aio_pwrite_call
>
> let handle_calls = [
> ...
> "aio_pwrite", aio_pwrite_call;
> "aio_pwrite_notify", aio_pwrite_notify_call;
> ...
> ]
>
I may still play with the idea of better auto-generation of things, but
it's orthogonal enough to not hold up this patch going in.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190702/2789ccb8/attachment.sig>
More information about the Libguestfs
mailing list