Hi all!
This series presents a new command blockdev-replace, which helps to
insert/remove filters anywhere in the block graph. It can:
- replace qdev block-node by qdev-id
- replace export block-node by export-id
- replace any child of parent block-node by node-name and child name
So insertions is done in two steps:
1. blockdev_add (create filter node, unparented)
[some parent] [new filter]
| |
V V
[ some child ]
2. blockdev-replace (replace child by the filter)
[some parent]
|
V
[new filter]
|
V
[some child]
And removal is done in reverse order:
1. blockdev-replace (go back to picture 1)
2. blockdev_del (remove filter node)
Ideally, we should do both operations (add + replace or replace + del) in a
transaction, but that should be another series.
v10: reabsed on master.
02: change exp-blk check into assert
04: rewrite to simpler API (on unique parent id)
07: switch to new API
08: new
Vladimir Sementsov-Ogievskiy (8):
block-backend: blk_root(): drop const specifier on return type
block/export: add blk_by_export_id()
block: make bdrv_find_child() function public
qapi: add blockdev-replace command
block: bdrv_get_xdbg_block_graph(): report export ids
iotests.py: introduce VM.assert_edges_list() method
iotests: add filter-insertion
deprecate names duplication between qdev, block-node and block-export
block.c | 29 +++
block/block-backend.c | 2 +-
block/export/export.c | 41 ++++
blockdev.c | 82 +++++--
docs/about/deprecated.rst | 10 +
include/block/block-global-state.h | 1 +
include/block/block_int-io.h | 2 +
include/block/export.h | 1 +
include/system/block-backend-global-state.h | 5 +-
qapi/block-core.json | 24 ++
stubs/blk-by-qdev-id.c | 18 ++
stubs/blk-exp-find-by-blk.c | 13 +
stubs/meson.build | 2 +
system/qdev-monitor.c | 16 ++
tests/qemu-iotests/iotests.py | 17 ++
tests/qemu-iotests/tests/filter-insertion | 222 ++++++++++++++++++
tests/qemu-iotests/tests/filter-insertion.out | 5 +
17 files changed, 474 insertions(+), 16 deletions(-)
create mode 100644 stubs/blk-by-qdev-id.c
create mode 100644 stubs/blk-exp-find-by-blk.c
create mode 100755 tests/qemu-iotests/tests/filter-insertion
create mode 100644 tests/qemu-iotests/tests/filter-insertion.out
--
2.52.0