On 24.01.2012 19:49, Jiri Denemark wrote:
On Tue, Jan 24, 2012 at 18:37:44 +0100, Michal Privoznik wrote:
> With this flag, virDomainSnapshotCreate will use fs-freeze and
> fs-thaw guest agent commands to quiesce guest's disks.
> ---
> include/libvirt/libvirt.h.in | 4 ++
> src/libvirt.c | 6 ++
> src/qemu/qemu_driver.c | 118 ++++++++++++++++++++++++++++++++++++-----
> 3 files changed, 113 insertions(+), 15 deletions(-)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index 5e6e488..182065d 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -3125,6 +3125,10 @@ typedef enum {
> system checkpoint */
> VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = (1 << 5), /* reuse any existing
> external files */
> + VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = (1 << 6), /* use guest agent to
> + quiesce all mounted
> + file systems within
> + the domain */
Do we also want to add another flag that would make quiescing optional? That
is, use it if it's available but don't fail if it's not.
If this is ever needed we can add it then.
> @@ -9493,6 +9543,13 @@
qemuDomainSnapshotCreateActive(virConnectPtr conn,
> }
>
> if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
> + if ((flags & VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE) &&
> + (qemuDomainSnapshotFSFreeze(driver, vm) < 0)) {
> + qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Unable to freeze domain's file
systems"));
This just masks useful error reported by qemuDomainSnapshotFSFreeze().
In fact, I just realized, this is dead code. Since we are checking for
DISK_ONLY flag which implies calling
qemuDomainSnapshotCreateDiskActive() we will never get this condition to
evaluate as true. I'll drop it in v2.