Well, I'm not quite done (I still want to get nbdinfo to work on a single nbd connection for all cases when reading the heads of the file is not required), but I'm happy with patches 1-11, and 12-13 show where I'm headed for getting NBD_OPT_INFO to work. Posting now to see if some of the earlier patches are ready to commit while I continue working on the latter half. Eric Blake (13): api: Add nbd_set_full_info and friends info: Improve info without --list api: Add nbd_is_state_negotiating for new state api: Permit several existing API in Negotiating state api: Add nbd_set_opt_mode api: Add nbd_opt_abort and nbd_aio_opt_abort api: Add nbd_opt_go and nbd_aio_opt_go examples: Update list-exports to demonstrate nbd_opt_go info: Simplify by using nbd_opt_go api: Add nbd_opt_list api: Add nbd_aio_opt_list wip: api: Give aio_opt_go a completion callback wip: api: add nbd_opt_info, nbd_aio_opt_info docs/libnbd.pod | 42 +- lib/internal.h | 45 +- lib/nbd-protocol.h | 10 +- generator/API.ml | 478 +++++++++++++----- generator/API.mli | 1 + generator/C.ml | 4 +- generator/state_machine.ml | 37 +- generator/states-magic.c | 6 +- generator/states-newstyle-opt-go.c | 88 +++- generator/states-newstyle-opt-list.c | 83 ++- .../states-newstyle-opt-set-meta-context.c | 4 +- generator/states-newstyle-opt-starttls.c | 13 +- .../states-newstyle-opt-structured-reply.c | 8 +- generator/states-newstyle.c | 80 ++- generator/states.c | 18 +- lib/connect.c | 5 +- lib/flags.c | 28 +- lib/handle.c | 76 +-- lib/is-state.c | 14 +- lib/opt.c | 221 ++++++++ lib/Makefile.am | 3 +- tests/Makefile.am | 14 + tests/errors.c | 11 +- tests/newstyle-limited.c | 58 ++- tests/oldstyle.c | 29 +- tests/opt-abort.c | 95 ++++ tests/opt-info.c | 107 ++++ examples/list-exports.c | 139 +++-- examples/server-flags.c | 23 + interop/list-exports.c | 77 +-- .gitignore | 2 + info/Makefile.am | 7 +- info/info-description.sh | 56 ++ info/nbdinfo.c | 167 +++--- 34 files changed, 1613 insertions(+), 436 deletions(-) create mode 100644 lib/opt.c create mode 100644 tests/opt-abort.c create mode 100644 tests/opt-info.c create mode 100755 info/info-description.sh -- 2.28.0