Some storage like rbd or lvm can't keep thin-provising after a qemu-mirror.

Call qga guest-fstrim if qga is available and fstrim_cloned_disks is enabled
after move_disk and migrate.

Co-Authored-By: Alexandre Derumier <[email protected]>
Signed-off-by: Stoiko Ivanov <[email protected]>
---
 PVE/API2/Qemu.pm   | 4 ++++
 PVE/QemuMigrate.pm | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 464ba7f..b0af9d9 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -2969,6 +2969,10 @@ __PACKAGE__->register_method({
 
                    PVE::QemuConfig->write_config($vmid, $conf);
 
+                   if ($running && 
PVE::QemuServer::parse_guest_agent($conf)->{fstrim_cloned_disks} && 
PVE::QemuServer::qga_check_running($vmid)) {
+                       eval { PVE::QemuServer::vm_mon_cmd($vmid, 
"guest-fstrim"); };
+                   }
+
                    eval {
                        # try to deactivate volumes - avoid lvm LVs to be 
active on several nodes
                        PVE::Storage::deactivate_volumes($storecfg, [ 
$newdrive->{file} ])
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 27cf7e3..e9e9075 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -966,6 +966,11 @@ sub phase3_cleanup {
                $self->{errors} = 1;
            }
        }
+
+       if ($self->{storage_migration} && 
PVE::QemuServer::parse_guest_agent($conf)->{fstrim_cloned_disks} && 
$self->{running}) {
+           my $cmd = [@{$self->{rem_ssh}}, 'qm', 'guest', 'cmd', $vmid, 
'fstrim'];
+           eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => 
sub {}) };
+       }
     }
 
     # close tunnel on successful migration, on error phase2_cleanup closed it
-- 
2.11.0


_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to