From nobody Sun Feb 8 13:48:17 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1550567175153422.77371152329704; Tue, 19 Feb 2019 01:06:15 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3DE1C315FDD; Tue, 19 Feb 2019 09:06:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EB03D17CF1; Tue, 19 Feb 2019 09:06:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 96120181A13B; Tue, 19 Feb 2019 09:06:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x1J95Hpo016245 for ; Tue, 19 Feb 2019 04:05:17 -0500 Received: by smtp.corp.redhat.com (Postfix) id A25C060BE8; Tue, 19 Feb 2019 09:05:17 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4F7CA60FE5 for ; Tue, 19 Feb 2019 09:05:17 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 76849100114; Tue, 19 Feb 2019 10:05:09 +0100 (CET) From: Jiri Denemark To: libvir-list@redhat.com Date: Tue, 19 Feb 2019 10:05:01 +0100 Message-Id: <1bdec0a7caa88641bd83810cd056b7e9c2e61ac3.1550566126.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 18/20] qemu_process: Hide qemuProcessQMPStop X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 19 Feb 2019 09:06:14 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Users qemuProcessQMP struct were always forced to call both qemuProcessQMPStop and qemuProcessQMPFree when they are done with the process. We can just call qemuProcessQMPStop from qemuProcessQMPFree and let users call qemuProcessQMPFree only. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- Notes: Version 7: - new patch src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_process.c | 92 ++++++++++++++++++------------------ src/qemu/qemu_process.h | 2 - 3 files changed, 45 insertions(+), 50 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4fd2169d49..a546d9b5a1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4397,7 +4397,6 @@ virQEMUCapsInitQMPSingle(virQEMUCapsPtr qemuCaps, if (ret < 0) virQEMUCapsLogProbeFailure(qemuCaps->binary); =20 - qemuProcessQMPStop(proc); qemuProcessQMPFree(proc); return ret; } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b5d127b7d3..ca5911bacd 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8324,6 +8324,49 @@ static qemuMonitorCallbacks callbacks =3D { }; =20 =20 +static void +qemuProcessQMPStop(qemuProcessQMPPtr proc) +{ + if (proc->mon) { + virObjectUnlock(proc->mon); + qemuMonitorClose(proc->mon); + proc->mon =3D NULL; + } + + if (proc->cmd) { + virCommandAbort(proc->cmd); + virCommandFree(proc->cmd); + proc->cmd =3D NULL; + } + + if (proc->monpath) + unlink(proc->monpath); + + virDomainObjEndAPI(&proc->vm); + + if (proc->pid !=3D 0) { + char ebuf[1024]; + + VIR_DEBUG("Killing QMP caps process %lld", (long long)proc->pid); + if (virProcessKill(proc->pid, SIGKILL) < 0 && errno !=3D ESRCH) + VIR_ERROR(_("Failed to kill process %lld: %s"), + (long long)proc->pid, + virStrerror(errno, ebuf, sizeof(ebuf))); + + proc->pid =3D 0; + } + + if (proc->pidfile) + unlink(proc->pidfile); +} + + +/** + * qemuProcessQMPFree: + * @proc: Stores process and connection state + * + * Kill QEMU process and free process data structure. + */ void qemuProcessQMPFree(qemuProcessQMPPtr proc) { @@ -8535,7 +8578,6 @@ qemuProcessQMPConnectMonitor(qemuProcessQMPPtr proc) * proc =3D qemuProcessQMPNew(binary, libDir, runUid, runGid, forceTCG); * qemuProcessQMPStart(proc); * ** Send QMP Queries to QEMU using monitor (proc->mon) ** - * qemuProcessQMPStop(proc); * qemuProcessQMPFree(proc); * * Process error output (proc->stderr) remains available in qemuProcessQMP @@ -8552,57 +8594,13 @@ qemuProcessQMPStart(qemuProcessQMPPtr proc) goto cleanup; =20 if (qemuProcessQMPLaunch(proc) < 0) - goto stop; + goto cleanup; =20 if (qemuProcessQMPConnectMonitor(proc) < 0) - goto stop; + goto cleanup; =20 ret =3D 0; =20 cleanup: return ret; - - stop: - qemuProcessQMPStop(proc); - goto cleanup; -} - - -void -qemuProcessQMPStop(qemuProcessQMPPtr proc) -{ - if (!proc) - return; - - if (proc->mon) { - virObjectUnlock(proc->mon); - qemuMonitorClose(proc->mon); - proc->mon =3D NULL; - } - - if (proc->cmd) { - virCommandAbort(proc->cmd); - virCommandFree(proc->cmd); - proc->cmd =3D NULL; - } - - if (proc->monpath) - unlink(proc->monpath); - - virDomainObjEndAPI(&proc->vm); - - if (proc->pid !=3D 0) { - char ebuf[1024]; - - VIR_DEBUG("Killing QMP caps process %lld", (long long)proc->pid); - if (virProcessKill(proc->pid, SIGKILL) < 0 && errno !=3D ESRCH) - VIR_ERROR(_("Failed to kill process %lld: %s"), - (long long)proc->pid, - virStrerror(errno, ebuf, sizeof(ebuf))); - - proc->pid =3D 0; - } - - if (proc->pidfile) - unlink(proc->pidfile); } diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 2422d1eb7c..c435a19726 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -242,6 +242,4 @@ void qemuProcessQMPFree(qemuProcessQMPPtr proc); =20 int qemuProcessQMPStart(qemuProcessQMPPtr proc); =20 -void qemuProcessQMPStop(qemuProcessQMPPtr proc); - #endif /* LIBVIRT_QEMU_PROCESS_H */ --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list