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.
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.
Rich.