We are planning to add more block export types than just NBD in the near future (e.g. vhost-user-blk and FUSE). This series lays the ground for this with some generic block export infrastructure and QAPI interfaces that will allow managing all of them (for now add/remove/query).
As a side effect, qemu-storage-daemon can now map --export directly to the block-export-add QMP command, similar to other command line options. The built-in NBD servers also gains new options that bring it at least a little closer to feature parity with qemu-nbd. Kevin Wolf (29): nbd: Remove unused nbd_export_get_blockdev() qapi: Create block-export module qapi: Rename BlockExport to BlockExportOptions block/export: Add BlockExport infrastructure and block-export-add qemu-storage-daemon: Use qmp_block_export_add() qemu-nbd: Use raw block driver for --offset block/export: Remove magic from block-export-add nbd: Add max-connections to nbd-server-start nbd: Add writethrough to block-export-add nbd: Remove NBDExport.close callback qemu-nbd: Use blk_exp_add() to create the export nbd/server: Simplify export shutdown block/export: Move refcount from NBDExport to BlockExport block/export: Move AioContext from NBDExport to BlockExport block/export: Add node-name to BlockExportOptions block/export: Allocate BlockExport in blk_exp_add() block/export: Add blk_exp_close_all(_type) block/export: Add 'id' option to block-export-add block/export: Move strong user reference to block_exports block/export: Add block-export-del block/export: Add BLOCK_EXPORT_DELETED event block/export: Move blk to BlockExport block/export: Create BlockBackend in blk_exp_add() block/export: Add query-block-exports block/export: Move writable to BlockExportOptions nbd: Merge nbd_export_new() and nbd_export_create() nbd: Deprecate nbd-server-add/remove iotests: Factor out qemu_tool_pipe_and_status() iotests: Test block-export-* QMP interface qapi/block-core.json | 166 -------------- qapi/block-export.json | 291 ++++++++++++++++++++++++ qapi/qapi-schema.json | 1 + docs/system/deprecated.rst | 8 + include/block/export.h | 89 ++++++++ include/block/nbd.h | 22 +- block.c | 2 +- block/export/export.c | 318 +++++++++++++++++++++++++++ block/monitor/block-hmp-cmds.c | 13 +- blockdev-nbd.c | 171 +++++++------- nbd/server.c | 309 +++++++++++--------------- qemu-nbd.c | 67 +++--- storage-daemon/qemu-storage-daemon.c | 27 +-- tests/qemu-iotests/iotests.py | 59 ++--- block/export/meson.build | 1 + block/meson.build | 2 + meson.build | 2 +- qapi/meson.build | 4 +- storage-daemon/qapi/qapi-schema.json | 1 + tests/qemu-iotests/140.out | 1 + tests/qemu-iotests/223.out | 8 +- tests/qemu-iotests/307 | 117 ++++++++++ tests/qemu-iotests/307.out | 111 ++++++++++ tests/qemu-iotests/group | 1 + 24 files changed, 1267 insertions(+), 524 deletions(-) create mode 100644 qapi/block-export.json create mode 100644 include/block/export.h create mode 100644 block/export/export.c create mode 100644 block/export/meson.build create mode 100755 tests/qemu-iotests/307 create mode 100644 tests/qemu-iotests/307.out -- 2.25.4