mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-28 05:50:37 +00:00
3860c02019
We are going to publish copy-before-write filter. So, user should be able to create it with blockdev-add first, specifying both filtered and target children. And then do blockdev-reopen, to actually insert the filter where needed. Currently, filter unshares write permission unconditionally on source node. It's good, but it will not allow to do blockdev-add. So, let's relax restrictions when filter doesn't have any parent. Test output is modified, as now permission conflict happens only when job creates a blk parent for filter node. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20210824083856.17408-11-vsementsov@virtuozzo.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
24 lines
1.6 KiB
Plaintext
24 lines
1.6 KiB
Plaintext
{"execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "target", "size": 1048576}}
|
|
{"return": {}}
|
|
{"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": {"driver": "null-co", "node-name": "base", "size": 1048576}, "node-name": "source"}}
|
|
{"return": {}}
|
|
{"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": "base", "node-name": "other", "take-child-perms": ["write"]}}
|
|
{"return": {}}
|
|
{"execute": "blockdev-backup", "arguments": {"device": "source", "sync": "full", "target": "target"}}
|
|
{"error": {"class": "GenericError", "desc": "Permission conflict on node 'base': permissions 'write' are both required by node 'other' (uses node 'base' as 'image' child) and unshared by node 'source' (uses node 'base' as 'image' child)."}}
|
|
|
|
=== copy-before-write filter should be gone after job-finalize ===
|
|
|
|
{"execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "source"}}
|
|
{"return": {}}
|
|
{"execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "target"}}
|
|
{"return": {}}
|
|
{"execute": "blockdev-backup", "arguments": {"auto-dismiss": false, "auto-finalize": false, "device": "source", "filter-node-name": "backup-filter", "job-id": "backup", "sync": "full", "target": "target"}}
|
|
{"return": {}}
|
|
{"execute": "job-finalize", "arguments": {"id": "backup"}}
|
|
{"return": {}}
|
|
{"execute": "human-monitor-command", "arguments": {"command-line": "qemu-io backup-filter \"write 0 1M\""}}
|
|
{"return": "Error: Cannot find device='' nor node-name='backup-filter'\r\n"}
|
|
{"execute": "job-dismiss", "arguments": {"id": "backup"}}
|
|
{"return": {}}
|