performance: 0.923 user-level: 0.923 register: 0.921 debug: 0.920 permissions: 0.915 graphic: 0.904 architecture: 0.903 device: 0.890 assembly: 0.881 arm: 0.870 virtual: 0.870 PID: 0.858 semantic: 0.846 boot: 0.835 socket: 0.831 files: 0.821 ppc: 0.806 vnc: 0.790 hypervisor: 0.789 kernel: 0.781 TCG: 0.773 mistranslation: 0.772 peripherals: 0.768 network: 0.754 risc-v: 0.754 KVM: 0.742 x86: 0.627 VMM: 0.620 i386: 0.550 blockdev-del doesn't work after blockdev-backup with incremental, which using dirty-bitmap Description of problem: After incremental backup with bitmap, blockdev-del doesn't work at target node. Because of this, incremental backup cannot rebase to base node. I refered this. https://qemu-project.gitlab.io/qemu/interop/bitmaps.html#example-incremental-push-backups-without-backing-files Steps to reproduce: 1. `blockdev-add` incremental backup node ``` echo '{"execute":"qmp_capabilities"}{"execute":"blockdev-add","arguments":{"driver":"qcow2","node-name":"incre0","file":{"driver":"file","filename":"/mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/incre0.qcow2"}}}' | nc -U /mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/qmp.sock -N { "return": { } } ``` 2. `blockdev-backup` with `vda` to target `incre0` node ``` echo '{"execute":"qmp_capabilities"}{"execute":"blockdev-backup", "arguments": {"device": "vda", "bitmap":"bitmap0", "target": "incre0", "sync": "incremental", "job-id": "incre0-job", "speed": 536870912}}' | nc -U /mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/qmp.sock -N { "timestamp": { "seconds": 1651050066, "microseconds": 848370 }, "event": "JOB_STATUS_CHANGE", "data": { "status": "created", "id": "incre0-job" } } { "timestamp": { "seconds": 1651050066, "microseconds": 848431 }, "event": "JOB_STATUS_CHANGE", "data": { "status": "running", "id": "incre0-job" } } { "timestamp": { "seconds": 1651050066, "microseconds": 848464 }, "event": "JOB_STATUS_CHANGE", "data": { "status": "paused", "id": "incre0-job" } } { "timestamp": { "seconds": 1651050066, "microseconds": 848485 }, "event": "JOB_STATUS_CHANGE", "data": { "status": "running", "id": "incre0-job" } } { "return": { } } ``` 3. `query-block-jobs` check `incre0-job` is done ``` echo '{"execute":"qmp_capabilities"}{"execute":"query-block-jobs"}' | nc -U /mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/qmp.sock -N { "return": { } } { "return": [ ] } ``` 4. To release write lock (need to rebase in incre0.qcow2), `blockdev-del` ``` echo '{"execute":"qmp_capabilities"}{"execute":"blockdev-del","arguments":{"node-name":"incre0"}' | nc -U /mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/qmp.sock -N { "return": { } } ``` 5. `qemu-img rebase` ``` qemu-img rebase -b base.qcow2 -u incre0.qcow2 qemu-img: Could not open 'incre0.qcow2': Failed to get "write" lock Is another process using the image [incre0.qcow2]? ``` 6. check `query-named-block-nodes` after `blockdev-del` ``` { "return": [ { "iops_rd": 0, "detect_zeroes": "off", "image": { "virtual-size": 53687091200, "filename": "/mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/incre0.qcow2", "cluster-size": 65536, "format": "qcow2", "actual-size": 241340416, "format-specific": { "type": "qcow2", "data": { "compat": "1.1", "compression-type": "zlib", "lazy-refcounts": false, "refcount-bits": 16, "corrupt": false, "extended-l2": false } }, "dirty-flag": false }, "iops_wr": 0, "ro": false, "node-name": "incre0", "backing_file_depth": 0, "drv": "qcow2", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, "bps_rd": 0, "cache": { "no-flush": false, "direct": false, "writeback": true }, "file": "/mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/incre0.qcow2" }, { "iops_rd": 0, "detect_zeroes": "off", "image": { "virtual-size": 240451584, "filename": "/mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/incre0.qcow2", "format": "file", "actual-size": 241340416, "dirty-flag": false }, "iops_wr": 0, "ro": false, "node-name": "#block412", "backing_file_depth": 0, "drv": "file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, "bps_rd": 0, "cache": { "no-flush": false, "direct": false, "writeback": true }, "file": "/mnt/7b12fe9c-fa0f-4f2a-82b1-3a6cd4e15ae8/temp/incre0.qcow2" }, ...... ] } ``` Additional information: