]> git.proxmox.com Git - qemu-server.git/commitdiff
check if ga runs before a fsfreeze-freeze/thaw
authorDominik Csapak <d.csapak@proxmox.com>
Fri, 10 Nov 2017 08:47:43 +0000 (09:47 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Fri, 10 Nov 2017 10:20:55 +0000 (11:20 +0100)
since the guest-fsfreeze-freeze command has a timeout of 1 hour,
we want to check if the guest-agent even runs before executing that,
or else we wait 1 hour and then continue

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
PVE/QemuServer.pm
PVE/VZDump/QemuServer.pm

index 2e822f37dae88991aae3fb4509edff9e5bd898f2..7104ba2ded357f04e34c83be5c7f277909a03655 100644 (file)
@@ -6079,7 +6079,8 @@ sub qemu_drive_mirror_monitor {
                last if $skipcomplete; #do the complete later
 
                if ($vmiddst && $vmiddst != $vmid) {
-                   if ($qga) {
+                   my $agent_running = $qga && qga_check_running($vmid);
+                   if ($agent_running) {
                        print "freeze filesystem\n";
                        eval { PVE::QemuServer::vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); };
                    } else {
@@ -6090,7 +6091,7 @@ sub qemu_drive_mirror_monitor {
                    # if we clone a disk for a new target vm, we don't switch the disk
                    PVE::QemuServer::qemu_blockjobs_cancel($vmid, $jobs);
 
-                   if ($qga) {
+                   if ($agent_running) {
                        print "unfreeze filesystem\n";
                        eval { PVE::QemuServer::vm_mon_cmd($vmid, "guest-fsfreeze-thaw"); };
                    } else {
index 65ca09d07741eee2a85a788dd1c1072bc1016cd2..a6308293095fe673299ff113c19a67b6c17413db 100644 (file)
@@ -404,7 +404,13 @@ sub archive {
        $qmpclient->queue_cmd($vmid, $add_fd_cb, 'getfd',
                              fd => $outfileno, fdname => "backup");
 
-       if ($self->{vmlist}->{$vmid}->{agent} && $vm_is_running){
+       my $agent_running = 0;
+
+       if ($self->{vmlist}->{$vmid}->{agent} && $vm_is_running) {
+           $agent_running = PVE::QemuServer::qga_check_running($vmid);
+       }
+
+       if ($agent_running){
            eval { PVE::QemuServer::vm_mon_cmd($vmid, "guest-fsfreeze-freeze"); };
            if (my $err = $@) {
                $self->logerr($err);
@@ -413,7 +419,7 @@ sub archive {
 
        $qmpclient->queue_execute();
 
-       if ($self->{vmlist}->{$vmid}->{agent} && $vm_is_running ){
+       if ($agent_running){
            eval { PVE::QemuServer::vm_mon_cmd($vmid, "guest-fsfreeze-thaw"); };
            if (my $err = $@) {
                $self->logerr($err);