Since I'm a procrastinator and I wanted to do this after full node-name support
is added I'm kind of late for this release here. Since oVirt is asking for this
feature for a very long time I would like to deliver it ASAP though.
This series adds a event which is fired once a guest writes beyond a configured
offset in the backing file. The threshold offset is configurable via a new API.
This series is in RFC state since I did not manage to polish few details mostly
connected to node names:
- currently only the top level image can be selected
- some blockjobs may clear the remembered node names and thus break this
( re-detection of the backing chain needs to be connected with node name
detection )
- the node name detection code is VERY crude
- I'm not sure how well it plays with qcow images, since I select only the top
level node (qcow protocol) rather than the file backing it
- the documentation probably sucks since I did not proof-read
Any feedback is welcome.
Peter Krempa (12):
util: storage: Split out useful bits of virStorageFileParseChainIndex
util: storage: Add preliminary storage for node names into
virStorageSource
lib: Introduce event for tracking disk backing file write threshold
qemu: monitor: Add support for BLOCK_WRITE_THRESHOLD event
qemu: domain: Add helper to lookup disk by node name
qemu: domain: Add helper to generate indexed backing store names
qemu: process: Wire up firing of the
VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD event
lib: Add API for setting the threshold size for
VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
virsh: Implement 'blockthreshold' command to call
virDomainSetBlockThreshold
qemu: domain: Add helper to look up disk soruce by the backing store
string
qemu: implement qemuDomainSetBlockThreshold
qemu: WIP: lookup nodenames
daemon/remote.c | 43 +++++++++
examples/object-events/event-test.c | 19 ++++
include/libvirt/libvirt-domain.h | 36 +++++++
src/conf/domain_event.c | 97 +++++++++++++++++++
src/conf/domain_event.h | 15 +++
src/driver-hypervisor.h | 8 ++
src/libvirt-domain.c | 51 ++++++++++
src/libvirt_private.syms | 4 +
src/libvirt_public.syms | 1 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_domain.c | 103 ++++++++++++++++++++
src/qemu/qemu_domain.h | 14 +++
src/qemu/qemu_driver.c | 64 +++++++++++++
src/qemu/qemu_monitor.c | 42 ++++++++-
src/qemu/qemu_monitor.h | 19 ++++
src/qemu/qemu_monitor_json.c | 65 ++++++++++++-
src/qemu/qemu_monitor_json.h | 6 ++
src/qemu/qemu_process.c | 41 ++++++++
src/remote/remote_driver.c | 34 +++++++
src/remote/remote_protocol.x | 33 ++++++-
src/remote_protocol-structs | 16 ++++
src/util/virstoragefile.c | 105 ++++++++++++++++++---
src/util/virstoragefile.h | 14 +++
tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 +
.../caps_2.6.0-gicv2.aarch64.xml | 1 +
.../caps_2.6.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
tools/virsh-domain.c | 84 +++++++++++++++++
tools/virsh.pod | 8 ++
37 files changed, 922 insertions(+), 14 deletions(-)
--
2.11.1