Hello,
This is patchset v7 to add FSFreeze/FSThaw API for custom disk snapshotting.
Changes since v6:
* return VIR_ERR_ARGUMENT_UNSUPPORTED when 'mountpoints' parameter is
given even though the driver doesn't support it, rather than ignore it.
* include some missing argument in debug line in libvirt.c
* change option format of virsh domfsfreeze/domfsthaw from
'--mountpoints <a comma separated list of mountpoints>' to
'--mountpoint <mountpoint> --mountpoint <mountpoint> ...'
(v6:
http://www.redhat.com/archives/libvir-list/2014-April/msg01124.html )
=== Description ===
Currently FSFreeze and FSThaw are supported by qemu guest agent and they
are used internally in snapshot-create command with --quiesce option.
However, when users want to utilize the native snapshot feature of storage
devices (such as LVM over iSCSI, enterprise storage appliances, etc.),
they need to issue fsfreeze command separately from libvirt-driven snapshots.
(OpenStack cinder provides these storages' snapshot feature, but it cannot
quiesce the guest filesystems automatically for now.)
Although virDomainQemuGuestAgent() API could be used for this purpose, it
is only for debugging and is not supported officially.
This patchset adds virDomainFSFreeze()/virDomainFSThaw() APIs and virsh
domfsfreeze/domfsthaw commands to enable the users to freeze and thaw
domain's filesystems cleanly.
The APIs take mountpoints parameters, which is a list of mountpoint paths
of filesystems to be frozen/thawed. If the option is not provided, every
mounted filesystem is frozen/thawed.
The APIs have flags option currently unsupported for future extension.
---
Tomoki Sekiyama (6):
Introduce virDomainFSFreeze() and virDomainFSThaw() public API
remote: Implement virDomainFSFreeze and virDomainFSThaw
qemu: track quiesced status in qemuDomainSnapshotFSFreeze
qemu: Implement virDomainFSFreeze and virDomainFSThaw
virsh: Expose new virDomainFSFreeze and virDomainFSThaw API
qemu: Support mountpoints option of guest-fsfreeze-freeze
include/libvirt/libvirt.h.in | 10 +++
src/access/viraccessperm.c | 2 -
src/access/viraccessperm.h | 6 ++
src/driver.h | 14 ++++
src/libvirt.c | 93 ++++++++++++++++++++++++
src/libvirt_public.syms | 6 ++
src/qemu/qemu_agent.c | 47 +++++++++++-
src/qemu/qemu_agent.h | 3 +
src/qemu/qemu_domain.c | 5 +
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_driver.c | 166 ++++++++++++++++++++++++++++++++++++++----
src/remote/remote_driver.c | 2 +
src/remote/remote_protocol.x | 38 +++++++++-
src/remote_protocol-structs | 18 +++++
src/rpc/gendispatch.pl | 2 +
tests/qemuagenttest.c | 8 +-
tools/virsh-domain.c | 126 ++++++++++++++++++++++++++++++++
tools/virsh.pod | 23 ++++++
18 files changed, 546 insertions(+), 25 deletions(-)