On 8/13/19 5:06 AM, Richard W.M. Jones wrote:
Patches 1-4 are basically uncontroversial, straightforward refactoring and IMHO we should just push them. Possibly 1-3 should be squashed together, but I posted them separately so they are easier to review.
Agreed.
Patches 5 and 6 together implement OClosure. Patch 5 adds the feature and is simple to understand.
Patch 6 changes the Closure completion callbacks into OClosure, but because it doesn't change the position within the list of arguments the C API doesn't change at all. The Python API also doesn't change for the same reason. (The OCaml API _does_ change but not significantly).
I've run out of time on this patch today because I've got meetings for the rest of the day (and it's only 11am!) However if I did have more time there would be a 7th patch in the series which renames all aio_*_callback functions to simply aio_*. eg. nbd_aio_pread_callback is renamed to nbd_aio_pread (and old nbd_aio_pread is removed). That is obviously a somewhat large albeit it mechanical API change.
Then from there, we move on to a patch that changes Closure/OClosure to switch the C bindings from 2-tuple to 3-tuple, where you provide a separate free_fn to be called at the end-of-lifetime instead of the current valid_flags parameter to the single function. I'm liking the way this is headed, even though it is a big API/ABI change to async users. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org