Hello,
This is patchset v5 to add FSFreeze/FSThaw API for custom disk snapshotting.
Changes to v4:
* add disks and ndisks parameter to specify disks to be frozen/thawed
* make fsfreeze requests nestable
* change api version to 1.2.4
(v4:
https://www.redhat.com/archives/libvir-list/2014-March/msg01674.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.
<updated>
The APIs take disks and ndisks parameters, which is a list of disk names
to be frozen/thawed. If the option is not provided, every mounted
filesystem is frozen/thawed.
The fsfreeze can be nestable. When fsfreeze requests to a disk are issued
multiple times, it is not thawed until the fsthaw requests are issued as
many times as the freeze requests.
Currently, qemu driver doesn't support disks parameter because the guest
agent doesn't have means to specify disks to be frozen/thawed. Hence, it
just counts depth of fsfreeze per domain, not per disk, so far.
</updated>
The APIs have flags option currently unsupported for future extension.
---
Tomoki Sekiyama (5):
Introduce virDomainFSFreeze() and virDomainFSThaw() public API
remote: Implement virDomainFSFreeze and virDomainFSThaw
qemu: Track domain quiesced status and make fsfreeze/thaw nestable
qemu: Implement virDomainFSFreeze and virDomainFSThaw
virsh: Expose new virDomainFSFreeze and virDomainFSThaw API
include/libvirt/libvirt.h.in | 10 +++
src/access/viraccessperm.c | 2 -
src/access/viraccessperm.h | 6 ++
src/driver.h | 14 ++++
src/libvirt.c | 92 ++++++++++++++++++++++++
src/libvirt_public.syms | 6 ++
src/qemu/qemu_domain.c | 6 ++
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_driver.c | 159 ++++++++++++++++++++++++++++++++++++++----
src/remote/remote_driver.c | 2 +
src/remote/remote_protocol.x | 30 +++++++-
src/remote_protocol-structs | 18 +++++
src/rpc/gendispatch.pl | 2 +
tools/virsh-domain.c | 128 ++++++++++++++++++++++++++++++++++
tools/virsh.pod | 23 ++++++
15 files changed, 483 insertions(+), 17 deletions(-)