mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-07 22:59:27 +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;
|
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
|
# bash completion helper
|
||||||
|
|
||||||
sub complete_backup_archives {
|
sub complete_backup_archives {
|
||||||
|
@ -481,7 +481,7 @@ sub archive_pbs {
|
|||||||
my $devlist = _get_task_devlist($task);
|
my $devlist = _get_task_devlist($task);
|
||||||
|
|
||||||
$self->enforce_vm_running_for_backup($vmid);
|
$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;
|
my $backup_job_uuid;
|
||||||
eval {
|
eval {
|
||||||
@ -656,7 +656,7 @@ sub archive_vma {
|
|||||||
my $devlist = _get_task_devlist($task);
|
my $devlist = _get_task_devlist($task);
|
||||||
|
|
||||||
$self->enforce_vm_running_for_backup($vmid);
|
$self->enforce_vm_running_for_backup($vmid);
|
||||||
$self->register_qmeventd_handle($vmid);
|
$self->{qmeventd_fh} = PVE::QemuServer::register_qmeventd_handle($vmid);
|
||||||
|
|
||||||
my $cpid;
|
my $cpid;
|
||||||
my $backup_job_uuid;
|
my $backup_job_uuid;
|
||||||
@ -815,34 +815,6 @@ sub enforce_vm_running_for_backup {
|
|||||||
die $@ if $@;
|
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)
|
# resume VM againe once we got in a clear state (stop mode backup of running VM)
|
||||||
sub resume_vm_after_job_start {
|
sub resume_vm_after_job_start {
|
||||||
my ($self, $task, $vmid) = @_;
|
my ($self, $task, $vmid) = @_;
|
||||||
|
Loading…
Reference in New Issue
Block a user