[pve-devel] [PATCH v2 qemu-server 3/3] restore: remove efidisk from config if not backed up
Thomas Lamprecht
t.lamprecht at proxmox.com
Fri Jul 9 15:30:57 CEST 2021
On 09.07.21 09:11, Fabian Ebner wrote:
> Am 08.07.21 um 13:46 schrieb Stefan Reiter:
>> 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.
>>
>> 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) = @_;
>>
>
> General question, because this will pop up often with the new task warnings: should using RPCEnvironment::get() within each function that needs it be preferred over passing it around as a parameter?
Good question I asked myself recently.
FWIW, status quo is that we normally only get the RPCEnv in the API and then pass
it along.
I broke that recently once when adding the better warn for the CT start, but
explicitly made it such that it won't fail if a RPCEnv singleton isn't instantiated,
and I was not too happy with it, is was rather done out of time pressure for the
release.
In general I'd rather try to avoid using side-effects in "pure" methods, that
are only helpers or "bussiness-logic", and try to contain RPCEnv to the API/CLI if
possible. If one would need to add a new $rpcenv param to 3+ methods to chain it
through it may be a sign that there's a general design issue with the approach taken
though.
More information about the pve-devel
mailing list