[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