From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id CA0D71FF183 for ; Wed, 3 Dec 2025 14:30:38 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5BCCDA090; Wed, 3 Dec 2025 14:30:28 +0100 (CET) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Wed, 3 Dec 2025 14:26:37 +0100 Message-ID: <20251203132949.109685-12-f.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251203132949.109685-1-f.ebner@proxmox.com> References: <20251203132949.109685-1-f.ebner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1764768548989 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.017 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH qemu-server 11/18] block job: switch qemu_handle_concluded_blockjob() to use QMP peer X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Signed-off-by: Fiona Ebner --- src/PVE/QemuServer/BlockJob.pm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/PVE/QemuServer/BlockJob.pm b/src/PVE/QemuServer/BlockJob.pm index dccd0ab6..33ff66bc 100644 --- a/src/PVE/QemuServer/BlockJob.pm +++ b/src/PVE/QemuServer/BlockJob.pm @@ -13,7 +13,7 @@ use PVE::Storage; use PVE::QemuServer::Agent qw(qga_check_running); use PVE::QemuServer::Blockdev; use PVE::QemuServer::Drive qw(checked_volume_format); -use PVE::QemuServer::Monitor qw(mon_cmd); +use PVE::QemuServer::Monitor qw(mon_cmd qmp_cmd vm_qmp_peer); use PVE::QemuServer::RunState; # If the job was started with auto-dismiss=false, it's necessary to dismiss it manually. Using this @@ -23,9 +23,9 @@ use PVE::QemuServer::RunState; # $job is the information about the job recorded on the PVE-side. # A block node $job->{'detach-node-name'} will be detached if present. sub qemu_handle_concluded_blockjob { - my ($vmid, $job_id, $qmp_info, $job) = @_; + my ($qmp_peer, $job_id, $qmp_info, $job) = @_; - eval { mon_cmd($vmid, 'job-dismiss', id => $job_id); }; + eval { qmp_cmd($qmp_peer, 'job-dismiss', id => $job_id); }; log_warn("$job_id: failed to dismiss job - $@") if $@; # If there was an error or if the job was cancelled, always detach the target. This is correct @@ -34,7 +34,7 @@ sub qemu_handle_concluded_blockjob { $job->{'detach-node-name'} = $job->{'target-node-name'} if $qmp_info->{error} || $job->{cancel}; if (my $node_name = $job->{'detach-node-name'}) { - eval { PVE::QemuServer::Blockdev::detach(vm_qmp_peer($vmid), $node_name); }; + eval { PVE::QemuServer::Blockdev::detach($qmp_peer, $node_name); }; log_warn($@) if $@; } @@ -61,7 +61,7 @@ sub qemu_blockjobs_cancel { foreach my $job (keys %$jobs) { my $info = $running_jobs->{$job}; eval { - qemu_handle_concluded_blockjob($vmid, $job, $info, $jobs->{$job}) + qemu_handle_concluded_blockjob(vm_qmp_peer($vmid), $job, $info, $jobs->{$job}) if $info && $info->{status} eq 'concluded'; }; log_warn($@) if $@; # only warn and proceed with canceling other jobs @@ -120,8 +120,11 @@ sub qemu_drive_mirror_monitor { die "$job_id: '$op' has been cancelled\n" if !defined($job); - qemu_handle_concluded_blockjob($vmid, $job_id, $job, $jobs->{$job_id}) - if $job && $job->{status} eq 'concluded'; + if ($job && $job->{status} eq 'concluded') { + qemu_handle_concluded_blockjob( + vm_qmp_peer($vmid), $job_id, $job, $jobs->{$job_id}, + ); + } my $busy = $job->{busy}; my $ready = $job->{ready}; @@ -346,7 +349,7 @@ sub qemu_drive_mirror_switch_to_active_mode { my $info = $running_jobs->{$job}; if ($info->{status} eq 'concluded') { - qemu_handle_concluded_blockjob($vmid, $job, $info, $jobs->{$job}); + qemu_handle_concluded_blockjob(vm_qmp_peer($vmid), $job, $info, $jobs->{$job}); # The 'concluded' state should occur here if and only if the job failed, so the # 'die' below should be unreachable, but play it safe. die "$job: expected job to have failed, but no error was set\n"; -- 2.47.3 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel