Goal: Create a (live) QCOW2 overlay, and if the overlay size exceeds a certain threshold, then (1) Launch QEMU's '-blockdev' with "file.node-name" (ensure either to set "share-rw=on" in the '-device' command-line; or just completely remove -- for testing only -- '-device' to be able to write to it.) $> qemu-system-x86_64 \ -display none \ -no-user-config \ -nodefaults \ -monitor stdio \ -cpu IvyBridge-IBRS \ -smp 1,maxcpus=2 \ -machine q35,accel=kvm,usb=off \ -m 2048 \ -blockdev node-name=node-Base,driver=qcow2,file.driver=file,file.filename=./base.qcow2,file.node-name=node-Base-file \ -qmp unix:/tmp/qmp-sock,server,nowait (2) Set the 'write-threshold' to 40 MB (41943040 bytes): $> ./qmp-shell -v -p /tmp/qmp-sock (QEMU) block-set-write-threshold node-name=node-Foo-file write-threshold=41943040 { "execute": "block-set-write-threshold", "arguments": { "node-name": "node-Foo-file", "write-threshold": 41943040 } } (3) If the 'write-threshold' exceeds 40MB, then you should an event BLOCK_WRITE_THRESHOLD. Let's test it. From the HMP (not QMP) monitor, run the 'qemu-io' command to write 40MB of data (qemu) qemu-io node-Foo "write -P 01 0 40943040" wrote 40943040/40943040 bytes at offset 0 39.046 MiB, 1 ops; 0:00:01.11 (35.175 MiB/sec and 0.9009 ops/sec) (4) Re-run the above 'qemu-io' HMP command a couple of times to exceed the threshold of 40MB. Then, indeed, I get the BLOCK_WRITE_THRESHOLD event as expected (intentionally line-wrapping the event): {u'timestamp': {u'seconds': 1557408333, u'microseconds': 826608}, u'data': {u'node-name': u'node-Foo-file', u'write-threshold': 41943040, u'amount-exceeded': 7126464}, u'event': u'BLOCK_WRITE_THRESHOLD'} (5) And then based on that event, do a `block-commit` of the overlay into the backing file.