From nobody Fri Dec 19 20:17:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1587477071; cv=none; d=zohomail.com; s=zohoarc; b=A9kbGR5IN9yb49h1XDZXsP880+mr9Bh2PjUawTuhJAl59vbg+52QekjL6bW6ul0LqVEqmy6moDRSDbZDlwCBE6+5HniUoqy3WCyUGW7byG54ktO7dD7zaTKZB5RNUXBrFtJz5hMGLNGKofZVNhTfQkazPR7JQXex/jlaPtrZwu8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477071; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mXarhvxpN9YJaHp1Blc0Yoq8Fta8dZWHoUOkEqw0hSk=; b=bngwUl9sAedAludGEw2Y80/8ndKP1e2ubwN/3/6fLm3g9SG6RP9iWxlJ/rWixqgFnO9C0P0V49TGq+56Ufv+s9IRD9fGQpVaro1L8k4QttcMQAWBmKG4Xa+M6VgHPs24hfnarB7N6tvAHxtMmlzCQIEit9O1YgamglO9hZsTfxs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1587477071117838.8917729837945; Tue, 21 Apr 2020 06:51:11 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-438-eRNFxEgGN9qoF4uwojuN0Q-1; Tue, 21 Apr 2020 09:51:07 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E88BD149E4; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BD1F85DAB0; Tue, 21 Apr 2020 13:51:00 +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 6F12C941D2; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDovm5003640 for ; Tue, 21 Apr 2020 09:50:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id B27EB76E8A; Tue, 21 Apr 2020 13:50:57 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast03.extmail.prod.ext.phx2.redhat.com [10.5.110.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AD32376E68 for ; Tue, 21 Apr 2020 13:50:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 119C71B2C981 for ; Tue, 21 Apr 2020 13:50:54 +0000 (UTC) Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-96-OQO7p0R9PgGMGaG8zeJrSA-1; Tue, 21 Apr 2020 09:50:51 -0400 Received: by mail-wr1-f49.google.com with SMTP id x18so16589975wrq.2 for ; Tue, 21 Apr 2020 06:50:50 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477069; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=mXarhvxpN9YJaHp1Blc0Yoq8Fta8dZWHoUOkEqw0hSk=; b=S+0kArMZL3wwxDwBqdnn/C3lHaxv70Izmg1vjiy3LLZGC0emXXl3JQLhJJh2uAm9uC0j+B sh9mxNDVS0kI0wGkHgZ8cGtKhodDQOoIPfAQDKDDhe/EPgzWS5A2lqwMpKDi8DakORPa5F HQKOxvRYIPPk46ieRVGQ27FNz88ei9I= X-MC-Unique: eRNFxEgGN9qoF4uwojuN0Q-1 X-MC-Unique: OQO7p0R9PgGMGaG8zeJrSA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LrmRgOXhc75UARmGVhXFZBbDeHQ14B6J85sZS9RkYvE=; b=MFDj7srE8iOR2/SHbTmNe+CRuv3MZtEeW4MVI4zfcE9DocbPbvW6os2cuNRLTdHjfH /6riYfMt3BFrnvqkXLuPQctcR9O0PklsO16bwjkhAbtdLj3pMLNz6zPnv3I+SRpohPdT 7VrKMDj4Lu7BJfOqvQ1eb1CODHrS/EE1T6HbComeNWkUCyqyryMRIXt8LFuACPMiVeWa PynWJK53ZLEHh8KDzn346RaLXl1ZCYR3v9AgZ2xD1tswiVSA2P/buJYeJzBM9EirpKG9 8qxhoxYg+64X8aXKnVmuJbdiB2AQI2w7V/qy01aTSFWvPJIgdYFO4y+swe6KeIh1Vq3j g+/g== X-Gm-Message-State: AGi0PuZE5G+jv1g6p+bFUlW8f1+NuJ5A5rd2w/VmscIQejyQvaDzzfWj 51gTLHqr/rFeMewsyU6OR7Qe93gI4us= X-Google-Smtp-Source: APiQypLoCllMhJx4CNWc5EPq0rbQ4kEofxVgtiIj+VwlwDCiza9WNrfoAqYuIWrIkCKg/QbCKUUMvg== X-Received: by 2002:a5d:5391:: with SMTP id d17mr23431226wrv.215.1587477049250; Tue, 21 Apr 2020 06:50:49 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 34/40] hypervisor: convert virHostdevManager to GObject Date: Tue, 21 Apr 2020 15:49:15 +0200 Message-Id: <20200421134921.3717019-35-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDovm5003640 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca 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: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/hypervisor/virhostdev.c | 49 +++++++++++++++++++++++++++++-------- src/hypervisor/virhostdev.h | 13 +++++++--- src/libxl/libxl_driver.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/qemu/qemu_driver.c | 2 +- 5 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c index 9017cc3be8..b484603f5d 100644 --- a/src/hypervisor/virhostdev.c +++ b/src/hypervisor/virhostdev.c @@ -44,8 +44,23 @@ VIR_LOG_INIT("util.hostdev"); =20 static virHostdevManagerPtr manager; /* global hostdev manager, never free= d */ =20 -static virClassPtr virHostdevManagerClass; -static void virHostdevManagerDispose(void *obj); +G_DEFINE_TYPE(virHostdevManager, vir_hostdev_manager, G_TYPE_OBJECT); + +static void virHostdevManagerDispose(GObject *obj); +static void virHostdevManagerFinalize(GObject *obj); + +static void vir_hostdev_manager_init(virHostdevManager *mgr G_GNUC_UNUSED) +{ +} + +static void vir_hostdev_manager_class_init(virHostdevManagerClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D virHostdevManagerDispose; + obj->finalize =3D virHostdevManagerFinalize; +} + static virHostdevManagerPtr virHostdevManagerNew(void); =20 struct virHostdevIsPCINodeDeviceUsedData { @@ -112,9 +127,6 @@ static int virHostdevIsPCINodeDeviceUsed(virPCIDeviceAd= dressPtr devAddr, void *o =20 static int virHostdevManagerOnceInit(void) { - if (!VIR_CLASS_NEW(virHostdevManager, virClassForObject())) - return -1; - if (!(manager =3D virHostdevManagerNew())) return -1; =20 @@ -124,18 +136,36 @@ static int virHostdevManagerOnceInit(void) VIR_ONCE_GLOBAL_INIT(virHostdevManager); =20 static void -virHostdevManagerDispose(void *obj) +virHostdevManagerDispose(GObject *obj) { - virHostdevManagerPtr hostdevMgr =3D obj; + virHostdevManagerPtr hostdevMgr =3D VIR_HOSTDEV_MANAGER(obj); =20 virObjectUnref(hostdevMgr->activePCIHostdevs); + hostdevMgr->activePCIHostdevs =3D NULL; virObjectUnref(hostdevMgr->inactivePCIHostdevs); + hostdevMgr->inactivePCIHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeUSBHostdevs); + hostdevMgr->activeUSBHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeSCSIHostdevs); + hostdevMgr->activeSCSIHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeSCSIVHostHostdevs); + hostdevMgr->activeSCSIVHostHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeMediatedHostdevs); + hostdevMgr->activeMediatedHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeNVMeHostdevs); + hostdevMgr->activeNVMeHostdevs =3D NULL; + + G_OBJECT_CLASS(vir_hostdev_manager_parent_class)->dispose(obj); +} + +static void +virHostdevManagerFinalize(GObject *obj) +{ + virHostdevManagerPtr hostdevMgr =3D VIR_HOSTDEV_MANAGER(obj); + VIR_FREE(hostdevMgr->stateDir); + + G_OBJECT_CLASS(vir_hostdev_manager_parent_class)->finalize(obj); } =20 static virHostdevManagerPtr @@ -144,8 +174,7 @@ virHostdevManagerNew(void) g_autoptr(virHostdevManager) hostdevMgr =3D NULL; bool privileged =3D geteuid() =3D=3D 0; =20 - if (!(hostdevMgr =3D virObjectNew(virHostdevManagerClass))) - return NULL; + hostdevMgr =3D VIR_HOSTDEV_MANAGER(g_object_new(VIR_TYPE_HOSTDEV_MANAG= ER, NULL)); =20 if (!(hostdevMgr->activePCIHostdevs =3D virPCIDeviceListNew())) return NULL; @@ -206,7 +235,7 @@ virHostdevManagerGetDefault(void) if (virHostdevManagerInitialize() < 0) return NULL; =20 - return virObjectRef(manager); + return g_object_ref(manager); } =20 /** diff --git a/src/hypervisor/virhostdev.h b/src/hypervisor/virhostdev.h index 811bda40ed..be5345992c 100644 --- a/src/hypervisor/virhostdev.h +++ b/src/hypervisor/virhostdev.h @@ -30,6 +30,7 @@ #include "conf/domain_conf.h" #include "virmdev.h" #include "virnvme.h" +#include =20 typedef enum { VIR_HOSTDEV_STRICT_ACS_CHECK =3D (1 << 0), /* strict acs check */ @@ -41,10 +42,8 @@ typedef enum { } virHostdevFlag; =20 =20 -typedef struct _virHostdevManager virHostdevManager; -typedef virHostdevManager *virHostdevManagerPtr; struct _virHostdevManager { - virObject parent; + GObject parent; =20 char *stateDir; =20 @@ -59,7 +58,13 @@ struct _virHostdevManager { virNVMeDeviceListPtr activeNVMeHostdevs; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHostdevManager, virObjectUnref); +#define VIR_TYPE_HOSTDEV_MANAGER vir_hostdev_manager_get_type() +G_DECLARE_FINAL_TYPE(virHostdevManager, + vir_hostdev_manager, + VIR, + HOSTDEV_MANAGER, + GObject); +typedef virHostdevManager *virHostdevManagerPtr; =20 =20 virHostdevManagerPtr virHostdevManagerGetDefault(void); diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index affae0e86e..dbcbbdc96d 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -505,7 +505,7 @@ libxlStateCleanup(void) if (!libxl_driver) return -1; =20 - virObjectUnref(libxl_driver->hostdevMgr); + g_clear_object(&libxl_driver->hostdevMgr); g_clear_object(&libxl_driver->xmlopt); virObjectUnref(libxl_driver->domains); virPortAllocatorRangeFree(libxl_driver->reservedGraphicsPorts); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 288d394989..cbd7fbfcb0 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1603,7 +1603,7 @@ static int lxcStateCleanup(void) =20 virSysinfoDefFree(lxc_driver->hostsysinfo); =20 - virObjectUnref(lxc_driver->hostdevMgr); + g_clear_object(&lxc_driver->hostdevMgr); g_clear_object(&lxc_driver->caps); virObjectUnref(lxc_driver->securityManager); g_clear_object(&lxc_driver->xmlopt); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c05803f08a..346edb47d6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1113,7 +1113,7 @@ qemuStateCleanup(void) virPortAllocatorRangeFree(qemu_driver->webSocketPorts); virPortAllocatorRangeFree(qemu_driver->remotePorts); virHashFree(qemu_driver->sharedDevices); - virObjectUnref(qemu_driver->hostdevMgr); + g_clear_object(&qemu_driver->hostdevMgr); virObjectUnref(qemu_driver->securityManager); virObjectUnref(qemu_driver->domainEventState); virObjectUnref(qemu_driver->qemuCapsCache); --=20 2.25.3