[pve-devel] [PATCH v2 qemu-server 3/3] restore: remove efidisk from config if not backed up
Stefan Reiter
s.reiter at proxmox.com
Mon Aug 2 12:15:03 CEST 2021
On 7/23/21 11:02 AM, Thomas Lamprecht wrote:
> On 08.07.21 13:46, Stefan Reiter wrote:
>> If it doesn't exist, there's no need to keep it around at all. Such a
>> backup might easily be created if an efidisk is configured with BIOS
>> set to anything but 'OVMF'.
>>
>> Unbreaks live-restore for such cases too.
>>
>
> the issue here is that we start the VM without efi disk if SeaBIOS is used,
> so it cannot be live-restored, but couldn't we just restore that separately
> so that all data the backup saved gets also restored?
>
No, other way around, the issue occurs if there exists no efidisk image in the
backup, but only in the config. We already restore efidisks before live-restore,
so SeaBIOS or not doesn't matter, it's at backup time where it makes a problem.
>> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
>> ---
>>
>> v1->v2:
>> * Actually remove efidisk from config, not just from launched version for
>> live-restore - first, this allows one to restart the VM after the live-restore
>> is done without errors, and second this way it also applies for normal
>> restores (no reason to keep an efidisk configured that doesn't exist).
>> After testing both I think I like this approach better, but feel free to keep
>> the v1 version too...
>>
>> PVE/QemuServer.pm | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
>> index 4082e69..9af0ad3 100644
>> --- a/PVE/QemuServer.pm
>> +++ b/PVE/QemuServer.pm
>> @@ -6044,7 +6044,7 @@ my $restore_allocate_devices = sub {
>> };
>>
>> sub restore_update_config_line {
>> - my ($cookie, $map, $line, $unique) = @_;
>> + my ($cookie, $map, $line, $unique, $rpcenv) = @_;
>>
>> return '' if $line =~ m/^\#qmdump\#/;
>> return '' if $line =~ m/^\#vzdump\#/;
>> @@ -6088,6 +6088,11 @@ sub restore_update_config_line {
>> $di->{file} = $map->{$virtdev};
>> $value = print_drive($di);
>> $res .= "$virtdev: $value\n";
>> + } elsif ($line =~ m/^efidisk0/) {
>> + # ignore efidisk, this can happen when backing up a SeaBIOS VM with
>> + # an efidisk configured
>> + $rpcenv->warn("efidisk in config, but not backed up - removing from config")
>> + if $rpcenv;
>> } else {
>> $res .= $line;
>> }
>> @@ -6428,6 +6433,7 @@ sub restore_proxmox_backup_archive {
>> $map,
>> $line,
>> $options->{unique},
>> + $rpcenv,
>> );
>> }
>>
>>
>
More information about the pve-devel
mailing list