[pve-devel] [PATCH qemu-server v2 1/5] add create and remove reboot trigger subs
Dominik Csapak
d.csapak at proxmox.com
Thu Sep 5 13:00:41 CEST 2019
On 9/5/19 12:42 PM, Thomas Lamprecht wrote:
> On 05.09.19 12:27, Dominik Csapak wrote:
>> On 9/5/19 11:47 AM, Thomas Lamprecht wrote:
>>> On 23.08.19 10:55, Dominik Csapak wrote:
>>>> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
>>>
>>>> + open(my $fh, '>', "/run/qemu-server/$vmid.reboot")
>>>> + or die "failed to create reboot trigger file: $!\n";
>>>
>>> maybe indentation issue for or
>>
>> what do you mean?
>
> sorry, misinterpreted the tabulator in my MTA, ignore that
>
>>
>> open[..]
>> <tab>or die[..]
>>
>> is our indentation scheme?
>>
>>>
>>>> + close($fh);
>>>> +}
>>>> +
>>>> +sub remove_reboot_trigger {
>>>
>>> maybe clear_reboot_request?
>>
>> ok
>>
>>>
>>>> + my ($vmid) = @_;
>>>> + return unlink("/run/qemu-server/$vmid.reboot");
>>>
>>> FYI, unlink can also fail for other reasons that ENOENT,
>>> which you use as return value, see `man 2 unlink`
>>>
>>> Maybe do a bit more and actively check if the file is here first?
>>> (This will be always racy and thus should only be done in locked
>>> context anyway)
>>>
>>> Or explicitly check if the error was ENOENT ?
>>
>> was also copied from container, but yeah it makes to check if
>> it exists and log an error in case we cannot remove it
>
>
> I nowhere saw anything mentioning that this all is just copied over from CT.
> It makes sense that it's there too, but maybe we could add the common code
> then to guest-common? (and fix it for both)
yeah i only briefly mentioned that its inspired by pve-container in 3/5
but yes makes sense to fix it for both and put it into
PVE::GuestHelpers in guest-common
i would also put the trigger/request creation code there
>
>>
>> it would only reboot it in case we can remove the file though,
>> otherwise we risk that the user cannot shutdown the vm...
>>
> yes, all else is an error, but I would warn and say that reboot was ignored
> because of "blah".
>
> Another possible alternative, in combination with the separate vm_reboot
> method from my 3/5 review, could be to remove this early in the locked context,
> before doing the stop, and in the case of a error on removal just abort and
> do nothing - then the VM would keep running, maybe a better option?
> As a reboot always has the end goal to have a running machine again, if you
> stop it in case of error the goal is violated, if you do nothing it isn't fully
> violated (as it may still be outdated on pending changes)
but we have to somehow detect a reboot in the qm cleanup step
in which the vm is already stopped so that we can start it again.
i am not sure how this should work if we remove the file before
stopping? or am i missing something here?
>
>
>>>
>>>> +}
>>>> +
>>>> # bash completion helper
>>>> sub complete_backup_archives {
>>>>
>>>
>
>
More information about the pve-devel
mailing list