* [pve-devel] [PATCH qemu-server v5 1/9] add a guest-fsfreeze qga setting
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 2/9] api: clone_vm: follow guest-fsfreeze setting Maximiliano Sandoval
` (10 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Adds a new setting that controls whether guest-fsfreeze-{freeze,thaw}
commands should be issued. The previous setting was only taken into
account for backups.
In this commit we only use this setting for backups. The following two
commits will ensure the setting is used on replications, snapshots and
clones.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/Agent.pm | 12 ++++++++++++
src/PVE/VZDump/QemuServer.pm | 7 +++++--
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
index 5d88b7bd..b29dcb70 100644
--- a/src/PVE/QemuServer/Agent.pm
+++ b/src/PVE/QemuServer/Agent.pm
@@ -41,6 +41,18 @@ our $agent_fmt = {
optional => 1,
default => 1,
},
+ 'guest-fsfreeze' => {
+ description =>
+ "Whether to issue the guest-fsfreeze-freeze and guest-fsfreeze-thaw QEMU guest agent commands.\n\n"
+ . "Backups in snapshot mode, clones, snapshots without RAM, importing disks from a running guest, "
+ . "and replications normally issue a guest-fsfreeze-freeze and a respective thaw command when the "
+ . "QEMU Guest agent option is enabled on the guest's configuration and the agent is running "
+ . "inside of the guest.\n\nWhen set it will take precedence over 'freeze-fs-on-backup'.",
+
+ type => 'boolean',
+ optional => 1,
+ default => 1,
+ },
type => {
description => "Select the agent type",
type => 'string',
diff --git a/src/PVE/VZDump/QemuServer.pm b/src/PVE/VZDump/QemuServer.pm
index 84ebbe80..af684a1d 100644
--- a/src/PVE/VZDump/QemuServer.pm
+++ b/src/PVE/VZDump/QemuServer.pm
@@ -1102,8 +1102,11 @@ sub qga_fs_freeze {
return;
}
- my $freeze =
- PVE::QemuServer::Agent::get_qga_key($self->{vmlist}->{$vmid}, 'freeze-fs-on-backup') // 1;
+ my $freeze = PVE::QemuServer::Agent::get_qga_key($self->{vmlist}->{$vmid}, 'guest-fsfreeze');
+ $freeze //=
+ PVE::QemuServer::Agent::get_qga_key($self->{vmlist}->{$vmid}, 'freeze-fs-on-backup');
+ $freeze //= 1;
+
if (!$freeze) {
$self->loginfo("skipping guest-agent 'fs-freeze', disabled in VM options");
return;
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 2/9] api: clone_vm: follow guest-fsfreeze setting
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 1/9] add a guest-fsfreeze qga setting Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 3/9] fix #1964: follow guest-fsfreeze setting on check freeze needed Maximiliano Sandoval
` (9 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/API2/Qemu.pm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm
index 190878de..fc20c1c4 100644
--- a/src/PVE/API2/Qemu.pm
+++ b/src/PVE/API2/Qemu.pm
@@ -4556,6 +4556,9 @@ __PACKAGE__->register_method({
$dest_info->{efisize} = PVE::QemuServer::get_efivars_size($oldconf)
if $opt eq 'efidisk0';
+ my $qga = $oldconf->{agent}
+ && PVE::QemuServer::Agent::get_qga_key($oldconf, 'guest-fsfreeze') // 1;
+
my $newdrive = PVE::QemuServer::clone_disk(
$storecfg,
$source_info,
@@ -4564,7 +4567,7 @@ __PACKAGE__->register_method({
$newvollist,
$jobs,
$completion,
- $oldconf->{agent},
+ $qga,
$clonelimit,
);
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 3/9] fix #1964: follow guest-fsfreeze setting on check freeze needed
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 1/9] add a guest-fsfreeze qga setting Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 2/9] api: clone_vm: follow guest-fsfreeze setting Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 4/9] agent: add a guest_fsthaw helper Maximiliano Sandoval
` (8 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
This method is used by replications and snapshots without RAM.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuConfig.pm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/PVE/QemuConfig.pm b/src/PVE/QemuConfig.pm
index ad6ce6b0..803e4da4 100644
--- a/src/PVE/QemuConfig.pm
+++ b/src/PVE/QemuConfig.pm
@@ -298,7 +298,8 @@ sub __snapshot_check_freeze_needed {
$running,
$running
&& PVE::QemuServer::Agent::get_qga_key($config, 'enabled')
- && PVE::QemuServer::Agent::qga_check_running($vmid),
+ && PVE::QemuServer::Agent::qga_check_running($vmid)
+ && PVE::QemuServer::Agent::get_qga_key($config, 'guest-fsfreeze') // 1,
);
} else {
return ($running, 0);
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 4/9] agent: add a guest_fsthaw helper
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (2 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 3/9] fix #1964: follow guest-fsfreeze setting on check freeze needed Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 5/9] port users of guest-fsfreeze-thaw users to helper Maximiliano Sandoval
` (7 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/Agent.pm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
index b29dcb70..7193d015 100644
--- a/src/PVE/QemuServer/Agent.pm
+++ b/src/PVE/QemuServer/Agent.pm
@@ -265,4 +265,20 @@ sub guest_fsfreeze {
die "unable to freeze guest fs - unexpected status '$status'\n" if $status ne 'frozen';
}
+=head3 guest_fsthaw
+
+ guest_fsthaw($vmid);
+
+Thaws the file systems of the guest C<$vmid>. Dies if the file systems cannot be thawed.
+
+See C<$guest_fsfreeze> for more details.
+
+=cut
+
+sub guest_fsthaw {
+ my ($vmid) = @_;
+
+ PVE::QemuServer::Monitor::mon_cmd($vmid, "guest-fsfreeze-thaw");
+}
+
1;
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 5/9] port users of guest-fsfreeze-thaw users to helper
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (3 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 4/9] agent: add a guest_fsthaw helper Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 6/9] block job: log when a fsfreeze could not happen Maximiliano Sandoval
` (6 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuConfig.pm | 2 +-
src/PVE/QemuServer/BlockJob.pm | 2 +-
src/PVE/VZDump/QemuServer.pm | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/PVE/QemuConfig.pm b/src/PVE/QemuConfig.pm
index 803e4da4..bd67be1a 100644
--- a/src/PVE/QemuConfig.pm
+++ b/src/PVE/QemuConfig.pm
@@ -310,7 +310,7 @@ sub __snapshot_freeze {
my ($class, $vmid, $unfreeze) = @_;
if ($unfreeze) {
- eval { mon_cmd($vmid, "guest-fsfreeze-thaw"); };
+ eval { PVE::QemuServer::Agent::guest_fsthaw($vmid); };
warn "guest-fsfreeze-thaw problems - $@" if $@;
} else {
eval { PVE::QemuServer::Agent::guest_fsfreeze($vmid); };
diff --git a/src/PVE/QemuServer/BlockJob.pm b/src/PVE/QemuServer/BlockJob.pm
index c89994db..b25dcf9a 100644
--- a/src/PVE/QemuServer/BlockJob.pm
+++ b/src/PVE/QemuServer/BlockJob.pm
@@ -178,7 +178,7 @@ sub qemu_drive_mirror_monitor {
if ($agent_running) {
print "unfreeze filesystem\n";
- eval { mon_cmd($vmid, "guest-fsfreeze-thaw"); };
+ eval { PVE::QemuServer::Agent::guest_fsthaw($vmid); };
warn $@ if $@;
} else {
print "resume vm\n";
diff --git a/src/PVE/VZDump/QemuServer.pm b/src/PVE/VZDump/QemuServer.pm
index af684a1d..58c86547 100644
--- a/src/PVE/VZDump/QemuServer.pm
+++ b/src/PVE/VZDump/QemuServer.pm
@@ -1124,7 +1124,7 @@ sub qga_fs_thaw {
my ($self, $vmid) = @_;
$self->loginfo("issuing guest-agent 'fs-thaw' command");
- eval { mon_cmd($vmid, "guest-fsfreeze-thaw") };
+ eval { PVE::QemuServer::Agent::guest_fsthaw($vmid); };
$self->logerr($@) if $@;
}
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 6/9] block job: log when a fsfreeze could not happen
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (4 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 5/9] port users of guest-fsfreeze-thaw users to helper Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 7/9] block job: mirror: reword fsfreeze log entry Maximiliano Sandoval
` (5 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
We print a message when the config says that we should issue a
guest-fsfreeze-freeze command but we can't because the agent is not
running or vise versa.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/BlockJob.pm | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/PVE/QemuServer/BlockJob.pm b/src/PVE/QemuServer/BlockJob.pm
index b25dcf9a..313918e3 100644
--- a/src/PVE/QemuServer/BlockJob.pm
+++ b/src/PVE/QemuServer/BlockJob.pm
@@ -162,11 +162,17 @@ sub qemu_drive_mirror_monitor {
last if $completion eq 'skip' || $completion eq 'auto';
if ($vmiddst && $vmiddst != $vmid) {
- my $agent_running = $qga && qga_check_running($vmid);
- if ($agent_running) {
+ my $agent_running = qga_check_running($vmid);
+ my $should_fsfreeze = $qga && $agent_running;
+ if ($should_fsfreeze) {
print "freeze filesystem\n";
eval { PVE::QemuServer::Agent::guest_fsfreeze($vmid); };
warn $@ if $@;
+ } elsif ($agent_running && !$qga) {
+ print "skipping guest-agent 'guest-fsfreeze-freeze', disabled in VM options\n";
+ } elsif (!$agent_running && $qga) {
+ print
+ "skipping guest agent 'guest-fsfreeze-freeze' command: the agent is not running inside of the guest\n";
} else {
print "suspend vm\n";
eval { PVE::QemuServer::RunState::vm_suspend($vmid, 1); };
@@ -176,7 +182,7 @@ sub qemu_drive_mirror_monitor {
# if we clone a disk for a new target vm, we don't switch the disk
qemu_blockjobs_cancel($vmid, $jobs);
- if ($agent_running) {
+ if ($should_fsfreeze) {
print "unfreeze filesystem\n";
eval { PVE::QemuServer::Agent::guest_fsthaw($vmid); };
warn $@ if $@;
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 7/9] block job: mirror: reword fsfreeze log entry
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (5 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 6/9] block job: log when a fsfreeze could not happen Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting Maximiliano Sandoval
` (4 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/BlockJob.pm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/PVE/QemuServer/BlockJob.pm b/src/PVE/QemuServer/BlockJob.pm
index 313918e3..e5568f45 100644
--- a/src/PVE/QemuServer/BlockJob.pm
+++ b/src/PVE/QemuServer/BlockJob.pm
@@ -165,7 +165,7 @@ sub qemu_drive_mirror_monitor {
my $agent_running = qga_check_running($vmid);
my $should_fsfreeze = $qga && $agent_running;
if ($should_fsfreeze) {
- print "freeze filesystem\n";
+ print "issuing guest agent 'guest-fsfreeze-freeze' command\n";
eval { PVE::QemuServer::Agent::guest_fsfreeze($vmid); };
warn $@ if $@;
} elsif ($agent_running && !$qga) {
@@ -183,7 +183,7 @@ sub qemu_drive_mirror_monitor {
qemu_blockjobs_cancel($vmid, $jobs);
if ($should_fsfreeze) {
- print "unfreeze filesystem\n";
+ print "issuing guest agent 'guest-fsfreeze-thaw' command\n";
eval { PVE::QemuServer::Agent::guest_fsthaw($vmid); };
warn $@ if $@;
} else {
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (6 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 7/9] block job: mirror: reword fsfreeze log entry Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-03-16 21:50 ` Thomas Lamprecht
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 9/9] api: import: follow guest-fsfreeze setting Maximiliano Sandoval
` (3 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/Agent.pm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
index 7193d015..05ff4cae 100644
--- a/src/PVE/QemuServer/Agent.pm
+++ b/src/PVE/QemuServer/Agent.pm
@@ -35,8 +35,10 @@ our $agent_fmt = {
optional => 1,
default => 0,
},
+ # TODO Remove for Proxmox VE 10
'freeze-fs-on-backup' => {
- description => "Freeze/thaw guest filesystems on backup for consistency.",
+ description => "Deprecated: Use 'guest-fsfreeze' instead.\n\n"
+ . " Freeze/thaw guest filesystems on backup for consistency.",
type => 'boolean',
optional => 1,
default => 1,
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting Maximiliano Sandoval
@ 2026-03-16 21:50 ` Thomas Lamprecht
2026-03-17 8:21 ` Maximiliano Sandoval
2026-03-17 9:40 ` Fiona Ebner
0 siblings, 2 replies; 18+ messages in thread
From: Thomas Lamprecht @ 2026-03-16 21:50 UTC (permalink / raw)
To: Proxmox VE development discussion, Maximiliano Sandoval
Am 05.01.26 um 13:17 schrieb Maximiliano Sandoval:
> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
> ---
> src/PVE/QemuServer/Agent.pm | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
> index 7193d015..05ff4cae 100644
> --- a/src/PVE/QemuServer/Agent.pm
> +++ b/src/PVE/QemuServer/Agent.pm
> @@ -35,8 +35,10 @@ our $agent_fmt = {
> optional => 1,
> default => 0,
> },
> + # TODO Remove for Proxmox VE 10
> 'freeze-fs-on-backup' => {
> - description => "Freeze/thaw guest filesystems on backup for consistency.",
> + description => "Deprecated: Use 'guest-fsfreeze' instead.\n\n"
> + . " Freeze/thaw guest filesystems on backup for consistency.",
> type => 'boolean',
> optional => 1,
> default => 1,
why not just make this an alias for the new (superset) property?
And you certainly *cannot* remove this in PVE 10, doing so will break
restoring previous backups!
This needs some fixing up please.
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-03-16 21:50 ` Thomas Lamprecht
@ 2026-03-17 8:21 ` Maximiliano Sandoval
2026-03-17 9:40 ` Fiona Ebner
1 sibling, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-03-17 8:21 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: Proxmox VE development discussion
Thomas Lamprecht <t.lamprecht@proxmox.com> writes:
> Am 05.01.26 um 13:17 schrieb Maximiliano Sandoval:
>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>> ---
>> src/PVE/QemuServer/Agent.pm | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
>> index 7193d015..05ff4cae 100644
>> --- a/src/PVE/QemuServer/Agent.pm
>> +++ b/src/PVE/QemuServer/Agent.pm
>> @@ -35,8 +35,10 @@ our $agent_fmt = {
>> optional => 1,
>> default => 0,
>> },
>> + # TODO Remove for Proxmox VE 10
>> 'freeze-fs-on-backup' => {
>> - description => "Freeze/thaw guest filesystems on backup for consistency.",
>> + description => "Deprecated: Use 'guest-fsfreeze' instead.\n\n"
>> + . " Freeze/thaw guest filesystems on backup for consistency.",
>> type => 'boolean',
>> optional => 1,
>> default => 1,
>
> why not just make this an alias for the new (superset) property?
I was not aware of aliases for props, where can I see an example?
> And you certainly *cannot* remove this in PVE 10, doing so will break
> restoring previous backups!
Just to be clear, one should just remove the TODO comment?
> This needs some fixing up please.
--
Maximiliano
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-03-16 21:50 ` Thomas Lamprecht
2026-03-17 8:21 ` Maximiliano Sandoval
@ 2026-03-17 9:40 ` Fiona Ebner
2026-03-17 11:32 ` Thomas Lamprecht
1 sibling, 1 reply; 18+ messages in thread
From: Fiona Ebner @ 2026-03-17 9:40 UTC (permalink / raw)
To: Thomas Lamprecht, Proxmox VE development discussion,
Maximiliano Sandoval
Am 16.03.26 um 10:49 PM schrieb Thomas Lamprecht:
> Am 05.01.26 um 13:17 schrieb Maximiliano Sandoval:
>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>> ---
>> src/PVE/QemuServer/Agent.pm | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/PVE/QemuServer/Agent.pm b/src/PVE/QemuServer/Agent.pm
>> index 7193d015..05ff4cae 100644
>> --- a/src/PVE/QemuServer/Agent.pm
>> +++ b/src/PVE/QemuServer/Agent.pm
>> @@ -35,8 +35,10 @@ our $agent_fmt = {
>> optional => 1,
>> default => 0,
>> },
>> + # TODO Remove for Proxmox VE 10
>> 'freeze-fs-on-backup' => {
>> - description => "Freeze/thaw guest filesystems on backup for consistency.",
>> + description => "Deprecated: Use 'guest-fsfreeze' instead.\n\n"
>> + . " Freeze/thaw guest filesystems on backup for consistency.",
>> type => 'boolean',
>> optional => 1,
>> default => 1,
>
> why not just make this an alias for the new (superset) property?
If we think most people set the property because the VM had issues with
freezing, which are not actually limited to the backup case, then having
it be an alias can be sensible. I do think this is the case, but it
might still be surprising to some people. We could also wait until PVE
10 to have it become an alias or...
> And you certainly *cannot* remove this in PVE 10, doing so will break
> restoring previous backups!
...just translate the option to the more general one in
restore_update_config_line() and/or parse_config(), then we could drop
it from the schema.
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-03-17 9:40 ` Fiona Ebner
@ 2026-03-17 11:32 ` Thomas Lamprecht
2026-03-17 11:54 ` Fiona Ebner
0 siblings, 1 reply; 18+ messages in thread
From: Thomas Lamprecht @ 2026-03-17 11:32 UTC (permalink / raw)
To: Fiona Ebner, Proxmox VE development discussion, Maximiliano Sandoval
Am 17.03.26 um 10:40 schrieb Fiona Ebner:
>> why not just make this an alias for the new (superset) property?
> If we think most people set the property because the VM had issues with
> freezing, which are not actually limited to the backup case, then having
> it be an alias can be sensible. I do think this is the case, but it
> might still be surprising to some people. We could also wait until PVE
> 10 to have it become an alias or...
I mean the option is also made for that assumption, isn't it? Because
otherwise we would need to make it a "flag list" (sorta like the
features for LXC config) to actually provide full control on when to
freeze and when not.
As a boolean flag with just the name changed it IMO intended to be a
superset of the backup one, as introducing then a specific flag for clone,
snapshot, replication, ...? would be much better solved by a flag list,
that then would also avoid users wondering for when this is actually done,
as that can be seen by the selected options. But not a must to do now,
mostly also because that needs some dedicated handling as the qemu-server
was already released...
>> And you certainly *cannot* remove this in PVE 10, doing so will break
>> restoring previous backups!
> ...just translate the option to the more general one in
> restore_update_config_line() and/or parse_config(), then we could drop
> it from the schema.
That needs to be remembered though, with the current comment and how
this was applied I rather doubt that doing so was on the radar... And,
while that can be done, it's not like it's without implication, as
backup and restoring that again on an older PVE would make it fail
even if one did not change the VM at all. Not something we (can) provide
hard guarantees for, but certainly not something I want to actively break,
especially without good reason.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting
2026-03-17 11:32 ` Thomas Lamprecht
@ 2026-03-17 11:54 ` Fiona Ebner
0 siblings, 0 replies; 18+ messages in thread
From: Fiona Ebner @ 2026-03-17 11:54 UTC (permalink / raw)
To: Thomas Lamprecht, Proxmox VE development discussion,
Maximiliano Sandoval
Am 17.03.26 um 12:31 PM schrieb Thomas Lamprecht:
> Am 17.03.26 um 10:40 schrieb Fiona Ebner:
>>> why not just make this an alias for the new (superset) property?
>> If we think most people set the property because the VM had issues with
>> freezing, which are not actually limited to the backup case, then having
>> it be an alias can be sensible. I do think this is the case, but it
>> might still be surprising to some people. We could also wait until PVE
>> 10 to have it become an alias or...
>
> I mean the option is also made for that assumption, isn't it? Because
> otherwise we would need to make it a "flag list" (sorta like the
> features for LXC config) to actually provide full control on when to
> freeze and when not.
Yes, it is made for that assumption.
> As a boolean flag with just the name changed it IMO intended to be a
> superset of the backup one, as introducing then a specific flag for clone,
> snapshot, replication, ...? would be much better solved by a flag list,
> that then would also avoid users wondering for when this is actually done,
> as that can be seen by the selected options. But not a must to do now,
> mostly also because that needs some dedicated handling as the qemu-server
> was already released...
The only operation where skipping freeze might make sense for
performance reasons (and not for the reason that the guest has issues
with it) is replication, which was also requested in Bugzilla. For that,
a flag for the replication job seems more fitting to me.
>>> And you certainly *cannot* remove this in PVE 10, doing so will break
>>> restoring previous backups!
>> ...just translate the option to the more general one in
>> restore_update_config_line() and/or parse_config(), then we could drop
>> it from the schema.
>
> That needs to be remembered though, with the current comment and how
> this was applied I rather doubt that doing so was on the radar... And,
> while that can be done, it's not like it's without implication, as
> backup and restoring that again on an older PVE would make it fail
> even if one did not change the VM at all. Not something we (can) provide
> hard guarantees for, but certainly not something I want to actively break,
> especially without good reason.
I'm sorry and I agree that removing the old option in PVE 10 might not
be the best approach.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [pve-devel] [PATCH qemu-server v5 9/9] api: import: follow guest-fsfreeze setting
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (7 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 8/9] deprecate freeze-fs-on-backup qga setting Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH guest-common v5 1/1] abstract config: print when {, un}freezing a fs Maximiliano Sandoval
` (2 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
This branch is triggered when we import-from a disk of a running VM.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/API2/Qemu.pm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm
index fc20c1c4..bd2eab97 100644
--- a/src/PVE/API2/Qemu.pm
+++ b/src/PVE/API2/Qemu.pm
@@ -374,6 +374,9 @@ my $import_from_volid = sub {
my ($src_storeid) = PVE::Storage::parse_volume_id($src_volid);
+ my $qga = $src_conf->{agent}
+ && PVE::QemuServer::Agent::get_qga_key($src_conf, 'guest-fsfreeze') // 1;
+
return PVE::QemuServer::clone_disk(
$storecfg,
$source_info,
@@ -382,7 +385,7 @@ my $import_from_volid = sub {
$vollist,
undef,
undef,
- $src_conf->{agent},
+ $qga,
PVE::Storage::get_bandwidth_limit('clone', [$src_storeid, $dest_info->{storage}]),
);
};
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH guest-common v5 1/1] abstract config: print when {, un}freezing a fs
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (8 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH qemu-server v5 9/9] api: import: follow guest-fsfreeze setting Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-01-05 12:16 ` [pve-devel] [PATCH docs v5 1/1] qm: document that import-from can issue a fsfreeze Maximiliano Sandoval
2026-02-24 14:54 ` applied-series: [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Fiona Ebner
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
There are two callers of __snapshot_freeze: replication and snapshot. On
the former we already use the log function to log both freeze & thaw
instance and in this commit we add the later.
However, note that we do not have access to a log function at this stage
and we simply print.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/AbstractConfig.pm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/PVE/AbstractConfig.pm b/src/PVE/AbstractConfig.pm
index 420a10d..13accf8 100644
--- a/src/PVE/AbstractConfig.pm
+++ b/src/PVE/AbstractConfig.pm
@@ -840,6 +840,7 @@ sub snapshot_create {
$class->__snapshot_activate_storages($conf, 0);
if ($freezefs) {
+ print("freeze guest filesystem\n");
$class->__snapshot_freeze($vmid, 0);
}
@@ -860,6 +861,7 @@ sub snapshot_create {
if ($running) {
$class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "after");
if ($freezefs) {
+ print("unfreeze filesystem\n");
$class->__snapshot_freeze($vmid, 1);
}
$class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "after-unfreeze");
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* [pve-devel] [PATCH docs v5 1/1] qm: document that import-from can issue a fsfreeze
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (9 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH guest-common v5 1/1] abstract config: print when {, un}freezing a fs Maximiliano Sandoval
@ 2026-01-05 12:16 ` Maximiliano Sandoval
2026-02-24 14:54 ` applied-series: [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Fiona Ebner
11 siblings, 0 replies; 18+ messages in thread
From: Maximiliano Sandoval @ 2026-01-05 12:16 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
qm.adoc | 1 +
1 file changed, 1 insertion(+)
diff --git a/qm.adoc b/qm.adoc
index eb6ab4d..7002671 100644
--- a/qm.adoc
+++ b/qm.adoc
@@ -1520,6 +1520,7 @@ An 'fs-freeze' will be issued for any of the following operations on a VM:
* Creating a clone of a VM while it is running
* Replicating a VM while it is running
* Taking a snapshot without RAM of a running VM
+* Importing a disk image from a running guest will issue a freeze on the running guest
On Windows guests, some applications might handle consistent backups themselves
by hooking into the Windows VSS (Volume Shadow Copy Service) layer, a
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 18+ messages in thread* applied-series: [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs
2026-01-05 12:16 [pve-devel] [PATCH docs/guest-common/qemu-server v5 00/11] fix #1964: add setting to always disable freezing a guest's fs Maximiliano Sandoval
` (10 preceding siblings ...)
2026-01-05 12:16 ` [pve-devel] [PATCH docs v5 1/1] qm: document that import-from can issue a fsfreeze Maximiliano Sandoval
@ 2026-02-24 14:54 ` Fiona Ebner
11 siblings, 0 replies; 18+ messages in thread
From: Fiona Ebner @ 2026-02-24 14:54 UTC (permalink / raw)
To: pve-devel, Maximiliano Sandoval
On Mon, 05 Jan 2026 13:16:44 +0100, Maximiliano Sandoval wrote:
> ..and add more logging when issuing fsfreeze guest commands.
>
> The new setting takes precedence over freeze-fs-on-backup and deprecates the
> former.
>
> - At the moment taking a snapshot without RAM does not log whether there was a
> freeze/thaw, we add logs when issuing freezes/thaws.
>
> [...]
Applied, thanks! I squashed in some style fixes and for patch 6/9, I
had to make a change, since it originally caused the suspend to be
skipped. Would be great if you could re-check that and if you could
adapt the UI for the new setting too!
qemu-server:
[1/9] add a guest-fsfreeze qga setting
commit: fcc2dc56b43010b919f03c557cb8c0e2cd8bbed1
[2/9] api: clone_vm: follow guest-fsfreeze setting
commit: 08ae75f53050af225c12bd119cbc369d08e23efc
[3/9] fix #1964: follow guest-fsfreeze setting on check freeze needed
commit: 9d3597007835d50db2d3659520612eceddfb05a8
[4/9] agent: add a guest_fsthaw helper
commit: 90fde50a3ed15ab20ac6685c8918268b5e30f43e
[5/9] port users of guest-fsfreeze-thaw users to helper
commit: 0fb2256e45aff699d628fbc7dd978e65ae2703f3
[6/9] block job: log when a fsfreeze could not happen
commit: 09d8fa8031509beea77ac2da1339b51b6740194d
[7/9] block job: mirror: reword fsfreeze log entry
commit: 2bbaaed5fea7d2d8d8736a77e8cd35eedd258a27
[8/9] deprecate freeze-fs-on-backup qga setting
commit: d82c5e7e997510a12cdc6ed7ee0c00773184bd4b
[9/9] api: import: follow guest-fsfreeze setting
commit: 7546da2cf680035ba33122db770ba20c8f5c3c6f
guest-common:
[1/1] abstract config: print when {, un}freezing a fs
commit: da78acdd5a66a0b916306bfd373654ea03074b78
pve-docs:
[1/1] qm: document that import-from can issue a fsfreeze
commit: 862cd43b09245de212332bc3b9b03dae0de7ccb8
^ permalink raw reply [flat|nested] 18+ messages in thread