mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-03 00:46:00 +00:00
extract register_qmeventd_handle to QemuServer.pm
...to be reused by live-restore. Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
parent
26731a3c15
commit
65911545dd
@ -7558,6 +7558,34 @@ sub device_bootorder {
|
||||
return $bootorder;
|
||||
}
|
||||
|
||||
sub register_qmeventd_handle {
|
||||
my ($vmid) = @_;
|
||||
|
||||
my $fh;
|
||||
my $peer = "/var/run/qmeventd.sock";
|
||||
my $count = 0;
|
||||
|
||||
for (;;) {
|
||||
$count++;
|
||||
$fh = IO::Socket::UNIX->new(Peer => $peer, Blocking => 0, Timeout => 1);
|
||||
last if $fh;
|
||||
if ($! != EINTR && $! != EAGAIN) {
|
||||
die "unable to connect to qmeventd socket (vmid: $vmid) - $!\n";
|
||||
}
|
||||
if ($count > 4) {
|
||||
die "unable to connect to qmeventd socket (vmid: $vmid) - timeout "
|
||||
. "after $count retries\n";
|
||||
}
|
||||
usleep(25000);
|
||||
}
|
||||
|
||||
# send handshake to mark VM as backing up
|
||||
print $fh to_json({vzdump => {vmid => "$vmid"}});
|
||||
|
||||
# return handle to be closed later when inhibit is no longer required
|
||||
return $fh;
|
||||
}
|
||||
|
||||
# bash completion helper
|
||||
|
||||
sub complete_backup_archives {
|
||||
|
@ -481,7 +481,7 @@ sub archive_pbs {
|
||||
my $devlist = _get_task_devlist($task);
|
||||
|
||||
$self->enforce_vm_running_for_backup($vmid);
|
||||
$self->register_qmeventd_handle($vmid);
|
||||
$self->{qmeventd_fh} = PVE::QemuServer::register_qmeventd_handle($vmid);
|
||||
|
||||
my $backup_job_uuid;
|
||||
eval {
|
||||
@ -656,7 +656,7 @@ sub archive_vma {
|
||||
my $devlist = _get_task_devlist($task);
|
||||
|
||||
$self->enforce_vm_running_for_backup($vmid);
|
||||
$self->register_qmeventd_handle($vmid);
|
||||
$self->{qmeventd_fh} = PVE::QemuServer::register_qmeventd_handle($vmid);
|
||||
|
||||
my $cpid;
|
||||
my $backup_job_uuid;
|
||||
@ -815,34 +815,6 @@ sub enforce_vm_running_for_backup {
|
||||
die $@ if $@;
|
||||
}
|
||||
|
||||
sub register_qmeventd_handle {
|
||||
my ($self, $vmid) = @_;
|
||||
|
||||
my $fh;
|
||||
my $peer = "/var/run/qmeventd.sock";
|
||||
my $count = 0;
|
||||
|
||||
for (;;) {
|
||||
$count++;
|
||||
$fh = IO::Socket::UNIX->new(Peer => $peer, Blocking => 0, Timeout => 1);
|
||||
last if $fh;
|
||||
if ($! != EINTR && $! != EAGAIN) {
|
||||
$self->log("warn", "unable to connect to qmeventd socket (vmid: $vmid) - $!\n");
|
||||
return;
|
||||
}
|
||||
if ($count > 4) {
|
||||
$self->log("warn", "unable to connect to qmeventd socket (vmid: $vmid)"
|
||||
. " - timeout after $count retries\n");
|
||||
return;
|
||||
}
|
||||
usleep(25000);
|
||||
}
|
||||
|
||||
# send handshake to mark VM as backing up
|
||||
print $fh to_json({vzdump => {vmid => "$vmid"}});
|
||||
$self->{qmeventd_fh} = $fh;
|
||||
}
|
||||
|
||||
# resume VM againe once we got in a clear state (stop mode backup of running VM)
|
||||
sub resume_vm_after_job_start {
|
||||
my ($self, $task, $vmid) = @_;
|
||||
|
Loading…
Reference in New Issue
Block a user