]> git.proxmox.com Git - qemu-server.git/commitdiff
snapshot_create: use guest-fsfreeze-freeze if possible
authorWolfgang Link <wolfgang@linksystems.org>
Tue, 2 Dec 2014 10:42:17 +0000 (11:42 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 2 Dec 2014 12:11:42 +0000 (13:11 +0100)
Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
PVE/QemuServer.pm

index 75ddcdd9714b5d09db07c74d5089f0fe6934ded7..278570089ec4aa118dc9d8d3edd9824b0f189316 100644 (file)
@@ -3313,18 +3313,6 @@ sub qemu_volume_snapshot_delete {
     vm_mon_cmd($vmid, "delete-drive-snapshot", device => $deviceid, name => $snap);
 }
 
-sub qga_freezefs {
-    my ($vmid) = @_;
-
-    #need to impplement call to qemu-ga
-}
-
-sub qga_unfreezefs {
-    my ($vmid) = @_;
-
-    #need to impplement call to qemu-ga
-}
-
 sub set_migration_caps {
     my ($vmid) = @_;
 
@@ -4898,6 +4886,13 @@ sub snapshot_create {
 
     my $running = check_running($vmid);
 
+    my $config = load_config($vmid); 
+       
+    if ($running && $config->{agent}) {
+       eval { vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); };
+       warn "guest-fsfreeze-freeze problems - $@" if $@;
+    }
+           
     eval {
        # create internal snapshots of all drives
 
@@ -4913,8 +4908,6 @@ sub snapshot_create {
            }
        };
 
-       qga_freezefs($vmid) if $running && $freezefs;
-
        foreach_drive($snap, sub {
            my ($ds, $drive) = @_;
 
@@ -4929,14 +4922,16 @@ sub snapshot_create {
     };
     my $err = $@;
 
-    eval { qga_unfreezefs($vmid) if $running && $freezefs; };
-    warn $@ if $@;
+    if ($running) {
+       eval { vm_mon_cmd($vmid, "savevm-end")  };
+       warn $@ if $@;
 
-    eval { vm_mon_cmd($vmid, "savevm-end") if $running; };
-    warn $@ if $@;
+       if ($config->{agent}) {
+           eval { vm_mon_cmd($vmid, "guest-fsfreeze-thaw"); }; 
+           warn "guest-fsfreeze-thaw problems - $@" if $@;
+       }
 
-    # savevm-end is async, we need to wait
-    if ($running) {
+       # savevm-end is async, we need to wait
        for (;;) {
            my $stat = vm_mon_cmd_nocheck($vmid, "query-savevm");
            if (!$stat->{bytes}) {