From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371108; cv=none; d=zohomail.com; s=zohoarc; b=SkXmpU8jkMh38fVp0OsGtddMjt7ZRukhZE/jgx+VhpS3p0hH69Dor749fXSvwA7Wej6fwmrUDI7tLYg2O2uDlzXimNYkAwbWK5o3W37dnb5Yo0B+Lyj4LhSHGWgvsTgHt7CLKfpl0M2r9l6JVDgq1V99AGdWxweLt2uxwgQpHYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371108; 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=N2wsnXodr9VyzIuHY+Opyq/vQmmH/6fzlOTuYiUis88=; b=XR3Pe6Lhzvaf8+KjylHBuktgDrZnMnuw0hIYTh4C8ZHyhqrhVuOh2gWtqDxQFMNrJUaaakIW53NAEEMoEOc8akWuqK/ABx135unnEH5t+QZRrYb7Ire7XPfKIbJ0u96tZoIiiCzB5Nt1DNbEzB9vK92icn+UZmvaB84mxneYNBg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371108337610.9434518721395; Wed, 13 May 2020 04:58:28 -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-191-xH4uz-_tNhCCeqgIWufFQg-1; Wed, 13 May 2020 07:58:24 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D7A5C83DC0F; Wed, 13 May 2020 11:58:16 +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 BA9B55C1D6; Wed, 13 May 2020 11:58:16 +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 8D70F4CAB0; Wed, 13 May 2020 11:58:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwDJK015957 for ; Wed, 13 May 2020 07:58:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id CB2F72166B27; Wed, 13 May 2020 11:58:13 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C388C2166BA0 for ; Wed, 13 May 2020 11:58:11 +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-mx02.redhat.com (Postfix) with ESMTPS id CDD28801009 for ; Wed, 13 May 2020 11:58:11 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-434-_kKvuuIqP8afhVg6W_NvQg-1; Wed, 13 May 2020 07:58:08 -0400 Received: by mail-wr1-f65.google.com with SMTP id i15so20495870wrx.10 for ; Wed, 13 May 2020 04:58:08 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.57.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371107; 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=N2wsnXodr9VyzIuHY+Opyq/vQmmH/6fzlOTuYiUis88=; b=W/6Y+zCIAwLLTvYeizIvn+YDmOhhiYFj3Tm3x/Y+ZnYLfhgFvk1EgtlHIdZXqSmnrpf5+3 z8gdiMpBnlcRluA4tNYcL5qcP1DC2SC+Zr2PD5SMEyb8PN1/QL8jH1FxhjCJxgk2uSxBRr Q4u7sCzLdEounSReLa+AE57i0fcNOEQ= X-MC-Unique: xH4uz-_tNhCCeqgIWufFQg-1 X-MC-Unique: _kKvuuIqP8afhVg6W_NvQg-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=N2wsnXodr9VyzIuHY+Opyq/vQmmH/6fzlOTuYiUis88=; b=SYSmijeO75nTI5Icl0MnG8zBwNS4+Re72lCilvlfcYwJ0mg0EwCw+Edm3Kv/a7412j PVhAY5kNILcVtfU2wymxH0pojw6j2ZN0BeMPqA7J6j10psl09N7UjPA+35QKBmSgioOi 0QMxAL+RJIW4uVc6bQxuu++3/zIQeAZqP5zj7KcsaiAde66bZTjiNxZt0OIvQqiOqDg8 IHU+SfFpP64bJHmuMH9KMbnepdvffLar1fFIg7ebtXu/ED+eR6CG21O7xzNDdDnl0788 g0pl4r92jOU/MzqyrFq8mCX6Xfj5TXN/XX07Pn0W6E4ibIBMkiEnZQHUSeIU0UJe4SEB bl5g== X-Gm-Message-State: AGi0Pua8EMV8C6F7VrpTwZ5KKkPXGpR5XHxY6FpMezsEFNqMlA8uA1ly qQANmsN6o8QOf2tARf+NdRXwhICa X-Google-Smtp-Source: APiQypKLGzOuzYokwCZTv2m5FYi68GT6W8Jjt2rylVUXKbnv/MIqlg61z3HSfmIMfH/mjOY2fI5zZg== X-Received: by 2002:a05:6000:1ca:: with SMTP id t10mr30459720wrx.230.1589371081683; Wed, 13 May 2020 04:58:01 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 01/40] util: virresctrl: convert classes to GObject Date: Wed, 13 May 2020 13:56:45 +0200 Message-Id: <20200513115724.157687-2-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.16 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" This patch changes virResctrlInfo, virResctrlAlloc and virResctrlMonitor from virObject to GObject. Signed-off-by: Rafael Fonseca --- src/conf/capabilities.c | 2 +- src/conf/domain_conf.c | 19 ++--- src/libvirt_private.syms | 3 + src/util/virresctrl.c | 155 +++++++++++++++++++-------------------- src/util/virresctrl.h | 15 ++-- tests/virresctrltest.c | 3 +- 6 files changed, 98 insertions(+), 99 deletions(-) diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index 99b69aebb5..0741d76731 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -266,7 +266,7 @@ virCapsDispose(void *object) VIR_FREE(caps->host.netprefix); VIR_FREE(caps->host.pagesSize); virCPUDefFree(caps->host.cpu); - virObjectUnref(caps->host.resctrl); + g_clear_object(&caps->host.resctrl); } =20 /** diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c201fc901d..301b4b0d84 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3348,7 +3348,7 @@ virDomainResctrlMonDefFree(virDomainResctrlMonDefPtr = domresmon) return; =20 virBitmapFree(domresmon->vcpus); - virObjectUnref(domresmon->instance); + g_clear_object(&domresmon->instance); VIR_FREE(domresmon); } =20 @@ -3364,7 +3364,7 @@ virDomainResctrlDefFree(virDomainResctrlDefPtr resctr= l) for (i =3D 0; i < resctrl->nmonitors; i++) virDomainResctrlMonDefFree(resctrl->monitors[i]); =20 - virObjectUnref(resctrl->alloc); + g_clear_object(&resctrl->alloc); virBitmapFree(resctrl->vcpus); VIR_FREE(resctrl->monitors); VIR_FREE(resctrl); @@ -20520,11 +20520,6 @@ virDomainResctrlMonDefParse(virDomainDefPtr def, domresmon->tag =3D tag; =20 domresmon->instance =3D virResctrlMonitorNew(); - if (!domresmon->instance) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not create monitor")); - goto cleanup; - } =20 if (tag =3D=3D VIR_RESCTRL_MONITOR_TYPE_CACHE) { tmp =3D virXMLPropString(nodes[i], "level"); @@ -20634,7 +20629,7 @@ virDomainResctrlNew(xmlNodePtr node, goto cleanup; } =20 - resctrl->alloc =3D virObjectRef(alloc); + resctrl->alloc =3D g_object_ref(alloc); =20 ret =3D g_steal_pointer(&resctrl); cleanup: @@ -20681,8 +20676,7 @@ virDomainCachetuneDefParse(virDomainDefPtr def, return -1; } =20 - if (!(alloc =3D virResctrlAllocNew())) - return -1; + alloc =3D virResctrlAllocNew(); =20 for (i =3D 0; i < n; i++) { if (virDomainCachetuneDefParseCache(ctxt, nodes[i], alloc) < 0) @@ -20867,10 +20861,9 @@ virDomainMemorytuneDefParse(virDomainDefPtr def, return -1; =20 if (resctrl) { - alloc =3D virObjectRef(resctrl->alloc); + alloc =3D g_object_ref(resctrl->alloc); } else { - if (!(alloc =3D virResctrlAllocNew())) - return -1; + alloc =3D virResctrlAllocNew(); } =20 /* First, parse element if any element exists= */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 935ef7303b..2f3d58dd84 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2926,6 +2926,9 @@ virRandomInt; =20 =20 # util/virresctrl.h +vir_resctrl_alloc_get_type; +vir_resctrl_info_get_type; +vir_resctrl_monitor_get_type; virCacheKernelTypeFromString; virCacheKernelTypeToString; virCacheTypeFromString; diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c index e17f6bd1bd..923ec474fc 100644 --- a/src/util/virresctrl.c +++ b/src/util/virresctrl.c @@ -112,12 +112,6 @@ typedef struct _virResctrlAllocMemBW virResctrlAllocMe= mBW; typedef virResctrlAllocMemBW *virResctrlAllocMemBWPtr; =20 =20 -/* Class definitions and initializations */ -static virClassPtr virResctrlInfoClass; -static virClassPtr virResctrlAllocClass; -static virClassPtr virResctrlMonitorClass; - - /* virResctrlInfo */ struct _virResctrlInfoPerType { /* Kernel-provided information */ @@ -182,7 +176,7 @@ struct _virResctrlInfoMongrp { }; =20 struct _virResctrlInfo { - virObject parent; + GObject parent; =20 virResctrlInfoPerLevelPtr *levels; size_t nlevels; @@ -192,14 +186,17 @@ struct _virResctrlInfo { virResctrlInfoMongrpPtr monitor_info; }; =20 +/* Class definitions and initializations */ +G_DEFINE_TYPE(virResctrlInfo, vir_resctrl_info, G_TYPE_OBJECT); + =20 static void -virResctrlInfoDispose(void *obj) +virResctrlInfoFinalize(GObject *obj) { size_t i =3D 0; size_t j =3D 0; =20 - virResctrlInfoPtr resctrl =3D obj; + virResctrlInfoPtr resctrl =3D VIR_RESCTRL_INFO(obj); =20 for (i =3D 0; i < resctrl->nlevels; i++) { virResctrlInfoPerLevelPtr level =3D resctrl->levels[i]; @@ -221,6 +218,8 @@ virResctrlInfoDispose(void *obj) VIR_FREE(resctrl->membw_info); VIR_FREE(resctrl->levels); VIR_FREE(resctrl->monitor_info); + + G_OBJECT_CLASS(vir_resctrl_info_parent_class)->finalize(obj); } =20 =20 @@ -334,7 +333,7 @@ struct _virResctrlAllocMemBW { }; =20 struct _virResctrlAlloc { - virObject parent; + GObject parent; =20 virResctrlAllocPerLevelPtr *levels; size_t nlevels; @@ -355,7 +354,7 @@ struct _virResctrlAlloc { * memory bandwidth. */ struct _virResctrlMonitor { - virObject parent; + GObject parent; =20 /* Each virResctrlMonitor is associated with one specific allocation, * either the root directory allocation under /sys/fs/resctrl or a @@ -372,15 +371,20 @@ struct _virResctrlMonitor { char *path; }; =20 +/* Class definitions and initializations */ +G_DEFINE_TYPE(virResctrlAlloc, vir_resctrl_alloc, G_TYPE_OBJECT); +G_DEFINE_TYPE(virResctrlMonitor, vir_resctrl_monitor, G_TYPE_OBJECT); + + =20 static void -virResctrlAllocDispose(void *obj) +virResctrlAllocFinalize(GObject *obj) { size_t i =3D 0; size_t j =3D 0; size_t k =3D 0; =20 - virResctrlAllocPtr alloc =3D obj; + virResctrlAllocPtr alloc =3D VIR_RESCTRL_ALLOC(obj); =20 for (i =3D 0; i < alloc->nlevels; i++) { virResctrlAllocPerLevelPtr level =3D alloc->levels[i]; @@ -419,38 +423,62 @@ virResctrlAllocDispose(void *obj) VIR_FREE(alloc->id); VIR_FREE(alloc->path); VIR_FREE(alloc->levels); + + G_OBJECT_CLASS(vir_resctrl_alloc_parent_class)->finalize(obj); } =20 =20 static void -virResctrlMonitorDispose(void *obj) +virResctrlMonitorFinalize(GObject *obj) { - virResctrlMonitorPtr monitor =3D obj; + virResctrlMonitorPtr monitor =3D VIR_RESCTRL_MONITOR(obj); + + g_clear_object(&monitor->alloc); =20 - virObjectUnref(monitor->alloc); VIR_FREE(monitor->id); VIR_FREE(monitor->path); + + G_OBJECT_CLASS(vir_resctrl_monitor_parent_class)->finalize(obj); } =20 +static void +vir_resctrl_info_init(virResctrlInfo *resctrlinfo G_GNUC_UNUSED) +{ +} =20 -/* Global initialization for classes */ -static int -virResctrlOnceInit(void) +static void +vir_resctrl_info_class_init(virResctrlInfoClass *klass) { - if (!VIR_CLASS_NEW(virResctrlInfo, virClassForObject())) - return -1; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!VIR_CLASS_NEW(virResctrlAlloc, virClassForObject())) - return -1; + obj->finalize =3D virResctrlInfoFinalize; +} =20 - if (!VIR_CLASS_NEW(virResctrlMonitor, virClassForObject())) - return -1; +static void +vir_resctrl_alloc_init(virResctrlAlloc *resctrlalloc G_GNUC_UNUSED) +{ +} =20 - return 0; +static void +vir_resctrl_alloc_class_init(virResctrlAllocClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virResctrlAllocFinalize; +} + +static void +vir_resctrl_monitor_init(virResctrlMonitor *resctrlmon G_GNUC_UNUSED) +{ } =20 -VIR_ONCE_GLOBAL_INIT(virResctrl); +static void +vir_resctrl_monitor_class_init(virResctrlMonitorClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 + obj->finalize =3D virResctrlMonitorFinalize; +} =20 /* Common functions */ static int @@ -793,21 +821,13 @@ virResctrlGetInfo(virResctrlInfoPtr resctrl) virResctrlInfoPtr virResctrlInfoNew(void) { - virResctrlInfoPtr ret =3D NULL; - - if (virResctrlInitialize() < 0) - return NULL; - - ret =3D virObjectNew(virResctrlInfoClass); - if (!ret) - return NULL; + g_autoptr(virResctrlInfo) ret =3D VIR_RESCTRL_INFO(g_object_new(VIR_TY= PE_RESCTRL_INFO, NULL)); =20 if (virResctrlGetInfo(ret) < 0) { - virObjectUnref(ret); return NULL; } =20 - return ret; + return g_steal_pointer(&ret); } =20 =20 @@ -1034,10 +1054,7 @@ virResctrlInfoGetMonitorPrefix(virResctrlInfoPtr res= ctrl, virResctrlAllocPtr virResctrlAllocNew(void) { - if (virResctrlInitialize() < 0) - return NULL; - - return virObjectNew(virResctrlAllocClass); + return VIR_RESCTRL_ALLOC(g_object_new(VIR_TYPE_RESCTRL_ALLOC, NULL)); } =20 =20 @@ -1769,8 +1786,7 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl, =20 error: VIR_FREE(schemata); - virObjectUnref(*alloc); - *alloc =3D NULL; + g_clear_object(alloc); return -1; } =20 @@ -1779,9 +1795,7 @@ static virResctrlAllocPtr virResctrlAllocGetDefault(virResctrlInfoPtr resctrl) { virResctrlAllocPtr ret =3D NULL; - int rv =3D virResctrlAllocGetGroup(resctrl, ".", &ret); - - if (rv =3D=3D -2) { + if (virResctrlAllocGetGroup(resctrl, ".", &ret) =3D=3D -2) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not read schemata file for the default gro= up")); } @@ -1836,9 +1850,6 @@ virResctrlAllocNewFromInfo(virResctrlInfoPtr info) virResctrlAllocPtr ret =3D virResctrlAllocNew(); virBitmapPtr mask =3D NULL; =20 - if (!ret) - return NULL; - for (i =3D 0; i < info->nlevels; i++) { virResctrlInfoPerLevelPtr i_level =3D info->levels[i]; =20 @@ -1884,8 +1895,7 @@ virResctrlAllocNewFromInfo(virResctrlInfoPtr info) virBitmapFree(mask); return ret; error: - virObjectUnref(ret); - ret =3D NULL; + g_clear_object(&ret); goto cleanup; } =20 @@ -1907,7 +1917,7 @@ virResctrlAllocPtr virResctrlAllocGetUnused(virResctrlInfoPtr resctrl) { virResctrlAllocPtr ret =3D NULL; - virResctrlAllocPtr alloc =3D NULL; + g_autoptr(virResctrlAlloc) alloc =3D NULL; struct dirent *ent =3D NULL; DIR *dirp =3D NULL; int rv =3D -1; @@ -1927,7 +1937,7 @@ virResctrlAllocGetUnused(virResctrlInfoPtr resctrl) goto error; =20 virResctrlAllocSubtract(ret, alloc); - virObjectUnref(alloc); + g_clear_object(&alloc); =20 if (virDirOpen(&dirp, SYSFS_RESCTRL_PATH) < 0) goto error; @@ -1948,20 +1958,17 @@ virResctrlAllocGetUnused(virResctrlInfoPtr resctrl) } =20 virResctrlAllocSubtract(ret, alloc); - virObjectUnref(alloc); - alloc =3D NULL; + g_clear_object(&alloc); } if (rv < 0) goto error; =20 cleanup: - virObjectUnref(alloc); VIR_DIR_CLOSE(dirp); return ret; =20 error: - virObjectUnref(ret); - ret =3D NULL; + g_clear_object(&ret); goto cleanup; } =20 @@ -2229,10 +2236,9 @@ static int virResctrlAllocAssign(virResctrlInfoPtr resctrl, virResctrlAllocPtr alloc) { - int ret =3D -1; unsigned int level =3D 0; - virResctrlAllocPtr alloc_free =3D NULL; - virResctrlAllocPtr alloc_default =3D NULL; + g_autoptr(virResctrlAlloc) alloc_free =3D NULL; + g_autoptr(virResctrlAlloc) alloc_default =3D NULL; =20 alloc_free =3D virResctrlAllocGetUnused(resctrl); if (!alloc_free) @@ -2240,16 +2246,16 @@ virResctrlAllocAssign(virResctrlInfoPtr resctrl, =20 alloc_default =3D virResctrlAllocGetDefault(resctrl); if (!alloc_default) - goto cleanup; + return -1; =20 if (virResctrlAllocMemoryBandwidth(resctrl, alloc) < 0) - goto cleanup; + return -1; =20 if (virResctrlAllocCopyMasks(alloc, alloc_default) < 0) - goto cleanup; + return -1; =20 if (virResctrlAllocCopyMemBW(alloc, alloc_default) < 0) - goto cleanup; + return -1; =20 for (level =3D 0; level < alloc->nlevels; level++) { virResctrlAllocPerLevelPtr a_level =3D alloc->levels[level]; @@ -2266,7 +2272,7 @@ virResctrlAllocAssign(virResctrlInfoPtr resctrl, virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Cache level %d does not support tuning"), level); - goto cleanup; + return -1; } =20 for (type =3D 0; type < VIR_CACHE_TYPE_LAST; type++) { @@ -2282,7 +2288,7 @@ virResctrlAllocAssign(virResctrlInfoPtr resctrl, _("Cache level %d does not support tuning f= or " "scope type '%s'"), level, virCacheTypeToString(type)); - goto cleanup; + return -1; } =20 for (cache =3D 0; cache < a_type->nsizes; cache++) { @@ -2290,16 +2296,12 @@ virResctrlAllocAssign(virResctrlInfoPtr resctrl, virResctrlInfoPerTypePtr i_type =3D i_level->types[type]; =20 if (virResctrlAllocFindUnused(alloc, i_type, f_type, level= , type, cache) < 0) - goto cleanup; + return -1; } } } =20 - ret =3D 0; - cleanup: - virObjectUnref(alloc_free); - virObjectUnref(alloc_default); - return ret; + return 0; } =20 =20 @@ -2502,10 +2504,7 @@ virResctrlAllocRemove(virResctrlAllocPtr alloc) virResctrlMonitorPtr virResctrlMonitorNew(void) { - if (virResctrlInitialize() < 0) - return NULL; - - return virObjectNew(virResctrlMonitorClass); + return VIR_RESCTRL_MONITOR(g_object_new(VIR_TYPE_RESCTRL_MONITOR, NULL= )); } =20 =20 @@ -2619,7 +2618,7 @@ void virResctrlMonitorSetAlloc(virResctrlMonitorPtr monitor, virResctrlAllocPtr alloc) { - monitor->alloc =3D virObjectRef(alloc); + monitor->alloc =3D g_object_ref(alloc); } =20 =20 diff --git a/src/util/virresctrl.h b/src/util/virresctrl.h index dcd9ca2bb2..6724d904d1 100644 --- a/src/util/virresctrl.h +++ b/src/util/virresctrl.h @@ -19,8 +19,8 @@ #pragma once =20 #include "internal.h" +#include =20 -#include "virobject.h" #include "virbitmap.h" #include "virenum.h" =20 @@ -93,7 +93,9 @@ struct _virResctrlInfoMon { unsigned int cache_level; }; =20 -typedef struct _virResctrlInfo virResctrlInfo; +#define VIR_TYPE_RESCTRL_INFO vir_resctrl_info_get_type() +G_DECLARE_FINAL_TYPE(virResctrlInfo, vir_resctrl_info, VIR, RESCTRL_INFO, = GObject); + typedef virResctrlInfo *virResctrlInfoPtr; =20 virResctrlInfoPtr @@ -111,10 +113,11 @@ virResctrlInfoGetMemoryBandwidth(virResctrlInfoPtr re= sctrl, unsigned int level, virResctrlInfoMemBWPerNodePtr control); /* Alloc-related things */ -typedef struct _virResctrlAlloc virResctrlAlloc; +#define VIR_TYPE_RESCTRL_ALLOC vir_resctrl_alloc_get_type() +G_DECLARE_FINAL_TYPE(virResctrlAlloc, vir_resctrl_alloc, VIR, RESCTRL_ALLO= C, GObject); + typedef virResctrlAlloc *virResctrlAllocPtr; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virResctrlAlloc, virObjectUnref); =20 =20 typedef int virResctrlAllocForeachCacheCallback(unsigned int level, @@ -190,7 +193,9 @@ virResctrlInfoGetMonitorPrefix(virResctrlInfoPtr resctr= l, =20 /* Monitor-related things */ =20 -typedef struct _virResctrlMonitor virResctrlMonitor; +#define VIR_TYPE_RESCTRL_MONITOR vir_resctrl_monitor_get_type() +G_DECLARE_FINAL_TYPE(virResctrlMonitor, vir_resctrl_monitor, VIR, RESCTRL_= MONITOR, GObject); + typedef virResctrlMonitor *virResctrlMonitorPtr; =20 typedef struct _virResctrlMonitorStats virResctrlMonitorStats; diff --git a/tests/virresctrltest.c b/tests/virresctrltest.c index bb6d0fe48e..91baef506d 100644 --- a/tests/virresctrltest.c +++ b/tests/virresctrltest.c @@ -21,7 +21,7 @@ test_virResctrlGetUnused(const void *opaque) char *system_dir =3D NULL; char *resctrl_dir =3D NULL; int ret =3D -1; - virResctrlAllocPtr alloc =3D NULL; + g_autoptr(virResctrlAlloc) alloc =3D NULL; char *schemata_str =3D NULL; char *schemata_file; virCapsPtr caps =3D NULL; @@ -66,7 +66,6 @@ test_virResctrlGetUnused(const void *opaque) ret =3D 0; cleanup: virObjectUnref(caps); - virObjectUnref(alloc); VIR_FREE(system_dir); VIR_FREE(resctrl_dir); VIR_FREE(schemata_str); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371106; cv=none; d=zohomail.com; s=zohoarc; b=L1RNkEJ5g76ycznL6UXCDCCXOkQPxi6A51r3/KXA8VIkrtCXmmkJuFd0aX20daUGpYVpweGVyQS4ZCWvMAyvtgTnKML02xKQiOX2EhVRcLy30aLvnFbeHWgTunkHM2KDtU07fbNhfvDmP22KWDqg4DErws6mUneIKrO7H0vk/ME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371106; 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=6wzkDyQPHeiwUFLgILiIedqQCb+JsK1anrXK9AA0ioo=; b=Z5JEReAPOf3efz+I4MM29mpXrfppj3I0Fy5ckxWA2uFD2qDzn5KzzR8ByCQrm7fYco6I1I5ZZoxrxKfN17o4DR0ZdEEqvrjGH16yO64/qkvLfZF3n8ZVvL5Kl8ol87KReo3fCzbTbmLpPGlQxGWGPnBlYZrRVhxwYi01IIpyGmA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371106463763.735348127078; Wed, 13 May 2020 04:58:26 -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-325-SAs7vrCVMzGXxFZ8demFSg-1; Wed, 13 May 2020 07:58:22 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4C0951899548; Wed, 13 May 2020 11:58:14 +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 288237D95B; Wed, 13 May 2020 11:58:14 +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 EB4AE1809543; Wed, 13 May 2020 11:58:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwBnw015936 for ; Wed, 13 May 2020 07:58:11 -0400 Received: by smtp.corp.redhat.com (Postfix) id 50A66200AFA6; Wed, 13 May 2020 11:58:11 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 493B62029F6F for ; Wed, 13 May 2020 11:58:09 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D3511800FFA for ; Wed, 13 May 2020 11:58:08 +0000 (UTC) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-487-ZVgs6CPJPwC_CimvAZuL2A-1; Wed, 13 May 2020 07:58:06 -0400 Received: by mail-wr1-f48.google.com with SMTP id e1so6605266wrt.5 for ; Wed, 13 May 2020 04:58:06 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371105; 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=6wzkDyQPHeiwUFLgILiIedqQCb+JsK1anrXK9AA0ioo=; b=PIeVGam/hdReFSlo9KC3PjkIoKtx4ZPnkkfry7GHXnAJDvxAO1zNbHoyMIaFfNCgo/R9JO dO1+gPZe7+igb1Pp9ZcGsnZw32ymW7aqjvriORitzvp560+IiPxE67XawOXQocIcDM7wdr bf/R+XQZ5Z2tq6LjsrPKFCOgxX+jcoo= X-MC-Unique: SAs7vrCVMzGXxFZ8demFSg-1 X-MC-Unique: ZVgs6CPJPwC_CimvAZuL2A-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=6wzkDyQPHeiwUFLgILiIedqQCb+JsK1anrXK9AA0ioo=; b=I+VUB/v+Lxj+LgWGSquwZvjJaTZMzL22emkZmN6XfsnE6aUhOU0dfWxdtAB0FfLGZ2 Q80o5KDtvvT2oHTZXZKnXM0GZCivoRA48jK5jd1Ynaen19kaQaP06kpKAQoIrr3nibUb XuGu4kR6Qx1fApEjtqgHr/Y4bbmjANEBZNCcrQraaTD0hbWECM/p3atSlSLOJv2uboOJ G7QhD6AMCFWq+xiBJFWPoQ2s9uvvlJdjHYjhh2gkarctzoq02MBIEaPySp4nZLb3QVgo fe/O1KIXS8Fhg4km6nT9hygCAvy6Zcsc7pBFBKzFwhn1a3hB2ivtKRVfLo6Q93JbbCGL eYGA== X-Gm-Message-State: AGi0Pub1tmVTmooiPCpRx3EzMHITN9FvAPKLP28lkS4xYAnMqsUR9nUF yoS6xzp8ai2AOd2AARjUvxH6Jnmq X-Google-Smtp-Source: APiQypK0L3F1Wj5iTrom/eJruYyN27SWzLJmu7cp1cr1JR8RufZbWIZoOo1dQdFvci978Uiv/LoNLA== X-Received: by 2002:adf:d0c5:: with SMTP id z5mr32509048wrh.410.1589371083445; Wed, 13 May 2020 04:58:03 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 02/40] conf: capabilities: convert virCaps to GOBject Date: Wed, 13 May 2020 13:56:46 +0200 Message-Id: <20200513115724.157687-3-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.13 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/bhyve/bhyve_capabilities.c | 16 ++++-------- src/bhyve/bhyve_driver.c | 29 ++++++++-------------- src/conf/capabilities.c | 39 ++++++++++++++--------------- src/conf/capabilities.h | 6 ++--- src/conf/storage_capabilities.c | 4 +-- src/conf/virconftypes.h | 3 +-- src/esx/esx_driver.c | 24 ++++++------------ src/libvirt_private.syms | 1 + src/libxl/libxl_capabilities.c | 19 ++++++-------- src/libxl/libxl_conf.c | 2 +- src/lxc/lxc_conf.c | 15 +++++------ src/lxc/lxc_controller.c | 2 +- src/lxc/lxc_driver.c | 44 +++++++++++---------------------- src/lxc/lxc_process.c | 2 +- src/openvz/openvz_conf.c | 6 ++--- src/qemu/qemu_capabilities.c | 14 +++-------- src/qemu/qemu_conf.c | 6 ++--- src/qemu/qemu_driver.c | 2 +- src/security/virt-aa-helper.c | 7 ++---- src/storage/storage_backend.c | 3 +-- src/test/test_driver.c | 27 +++++++++----------- src/vbox/vbox_common.c | 6 ++--- src/vmware/vmware_conf.c | 11 +++------ src/vz/vz_driver.c | 26 ++++++++----------- tests/bhyveargv2xmltest.c | 2 +- tests/bhyvexml2argvtest.c | 2 +- tests/bhyvexml2xmltest.c | 2 +- tests/domainconftest.c | 2 +- tests/genericxml2xmltest.c | 2 +- tests/openvzutilstest.c | 2 +- tests/qemucaps2xmltest.c | 13 +++------- tests/qemuhotplugtest.c | 6 ++--- tests/testutils.c | 4 +-- tests/testutilslxc.c | 20 ++++++--------- tests/testutilsqemu.c | 10 +++----- tests/testutilsxen.c | 3 +-- tests/vircaps2xmltest.c | 6 +---- tests/vircapstest.c | 14 +++-------- tests/virresctrltest.c | 3 +-- tests/vmx2xmltest.c | 8 ++---- tests/xml2vmxtest.c | 8 ++---- 41 files changed, 156 insertions(+), 265 deletions(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index fb8829d571..66442e50ba 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -43,31 +43,25 @@ VIR_LOG_INIT("bhyve.bhyve_capabilities"); virCapsPtr virBhyveCapsBuild(void) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - return NULL; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 if ((guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_X86_64, "bhyve", NULL, 0, NULL)) =3D=3D NULL) - goto error; + return NULL; =20 if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_BHYVE, NULL, NULL, 0, NULL) =3D=3D NULL) - goto error; + return NULL; =20 if (!(caps->host.cpu =3D virCPUProbeHost(caps->host.arch))) VIR_WARN("Failed to get host CPU"); =20 - return caps; - - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 int diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index b6204c7fb9..bbaf6ea1f5 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -126,22 +126,21 @@ bhyveAutostartDomains(bhyveConnPtr driver) * Get a reference to the virCapsPtr instance for the * driver. * - * The caller must release the reference with virObjetUnref + * The caller must release the reference with g_object_unref * * Returns: a reference to a virCapsPtr instance or NULL */ virCapsPtr ATTRIBUTE_NONNULL(1) bhyveDriverGetCapabilities(bhyveConnPtr driver) { - return virObjectRef(driver->caps); + return g_object_ref(driver->caps); } =20 static char * bhyveConnectGetCapabilities(virConnectPtr conn) { bhyveConnPtr privconn =3D conn->privateData; - virCapsPtr caps; - char *xml =3D NULL; + g_autoptr(virCaps) caps =3D NULL; =20 if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; @@ -149,15 +148,10 @@ bhyveConnectGetCapabilities(virConnectPtr conn) if (!(caps =3D bhyveDriverGetCapabilities(privconn))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to get Capabilities")); - goto cleanup; + return NULL; } =20 - if (!(xml =3D virCapabilitiesFormatXML(caps))) - goto cleanup; - - cleanup: - virObjectUnref(caps); - return xml; + return virCapabilitiesFormatXML(caps); } =20 static virDomainObjPtr @@ -508,7 +502,7 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const cha= r *xml, unsigned int flag virDomainDefPtr oldDef =3D NULL; virDomainObjPtr vm =3D NULL; virObjectEventPtr event =3D NULL; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); @@ -555,7 +549,6 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const cha= r *xml, unsigned int flag dom =3D virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); =20 cleanup: - virObjectUnref(caps); virDomainDefFree(def); virDomainDefFree(oldDef); virDomainObjEndAPI(&vm); @@ -1188,7 +1181,7 @@ bhyveStateCleanup(void) return -1; =20 virObjectUnref(bhyve_driver->domains); - virObjectUnref(bhyve_driver->caps); + g_clear_object(&bhyve_driver->caps); virObjectUnref(bhyve_driver->xmlopt); virSysinfoDefFree(bhyve_driver->hostsysinfo); virObjectUnref(bhyve_driver->closeCallbacks); @@ -1440,19 +1433,19 @@ bhyveConnectCompareCPU(virConnectPtr conn, { bhyveConnPtr driver =3D conn->privateData; int ret =3D VIR_CPU_COMPARE_ERROR; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; bool failIncompatible; =20 virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE, VIR_CPU_COMPARE_ERROR); =20 if (virConnectCompareCPUEnsureACL(conn) < 0) - goto cleanup; + return ret; =20 failIncompatible =3D !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATI= BLE); =20 if (!(caps =3D bhyveDriverGetCapabilities(driver))) - goto cleanup; + return ret; =20 if (!caps->host.cpu || !caps->host.cpu->model) { @@ -1468,8 +1461,6 @@ bhyveConnectCompareCPU(virConnectPtr conn, xmlDesc, failIncompatible); } =20 - cleanup: - virObjectUnref(caps); return ret; } =20 diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index 0741d76731..6b1c452643 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -54,18 +54,8 @@ VIR_ENUM_IMPL(virCapsHostPMTarget, "suspend_mem", "suspend_disk", "suspend_hybrid", ); =20 -static virClassPtr virCapsClass; -static void virCapsDispose(void *obj); +G_DEFINE_TYPE(virCaps, vir_caps, G_TYPE_OBJECT); =20 -static int virCapabilitiesOnceInit(void) -{ - if (!VIR_CLASS_NEW(virCaps, virClassForObject())) - return -1; - - return 0; -} - -VIR_ONCE_GLOBAL_INIT(virCapabilities); =20 /** * virCapabilitiesNew: @@ -80,13 +70,7 @@ virCapabilitiesNew(virArch hostarch, bool offlineMigrate, bool liveMigrate) { - virCapsPtr caps; - - if (virCapabilitiesInitialize() < 0) - return NULL; - - if (!(caps =3D virObjectNew(virCapsClass))) - return NULL; + virCapsPtr caps =3D VIR_CAPS(g_object_new(VIR_TYPE_CAPS, NULL)); =20 caps->host.arch =3D hostarch; caps->host.offlineMigrate =3D offlineMigrate; @@ -225,9 +209,9 @@ virCapabilitiesClearSecModel(virCapsHostSecModelPtr sec= model) } =20 static void -virCapsDispose(void *object) +virCapsFinalize(GObject *object) { - virCapsPtr caps =3D object; + virCapsPtr caps =3D VIR_CAPS(object); size_t i; =20 for (i =3D 0; i < caps->npools; i++) @@ -267,6 +251,21 @@ virCapsDispose(void *object) VIR_FREE(caps->host.pagesSize); virCPUDefFree(caps->host.cpu); g_clear_object(&caps->host.resctrl); + + G_OBJECT_CLASS(vir_caps_parent_class)->finalize(object); +} + +static void +vir_caps_init(virCaps *caps G_GNUC_UNUSED) +{ +} + +static void +vir_caps_class_init(virCapsClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virCapsFinalize; } =20 /** diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h index e2581fac8b..b563f79148 100644 --- a/src/conf/capabilities.h +++ b/src/conf/capabilities.h @@ -200,7 +200,7 @@ struct _virCapsStoragePool { =20 =20 struct _virCaps { - virObject parent; + GObject parent; =20 virCapsHost host; size_t nguests; @@ -212,8 +212,8 @@ struct _virCaps { virCapsStoragePoolPtr *pools; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCaps, virObjectUnref); - +#define VIR_TYPE_CAPS vir_caps_get_type() +G_DECLARE_FINAL_TYPE(virCaps, vir_caps, VIR, CAPS, GObject); =20 struct _virCapsDomainData { int ostype; diff --git a/src/conf/storage_capabilities.c b/src/conf/storage_capabilitie= s.c index 1a3417f90b..a2f8063ecb 100644 --- a/src/conf/storage_capabilities.c +++ b/src/conf/storage_capabilities.c @@ -40,7 +40,7 @@ virStoragePoolCapsDispose(void *obj) virStoragePoolCapsPtr caps =3D obj; VIR_DEBUG("obj=3D%p", caps); =20 - virObjectUnref(caps->driverCaps); + g_clear_object(&caps->driverCaps); } =20 =20 @@ -66,7 +66,7 @@ virStoragePoolCapsNew(virCapsPtr driverCaps) if (!(caps =3D virObjectLockableNew(virStoragePoolCapsClass))) return NULL; =20 - caps->driverCaps =3D virObjectRef(driverCaps); + caps->driverCaps =3D g_object_ref(driverCaps); =20 return caps; } diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index 1c62cde251..96df0f9f6f 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -27,8 +27,7 @@ typedef struct _virBlkioDevice virBlkioDevice; typedef virBlkioDevice *virBlkioDevicePtr; =20 -typedef struct _virCaps virCaps; -typedef virCaps *virCapsPtr; +typedef struct _virCaps *virCapsPtr; =20 typedef struct _virCapsDomainData virCapsDomainData; typedef virCapsDomainData *virCapsDomainDataPtr; diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 0ede65279a..39412f746a 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -69,7 +69,7 @@ esxFreePrivate(esxPrivate **priv) esxVI_Context_Free(&(*priv)->host); esxVI_Context_Free(&(*priv)->vCenter); esxUtil_FreeParsedUri(&(*priv)->parsedUri); - virObjectUnref((*priv)->caps); + g_clear_object(&(*priv)->caps); virObjectUnref((*priv)->xmlopt); VIR_FREE(*priv); } @@ -540,7 +540,7 @@ static virCapsPtr esxCapsInit(esxPrivate *priv) { esxVI_Boolean supportsLongMode =3D esxSupportsLongMode(priv); - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest =3D NULL; =20 if (supportsLongMode =3D=3D esxVI_Boolean_Undefined) @@ -552,14 +552,11 @@ esxCapsInit(esxPrivate *priv) caps =3D virCapabilitiesNew(VIR_ARCH_I686, true, true); } =20 - if (!caps) - return NULL; - virCapabilitiesAddHostMigrateTransport(caps, "vpxmigr"); =20 =20 if (esxLookupHostSystemBiosUuid(priv, caps->host.host_uuid) < 0) - goto failure; + return NULL; =20 /* i686 */ guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, @@ -568,10 +565,10 @@ esxCapsInit(esxPrivate *priv) NULL); =20 if (!guest) - goto failure; + return NULL; =20 if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_VMWARE, NULL= , NULL, 0, NULL)) - goto failure; + return NULL; =20 /* x86_64 */ if (supportsLongMode =3D=3D esxVI_Boolean_True) { @@ -581,18 +578,13 @@ esxCapsInit(esxPrivate *priv) 0, NULL); =20 if (!guest) - goto failure; + return NULL; =20 if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_VMWARE, = NULL, NULL, 0, NULL)) - goto failure; + return NULL; } =20 - return caps; - - failure: - virObjectUnref(caps); - - return NULL; + return g_steal_pointer(&caps); } =20 =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2f3d58dd84..1796ef5cbe 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -51,6 +51,7 @@ virDomainBackupDefParseString; =20 =20 # conf/capabilities.h +vir_caps_get_type; virCapabilitiesAddGuest; virCapabilitiesAddGuestDomain; virCapabilitiesAddGuestFeature; diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c index beac8c8cfc..4bbe761b3d 100644 --- a/src/libxl/libxl_capabilities.c +++ b/src/libxl/libxl_capabilities.c @@ -704,29 +704,24 @@ libxlMakeDomainDeviceHostdevCaps(virDomainCapsDeviceH= ostdevPtr dev) virCapsPtr libxlMakeCapabilities(libxl_ctx *ctx) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; =20 #ifdef LIBXL_HAVE_NO_SUSPEND_RESUME - if ((caps =3D virCapabilitiesNew(virArchFromHost(), false, false)) =3D= =3D NULL) + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); #else - if ((caps =3D virCapabilitiesNew(virArchFromHost(), true, true)) =3D= =3D NULL) + caps =3D virCapabilitiesNew(virArchFromHost(), true, true); #endif - return NULL; =20 if (libxlCapsInitHost(ctx, caps) < 0) - goto error; + return NULL; =20 if (libxlCapsInitNuma(ctx, caps) < 0) - goto error; + return NULL; =20 if (libxlCapsInitGuests(ctx, caps) < 0) - goto error; - - return caps; + return NULL; =20 - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 /* diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index a0059fc2a7..a41f22386f 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -70,7 +70,7 @@ libxlDriverConfigDispose(void *obj) { libxlDriverConfigPtr cfg =3D obj; =20 - virObjectUnref(cfg->caps); + g_clear_object(&cfg->caps); libxl_ctx_free(cfg->ctx); if (cfg->logger) libxlLoggerFree(cfg->logger); diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index 8469f30b9e..6942781731 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -59,14 +59,12 @@ VIR_ONCE_GLOBAL_INIT(virLXCConfig); /* Functions */ virCapsPtr virLXCDriverCapsInit(virLXCDriverPtr driver) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; virArch altArch; char *lxc_path =3D NULL; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - goto error; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 /* Some machines have problematic NUMA topology causing * unexpected failures. We don't want to break the lxc @@ -164,11 +162,10 @@ virCapsPtr virLXCDriverCapsInit(virLXCDriverPtr drive= r) VIR_INFO("No driver, not initializing security driver"); } =20 - return caps; + return g_steal_pointer(&caps); =20 error: VIR_FREE(lxc_path); - virObjectUnref(caps); return NULL; } =20 @@ -180,7 +177,7 @@ virCapsPtr virLXCDriverCapsInit(virLXCDriverPtr driver) * driver. If @refresh is true, the capabilities will be * rebuilt first * - * The caller must release the reference with virObjetUnref + * The caller must release the reference with g_object_unref * * Returns: a reference to a virCapsPtr instance or NULL */ @@ -194,7 +191,7 @@ virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr = driver, return NULL; =20 lxcDriverLock(driver); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); driver->caps =3D caps; } else { lxcDriverLock(driver); @@ -207,7 +204,7 @@ virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr = driver, } } =20 - ret =3D virObjectRef(driver->caps); + ret =3D g_object_ref(driver->caps); lxcDriverUnlock(driver); return ret; } diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 453b435dd6..43f75d639a 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -181,7 +181,7 @@ virLXCControllerDriverFree(virLXCDriverPtr driver) if (!driver) return; virObjectUnref(driver->xmlopt); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virMutexDestroy(&driver->lock); g_free(driver); } diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 3111562568..b76e2a4f15 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -197,8 +197,7 @@ static int lxcConnectIsAlive(virConnectPtr conn G_GNUC_= UNUSED) =20 static char *lxcConnectGetCapabilities(virConnectPtr conn) { virLXCDriverPtr driver =3D conn->privateData; - virCapsPtr caps; - char *xml; + g_autoptr(virCaps) caps =3D NULL; =20 if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; @@ -206,10 +205,7 @@ static char *lxcConnectGetCapabilities(virConnectPtr c= onn) { if (!(caps =3D virLXCDriverGetCapabilities(driver, true))) return NULL; =20 - xml =3D virCapabilitiesFormatXML(caps); - - virObjectUnref(caps); - return xml; + return virCapabilitiesFormatXML(caps); } =20 =20 @@ -405,7 +401,7 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char = *xml, unsigned int flags) virObjectEventPtr event =3D NULL; virDomainDefPtr oldDef =3D NULL; virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); @@ -462,7 +458,6 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char = *xml, unsigned int flags) virDomainDefFree(oldDef); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(caps); virObjectUnref(cfg); return dom; } @@ -940,7 +935,7 @@ static char *lxcConnectDomainXMLFromNative(virConnectPt= r conn, char *xml =3D NULL; virDomainDefPtr def =3D NULL; virLXCDriverPtr driver =3D conn->privateData; - virCapsPtr caps =3D virLXCDriverGetCapabilities(driver, false); + g_autoptr(virCaps) caps =3D virLXCDriverGetCapabilities(driver, false); =20 virCheckFlags(0, NULL); =20 @@ -959,7 +954,6 @@ static char *lxcConnectDomainXMLFromNative(virConnectPt= r conn, xml =3D virDomainDefFormat(def, driver->xmlopt, 0); =20 cleanup: - virObjectUnref(caps); virDomainDefFree(def); return xml; } @@ -1086,7 +1080,7 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, virDomainPtr dom =3D NULL; virObjectEventPtr event =3D NULL; virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 virCheckFlags(VIR_DOMAIN_START_AUTODESTROY | @@ -1156,7 +1150,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, virDomainDefFree(def); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(caps); virObjectUnref(cfg); virNWFilterUnlockFilterUpdates(); return dom; @@ -1235,29 +1228,27 @@ static int lxcNodeGetSecurityModel(virConnectPtr co= nn, virSecurityModelPtr secmodel) { virLXCDriverPtr driver =3D conn->privateData; - virCapsPtr caps =3D NULL; - int ret =3D 0; + g_autoptr(virCaps) caps =3D NULL; =20 memset(secmodel, 0, sizeof(*secmodel)); =20 if (virNodeGetSecurityModelEnsureACL(conn) < 0) - goto cleanup; + return 0; =20 if (!(caps =3D virLXCDriverGetCapabilities(driver, false))) - goto cleanup; + return 0; =20 /* we treat no driver as success, but simply return no data in *secmod= el */ if (caps->host.nsecModels =3D=3D 0 || caps->host.secModels[0].model =3D=3D NULL) - goto cleanup; + return 0; =20 if (virStrcpy(secmodel->model, caps->host.secModels[0].model, VIR_SECURITY_MODEL_BUFLEN) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("security model string exceeds max %d bytes"), VIR_SECURITY_MODEL_BUFLEN - 1); - ret =3D -1; - goto cleanup; + return -1; } =20 if (virStrcpy(secmodel->doi, caps->host.secModels[0].doi, @@ -1265,13 +1256,10 @@ static int lxcNodeGetSecurityModel(virConnectPtr co= nn, virReportError(VIR_ERR_INTERNAL_ERROR, _("security DOI string exceeds max %d bytes"), VIR_SECURITY_DOI_BUFLEN-1); - ret =3D -1; - goto cleanup; + return -1; } =20 - cleanup: - virObjectUnref(caps); - return ret; + return 0; } =20 =20 @@ -1624,7 +1612,7 @@ static int lxcStateCleanup(void) virSysinfoDefFree(lxc_driver->hostsysinfo); =20 virObjectUnref(lxc_driver->hostdevMgr); - virObjectUnref(lxc_driver->caps); + g_clear_object(&lxc_driver->caps); virObjectUnref(lxc_driver->securityManager); virObjectUnref(lxc_driver->xmlopt); =20 @@ -1803,7 +1791,7 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, unsigned int flags) { virLXCDriverPtr driver =3D dom->conn->privateData; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; size_t i; virDomainObjPtr vm =3D NULL; virDomainDefPtr def =3D NULL; @@ -1925,7 +1913,6 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, cleanup: virDomainDefFree(persistentDefCopy); virDomainObjEndAPI(&vm); - virObjectUnref(caps); virObjectUnref(cfg); return ret; } @@ -4478,7 +4465,7 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr do= m, unsigned int flags) { virLXCDriverPtr driver =3D dom->conn->privateData; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; virDomainObjPtr vm =3D NULL; virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL, dev_copy =3D NULL; @@ -4564,7 +4551,6 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr do= m, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(caps); virObjectUnref(cfg); return ret; } diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 5199f3806e..6a3c9b7da3 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -1565,7 +1565,7 @@ int virLXCProcessStart(virConnectPtr conn, VIR_FREE(pidfile); VIR_FREE(logfile); virObjectUnref(cfg); - virObjectUnref(caps); + g_clear_object(&caps); =20 virErrorRestore(&err); =20 diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 78547b8b28..0d11d71dfd 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -151,9 +151,7 @@ virCapsPtr openvzCapsInit(void) g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - return NULL; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 if (!(caps->host.numa =3D virCapabilitiesHostNUMANewHost())) return NULL; @@ -483,7 +481,7 @@ openvzFreeDriver(struct openvz_driver *driver) =20 virObjectUnref(driver->xmlopt); virObjectUnref(driver->domains); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); VIR_FREE(driver); } =20 diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 7e711f22f8..afbbdf8493 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1079,13 +1079,11 @@ virQEMUCapsProbeHostCPU(virArch hostArch, virCapsPtr virQEMUCapsInit(virFileCachePtr cache) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; size_t i; virArch hostarch =3D virArchFromHost(); =20 - if ((caps =3D virCapabilitiesNew(hostarch, - true, true)) =3D=3D NULL) - goto error; + caps =3D virCapabilitiesNew(hostarch, true, true); =20 if (virCapabilitiesInitCaches(caps) < 0) VIR_WARN("Failed to get host CPU cache info"); @@ -1113,13 +1111,9 @@ virQEMUCapsInit(virFileCachePtr cache) if (virQEMUCapsInitGuest(caps, cache, hostarch, i) < 0) - goto error; - - return caps; + return NULL; =20 - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 =20 diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 2d5e527b47..f9bafebf46 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1354,7 +1354,7 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDri= verPtr driver) * driver. If @refresh is true, the capabilities will be * rebuilt first * - * The caller must release the reference with virObjetUnref + * The caller must release the reference with g_object_unref * * Returns: a reference to a virCapsPtr instance or NULL */ @@ -1368,7 +1368,7 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriver= Ptr driver, return NULL; =20 qemuDriverLock(driver); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); driver->caps =3D caps; } else { qemuDriverLock(driver); @@ -1382,7 +1382,7 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriver= Ptr driver, } } =20 - ret =3D virObjectRef(driver->caps); + ret =3D g_object_ref(driver->caps); qemuDriverUnlock(driver); return ret; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index db65862163..e5b34b1f98 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1124,7 +1124,7 @@ qemuStateCleanup(void) virObjectUnref(qemu_driver->xmlopt); virCPUDefFree(qemu_driver->hostcpu); virCapabilitiesHostNUMAUnref(qemu_driver->hostnuma); - virObjectUnref(qemu_driver->caps); + g_clear_object(&qemu_driver->caps); ebtablesContextFree(qemu_driver->ebtables); VIR_FREE(qemu_driver->qemuImgBinary); virObjectUnref(qemu_driver->domains); diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 6e6dd1b1db..370efd8dd1 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -79,7 +79,7 @@ vahDeinit(vahControl * ctl) return -1; =20 VIR_FREE(ctl->def); - virObjectUnref(ctl->caps); + g_clear_object(&ctl->caps); virObjectUnref(ctl->xmlopt); VIR_FREE(ctl->files); VIR_FREE(ctl->virtType); @@ -632,10 +632,7 @@ get_definition(vahControl * ctl, const char *xmlStr) if (caps_mockup(ctl, xmlStr) !=3D 0) return -1; =20 - if ((ctl->caps =3D virCapabilitiesNew(ctl->arch, true, true)) =3D=3D N= ULL) { - vah_error(ctl, 0, _("could not allocate memory")); - return -1; - } + ctl->caps =3D virCapabilitiesNew(ctl->arch, true, true); =20 if (!(ctl->xmlopt =3D virDomainXMLOptionNew(&virAAHelperDomainDefParse= rConfig, NULL, NULL, NULL, NULL))) { diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index e9f6663e6d..cb573c4945 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -190,8 +190,7 @@ virStorageBackendGetCapabilities(void) virCapsPtr caps; size_t i; =20 - if (!(caps =3D virCapabilitiesNew(VIR_ARCH_NONE, false, false))) - return NULL; + caps =3D virCapabilitiesNew(VIR_ARCH_NONE, false, false); =20 for (i =3D 0; i < virStorageBackendsCount; i++) virCapabilitiesAddStoragePool(caps, virStorageBackends[i]->type); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 0506147888..d824d12baf 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -158,7 +158,7 @@ testDriverDispose(void *obj) testDriverPtr driver =3D obj; size_t i; =20 - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virObjectUnref(driver->xmlopt); virObjectUnref(driver->domains); virNodeDeviceObjListFree(driver->devs); @@ -284,24 +284,23 @@ static virCapsPtr testBuildCapabilities(virConnectPtr conn) { testDriverPtr privconn =3D conn->privateData; - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; int guest_types[] =3D { VIR_DOMAIN_OSTYPE_HVM, VIR_DOMAIN_OSTYPE_XEN }; size_t i, j; =20 - if ((caps =3D virCapabilitiesNew(VIR_ARCH_I686, false, false)) =3D=3D = NULL) - goto error; + caps =3D virCapabilitiesNew(VIR_ARCH_I686, false, false); =20 if (virCapabilitiesAddHostFeature(caps, "pae") < 0) - goto error; + return NULL; if (virCapabilitiesAddHostFeature(caps, "nonpae") < 0) - goto error; + return NULL; =20 virCapabilitiesHostInitIOMMU(caps); =20 if (VIR_ALLOC_N(caps->host.pagesSize, 4) < 0) - goto error; + return NULL; =20 caps->host.pagesSize[caps->host.nPagesSize++] =3D 4; caps->host.pagesSize[caps->host.nPagesSize++] =3D 8; @@ -317,7 +316,7 @@ testBuildCapabilities(virConnectPtr conn) if (VIR_ALLOC_N(cpu_cells, privconn->cells[i].numCpus) < 0 || VIR_ALLOC_N(pages, nPages) < 0) { VIR_FREE(cpu_cells); - goto error; + return NULL; } =20 memcpy(cpu_cells, privconn->cells[i].cpus, @@ -347,7 +346,7 @@ testBuildCapabilities(virConnectPtr conn) NULL, 0, NULL)) =3D=3D NULL) - goto error; + return NULL; =20 if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_TEST, @@ -355,7 +354,7 @@ testBuildCapabilities(virConnectPtr conn) NULL, 0, NULL) =3D=3D NULL) - goto error; + return NULL; =20 virCapabilitiesAddGuestFeature(guest, VIR_CAPS_GUEST_FEATURE_TYPE_= PAE); virCapabilitiesAddGuestFeature(guest, VIR_CAPS_GUEST_FEATURE_TYPE_= NONPAE); @@ -363,16 +362,12 @@ testBuildCapabilities(virConnectPtr conn) =20 caps->host.nsecModels =3D 1; if (VIR_ALLOC_N(caps->host.secModels, caps->host.nsecModels) < 0) - goto error; + return NULL; caps->host.secModels[0].model =3D g_strdup("testSecurity"); =20 caps->host.secModels[0].doi =3D g_strdup(""); =20 - return caps; - - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 =20 diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index e98ae04ec0..febf843cd5 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -89,9 +89,7 @@ vboxCapsInit(void) g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest =3D NULL; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - return NULL; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 if (!(caps->host.numa =3D virCapabilitiesHostNUMANewHost())) return NULL; @@ -124,7 +122,7 @@ vboxDriverDispose(void *obj) { vboxDriverPtr driver =3D obj; =20 - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virObjectUnref(driver->xmlopt); } =20 diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 8bea9c3b12..017df7237f 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -54,7 +54,7 @@ vmwareFreeDriver(struct vmware_driver *driver) =20 virMutexDestroy(&driver->lock); virObjectUnref(driver->domains); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virObjectUnref(driver->xmlopt); VIR_FREE(driver->vmrun); VIR_FREE(driver); @@ -64,12 +64,10 @@ vmwareFreeDriver(struct vmware_driver *driver) virCapsPtr vmwareCapsInit(void) { - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest =3D NULL; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - goto error; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 if (!(caps->host.numa =3D virCapabilitiesHostNUMANewHost())) goto error; @@ -116,11 +114,10 @@ vmwareCapsInit(void) guest =3D NULL; } =20 - return caps; + return g_steal_pointer(&caps); =20 error: virCapabilitiesFreeGuest(guest); - virObjectUnref(caps); return NULL; } =20 diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index d882b91def..85dac9a682 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -98,7 +98,7 @@ vzCapsAddGuestDomain(virCapsPtr caps, static virCapsPtr vzBuildCapabilities(void) { - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; virNodeInfo nodeinfo; virDomainOSType ostypes[] =3D { VIR_DOMAIN_OSTYPE_HVM, @@ -112,15 +112,13 @@ vzBuildCapabilities(void) }; size_t i, j, k; =20 - if ((caps =3D virCapabilitiesNew(virArchFromHost(), - false, false)) =3D=3D NULL) - return NULL; + caps =3D virCapabilitiesNew(virArchFromHost(), false, false); =20 if (!(caps->host.numa =3D virCapabilitiesHostNUMANewHost())) - goto error; + return NULL; =20 if (virCapabilitiesInitCaches(caps) < 0) - goto error; + return NULL; =20 G_STATIC_ASSERT(G_N_ELEMENTS(archs) =3D=3D G_N_ELEMENTS(emulators)); =20 @@ -129,23 +127,19 @@ vzBuildCapabilities(void) for (k =3D 0; k < G_N_ELEMENTS(emulators); k++) if (vzCapsAddGuestDomain(caps, ostypes[i], archs[j], emulators[k], virt_types[k]) < 0) - goto error; + return NULL; =20 if (virCapabilitiesGetNodeInfo(&nodeinfo)) - goto error; + return NULL; =20 if (!(caps->host.cpu =3D virCPUGetHost(caps->host.arch, VIR_CPU_TYPE_H= OST, &nodeinfo, NULL))) - goto error; + return NULL; =20 if (virCapabilitiesAddHostMigrateTransport(caps, "vzmigr") < 0) - goto error; - - return caps; + return NULL; =20 - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 static void vzDriverDispose(void * obj) @@ -154,7 +148,7 @@ static void vzDriverDispose(void * obj) =20 prlsdkDisconnect(driver); virObjectUnref(driver->domains); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virObjectUnref(driver->xmlopt); virObjectUnref(driver->domainEventState); virSysinfoDefFree(driver->hostsysinfo); diff --git a/tests/bhyveargv2xmltest.c b/tests/bhyveargv2xmltest.c index 735cc4b338..3150c4583f 100644 --- a/tests/bhyveargv2xmltest.c +++ b/tests/bhyveargv2xmltest.c @@ -195,7 +195,7 @@ mymain(void) DO_TEST("bhyveload-bootorder"); DO_TEST_FAIL("extraargs"); =20 - virObjectUnref(driver.caps); + g_clear_object(&driver.caps); virObjectUnref(driver.xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 9e7eb218b8..0429394246 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -249,7 +249,7 @@ mymain(void) driver.bhyvecaps &=3D ~BHYVE_CAP_CPUTOPOLOGY; DO_TEST_FAILURE("cputopology"); =20 - virObjectUnref(driver.caps); + g_clear_object(&driver.caps); virObjectUnref(driver.xmlopt); virPortAllocatorRangeFree(driver.remotePorts); =20 diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index a0c20a14c1..27b9abb204 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -127,7 +127,7 @@ mymain(void) /* USB xhci tablet */ DO_TEST_DIFFERENT("input-xhci-tablet"); =20 - virObjectUnref(driver.caps); + g_clear_object(&driver.caps); virObjectUnref(driver.xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/domainconftest.c b/tests/domainconftest.c index 754ef2eb3d..54fdd72c25 100644 --- a/tests/domainconftest.c +++ b/tests/domainconftest.c @@ -103,7 +103,7 @@ mymain(void) DO_TEST_GET_FS("/dev/pts", false); DO_TEST_GET_FS("/doesnotexist", false); =20 - virObjectUnref(caps); + g_clear_object(&caps); virObjectUnref(xmlopt); =20 cleanup: diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index 74e520522b..a92f5dc613 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -198,7 +198,7 @@ mymain(void) DO_TEST_BACKUP("backup-push-encrypted"); =20 =20 - virObjectUnref(caps); + g_clear_object(&caps); virObjectUnref(xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/openvzutilstest.c b/tests/openvzutilstest.c index 2b1a9fb5ce..124f17c3ce 100644 --- a/tests/openvzutilstest.c +++ b/tests/openvzutilstest.c @@ -132,7 +132,7 @@ testReadNetworkConf(const void *data G_GNUC_UNUSED) =20 cleanup: virObjectUnref(driver.xmlopt); - virObjectUnref(driver.caps); + g_clear_object(&driver.caps); VIR_FREE(actual); virDomainDefFree(def); =20 diff --git a/tests/qemucaps2xmltest.c b/tests/qemucaps2xmltest.c index 7a5125fea6..349af0e431 100644 --- a/tests/qemucaps2xmltest.c +++ b/tests/qemucaps2xmltest.c @@ -99,7 +99,7 @@ static virCapsPtr testGetCaps(char *capsData, const testQemuData *data) { virQEMUCapsPtr qemuCaps =3D NULL; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; virArch arch =3D virArchFromString(data->archName); g_autofree char *binary =3D NULL; =20 @@ -110,10 +110,7 @@ testGetCaps(char *capsData, const testQemuData *data) goto error; } =20 - if ((caps =3D virCapabilitiesNew(arch, false, false)) =3D=3D NULL) { - fprintf(stderr, "failed to create the fake capabilities"); - goto error; - } + caps =3D virCapabilitiesNew(arch, false, false); =20 if (virQEMUCapsInitGuestFromBinary(caps, binary, @@ -124,11 +121,10 @@ testGetCaps(char *capsData, const testQemuData *data) } =20 virObjectUnref(qemuCaps); - return caps; + return g_steal_pointer(&caps); =20 error: virObjectUnref(qemuCaps); - virObjectUnref(caps); return NULL; } =20 @@ -140,7 +136,7 @@ testQemuCapsXML(const void *opaque) char *capsFile =3D NULL, *xmlFile =3D NULL; char *capsData =3D NULL; char *capsXml =3D NULL; - virCapsPtr capsProvided =3D NULL; + g_autoptr(virCaps) capsProvided =3D NULL; =20 xmlFile =3D g_strdup_printf("%s/caps.%s.xml", data->outputDir, data->a= rchName); =20 @@ -167,7 +163,6 @@ testQemuCapsXML(const void *opaque) VIR_FREE(capsFile); VIR_FREE(capsXml); VIR_FREE(capsData); - virObjectUnref(capsProvided); return ret; } =20 diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index cf87de187f..d00012725b 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -245,7 +245,7 @@ testQemuHotplug(const void *data) unsigned int device_parse_flags =3D 0; virDomainObjPtr vm =3D NULL; virDomainDeviceDefPtr dev =3D NULL; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; qemuMonitorTestPtr test_mon =3D NULL; qemuDomainObjPrivatePtr priv =3D NULL; =20 @@ -356,7 +356,6 @@ testQemuHotplug(const void *data) test->vm =3D NULL; } virDomainDeviceDefFree(dev); - virObjectUnref(caps); qemuMonitorTestFree(test_mon); return ((ret < 0 && fail) || (!ret && !fail)) ? 0 : -1; } @@ -412,7 +411,7 @@ testQemuHotplugCpuPrepare(const char *test, virHashTablePtr qmpschema) { qemuDomainObjPrivatePtr priv =3D NULL; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; char *prefix =3D NULL; struct testQemuHotplugCpuData *data =3D NULL; =20 @@ -466,7 +465,6 @@ testQemuHotplugCpuPrepare(const char *test, return data; =20 error: - virObjectUnref(caps); testQemuHotplugCpuDataFree(data); VIR_FREE(prefix); return NULL; diff --git a/tests/testutils.c b/tests/testutils.c index 7f1776b244..6c06e1b972 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -912,9 +912,7 @@ virCapsPtr virTestGenericCapsInit(void) g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; =20 - if ((caps =3D virCapabilitiesNew(VIR_ARCH_X86_64, - false, false)) =3D=3D NULL) - return NULL; + caps =3D virCapabilitiesNew(VIR_ARCH_X86_64, false, false); =20 if ((guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, VI= R_ARCH_I686, "/usr/bin/acme-virt", NULL, diff --git a/tests/testutilslxc.c b/tests/testutilslxc.c index b5e2f542e7..bffc3ba440 100644 --- a/tests/testutilslxc.c +++ b/tests/testutilslxc.c @@ -11,7 +11,7 @@ virCapsPtr testLXCCapsInit(void) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; =20 if ((caps =3D virCapabilitiesNew(VIR_ARCH_X86_64, @@ -22,20 +22,20 @@ testLXCCapsInit(void) VIR_ARCH_I686, "/usr/libexec/libvirt_lxc", NULL, 0, NULL)) =3D=3D NULL) - goto error; + return NULL; =20 if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_LXC, NULL, N= ULL, 0, NULL)) - goto error; + return NULL; =20 =20 if ((guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_EXE, VIR_ARCH_X86_64, "/usr/libexec/libvirt_lxc", NULL, 0, NULL)) =3D=3D NULL) - goto error; + return NULL; =20 if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_LXC, NULL, N= ULL, 0, NULL)) - goto error; + return NULL; =20 =20 if (virTestGetDebug()) { @@ -43,18 +43,14 @@ testLXCCapsInit(void) =20 caps_str =3D virCapabilitiesFormatXML(caps); if (!caps_str) - goto error; + return NULL; =20 VIR_TEST_DEBUG("LXC driver capabilities:\n%s", caps_str); =20 VIR_FREE(caps_str); } =20 - return caps; - - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 =20 @@ -81,7 +77,7 @@ void testLXCDriverFree(virLXCDriverPtr driver) { virObjectUnref(driver->xmlopt); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virMutexDestroy(&driver->lock); g_free(driver); } diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 9f9eb4033c..06932d1172 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -196,11 +196,10 @@ testQemuAddGuest(virCapsPtr caps, =20 virCapsPtr testQemuCapsInit(void) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; size_t i; =20 - if (!(caps =3D virCapabilitiesNew(VIR_ARCH_X86_64, false, false))) - return NULL; + caps =3D virCapabilitiesNew(VIR_ARCH_X86_64, false, false); =20 /* Add dummy 'none' security_driver. This is equal to setting * security_driver =3D "none" in qemu.conf. */ @@ -231,11 +230,10 @@ virCapsPtr testQemuCapsInit(void) VIR_FREE(caps_str); } =20 - return caps; + return g_steal_pointer(&caps); =20 cleanup: caps->host.cpu =3D NULL; - virObjectUnref(caps); return NULL; } =20 @@ -314,7 +312,7 @@ void qemuTestDriverFree(virQEMUDriver *driver) } virObjectUnref(driver->qemuCapsCache); virObjectUnref(driver->xmlopt); - virObjectUnref(driver->caps); + g_clear_object(&driver->caps); virObjectUnref(driver->config); virObjectUnref(driver->securityManager); } diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index d50c3003da..7da90cdd1e 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -11,7 +11,7 @@ static virCapsPtr testXLInitCaps(void) { - virCapsPtr caps; + g_autoptr(virCaps) caps =3D NULL; virCapsGuestPtr guest; virCapsGuestMachinePtr *machines; int nmachines; @@ -78,7 +78,6 @@ testXLInitCaps(void) =20 cleanup: virCapabilitiesFreeMachines(machines, nmachines); - virObjectUnref(caps); return NULL; } =20 diff --git a/tests/vircaps2xmltest.c b/tests/vircaps2xmltest.c index 17cd600a7a..02907b5a91 100644 --- a/tests/vircaps2xmltest.c +++ b/tests/vircaps2xmltest.c @@ -38,7 +38,7 @@ test_virCapabilities(const void *opaque) { struct virCapabilitiesData *data =3D (struct virCapabilitiesData *) op= aque; const char *archStr =3D virArchToString(data->arch); - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; char *capsXML =3D NULL; char *path =3D NULL; char *system =3D NULL; @@ -55,9 +55,6 @@ test_virCapabilities(const void *opaque) virFileWrapperAddPrefix("/sys/fs/resctrl", resctrl); caps =3D virCapabilitiesNew(data->arch, data->offlineMigrate, data->li= veMigrate); =20 - if (!caps) - goto cleanup; - if (!(caps->host.numa =3D virCapabilitiesHostNUMANewHost())) goto cleanup; =20 @@ -82,7 +79,6 @@ test_virCapabilities(const void *opaque) VIR_FREE(resctrl); VIR_FREE(path); VIR_FREE(capsXML); - virObjectUnref(caps); return ret; } =20 diff --git a/tests/vircapstest.c b/tests/vircapstest.c index 08eb017a76..9b37faa1d6 100644 --- a/tests/vircapstest.c +++ b/tests/vircapstest.c @@ -151,11 +151,10 @@ static int test_virCapsDomainDataLookupQEMU(const void *data G_GNUC_UNUSED) { int ret =3D 0; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; =20 if (!(caps =3D testQemuCapsInit())) { - ret =3D -1; - goto out; + return -1; } =20 /* Checking each parameter individually */ @@ -199,8 +198,6 @@ test_virCapsDomainDataLookupQEMU(const void *data G_GNU= C_UNUSED) "/usr/bin/qemu-system-aarch64", "pc"); CAPS_EXPECT_ERR(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_VMWARE, NULL, "pc"); =20 - out: - virObjectUnref(caps); return ret; } #endif /* WITH_QEMU */ @@ -210,11 +207,10 @@ static int test_virCapsDomainDataLookupLXC(const void *data G_GNUC_UNUSED) { int ret =3D 0; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; =20 if (!(caps =3D testLXCCapsInit())) { - ret =3D -1; - goto out; + return -1; } =20 CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL, @@ -224,8 +220,6 @@ test_virCapsDomainDataLookupLXC(const void *data G_GNUC= _UNUSED) VIR_DOMAIN_OSTYPE_EXE, VIR_ARCH_X86_64, VIR_DOMAIN_VIRT_LXC, "/usr/libexec/libvirt_lxc", NULL); =20 - out: - virObjectUnref(caps); return ret; } #endif /* WITH_LXC */ diff --git a/tests/virresctrltest.c b/tests/virresctrltest.c index 91baef506d..76cc2ef3c6 100644 --- a/tests/virresctrltest.c +++ b/tests/virresctrltest.c @@ -24,7 +24,7 @@ test_virResctrlGetUnused(const void *opaque) g_autoptr(virResctrlAlloc) alloc =3D NULL; char *schemata_str =3D NULL; char *schemata_file; - virCapsPtr caps =3D NULL; + g_autoptr(virCaps) caps =3D NULL; =20 system_dir =3D g_strdup_printf("%s/vircaps2xmldata/linux-%s/system", a= bs_srcdir, data->filename); @@ -65,7 +65,6 @@ test_virResctrlGetUnused(const void *opaque) =20 ret =3D 0; cleanup: - virObjectUnref(caps); VIR_FREE(system_dir); VIR_FREE(resctrl_dir); VIR_FREE(schemata_str); diff --git a/tests/vmx2xmltest.c b/tests/vmx2xmltest.c index 1966aed6fe..613331cabc 100644 --- a/tests/vmx2xmltest.c +++ b/tests/vmx2xmltest.c @@ -25,9 +25,6 @@ testCapsInit(void) =20 caps =3D virCapabilitiesNew(VIR_ARCH_I686, true, true); =20 - if (caps =3D=3D NULL) - return; - virCapabilitiesAddHostMigrateTransport(caps, "vpxmigr"); =20 /* i686 guest */ @@ -61,8 +58,7 @@ testCapsInit(void) return; =20 failure: - virObjectUnref(caps); - caps =3D NULL; + g_clear_object(&caps); } =20 static int @@ -285,7 +281,7 @@ mymain(void) =20 DO_TEST("datacenterpath", "datacenterpath"); =20 - virObjectUnref(caps); + g_clear_object(&caps); virObjectUnref(xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/xml2vmxtest.c b/tests/xml2vmxtest.c index 8f0a2a72a4..5d5fb8e69a 100644 --- a/tests/xml2vmxtest.c +++ b/tests/xml2vmxtest.c @@ -25,9 +25,6 @@ testCapsInit(void) =20 caps =3D virCapabilitiesNew(VIR_ARCH_I686, true, true); =20 - if (caps =3D=3D NULL) - return; - virCapabilitiesAddHostMigrateTransport(caps, "esx"); =20 =20 @@ -62,9 +59,8 @@ testCapsInit(void) return; =20 failure: - virObjectUnref(caps); + g_clear_object(&caps); virObjectUnref(xmlopt); - caps =3D NULL; } =20 static int @@ -294,7 +290,7 @@ mymain(void) =20 DO_TEST("datacenterpath", "datacenterpath", 4); =20 - virObjectUnref(caps); + g_clear_object(&caps); virObjectUnref(xmlopt); =20 return result =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371109; cv=none; d=zohomail.com; s=zohoarc; b=noaSckPFIE2DDEHDiBsc34Nvj1E26rP+XPg9AMy8Tx0WhJk2CD+dzmh1K3vjB7K496pXCpoyvmZu6WsP1X0ErecMCiY/pCJvR2+TqC5KZPt0E2TxsE+AC5rk38pCD83xRLIzlzF98SHdr0/JY5COxxckMSqr9iop4qFzDdsiLNk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371109; 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=65pnTOLXv6izvd15oRD68LMXhQKC5ksqrcxjngirhpM=; b=BHckpdHsHDZzmJVxMEud/8moaaIfQHuzE01AQAJQ3WiNGq4Lrv1MxbiSRvoUBUf96h47W1zyRVmqYgJI7UuTdZtlHyo6QY8wlFJNLb7a/P1IIto7bkM1LPABwX4rhUrE9/LntaPHLLuupyLFLMz1DyMPSjHKovtF3o34ypbA4g8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371109008947.6956120358561; Wed, 13 May 2020 04:58:29 -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-173-UTHcvQEYOFS1WsKRgJcCmQ-1; Wed, 13 May 2020 07:58:23 -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 BEE97835B52; Wed, 13 May 2020 11:58:17 +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 9DA595D9E5; Wed, 13 May 2020 11:58:17 +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 6AAAF1809557; Wed, 13 May 2020 11:58:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwDZA015951 for ; Wed, 13 May 2020 07:58:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2658A110EB4; Wed, 13 May 2020 11:58:13 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 20A09114D07 for ; Wed, 13 May 2020 11:58:10 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1A8331859163 for ; Wed, 13 May 2020 11:58:10 +0000 (UTC) Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-503-_A4xs1ZvPgy5QLpbeHIjSg-1; Wed, 13 May 2020 07:58:07 -0400 Received: by mail-wr1-f52.google.com with SMTP id e1so6605306wrt.5 for ; Wed, 13 May 2020 04:58:06 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371107; 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=65pnTOLXv6izvd15oRD68LMXhQKC5ksqrcxjngirhpM=; b=VwNS2prTfWJArn4RskN1fkZeh90Vm/M7A08HpIiOy+wT2lG8tkE5K+CjOO3LhrPVbEwQSd TQ+XVBqqQWBYifRadqbXfByetuocuJ3FRIruqaPbJ74bItEoU6pRan92rxcuSohkz+lC3Y Tmz1MOauXoonLZkZVQ1P8SKuUi7XKg8= X-MC-Unique: UTHcvQEYOFS1WsKRgJcCmQ-1 X-MC-Unique: _A4xs1ZvPgy5QLpbeHIjSg-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=65pnTOLXv6izvd15oRD68LMXhQKC5ksqrcxjngirhpM=; b=GtiU9R+yHUoubIgeibaYbHe/7A5uoGyxHjS9Gm6dsNY7v32hUuqafBOkNGapvsMBuQ MogaiYkyuHFst4XzXl9l5JqIrkE8iybpS3SgCdCTIS/By/sMPrgEkEufaDV2Dt9apVCY lV1owOzWbVaDf47f+Au3WoCduPigNJSJLA4xp+rc9SMoUUfPVK/UNW9Sq+gAPVTwvw5s fUhYa9XwXaPOgh/38+yyhY5VYelEOQ2D4iymrw8TIrimMC8a5gt0/IKz4k3v4QmouKoB oSIGMcGWLg8oleTrzhGvp+wWfQqQz1xOwPFA0wOf1fi2hWr74p+fiafXv9v8JlYJNzwZ rMdg== X-Gm-Message-State: AGi0PuaY80S2JLFHkTqODt57zhO+f0wwmnJVE3C/JZROPTZ2m3n2zZ/+ 1PfbWhUaaHmupZeSeGGbdZT3pB4A X-Google-Smtp-Source: APiQypKZ98nDnBJWOEQBhvHmPzEqWZp+oHnoedZonKrn+f/CKQ2HNuxIolJZ277kAGDkOi326kupDw== X-Received: by 2002:a05:6000:8:: with SMTP id h8mr32266354wrx.372.1589371084989; Wed, 13 May 2020 04:58:04 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 03/40] qemu: convert virQEMUCaps to GObject Date: Wed, 13 May 2020 13:56:47 +0200 Message-Id: <20200513115724.157687-4-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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" virFileCache had to also be changed to properly unref the QEMUCaps objects; in turn, virfilecachetest was also converted to GObject so it plays nicely with virFileCache. Signed-off-by: Rafael Fonseca --- src/qemu/qemu_capabilities.c | 151 ++++++++++++++++------------------- src/qemu/qemu_capabilities.h | 9 ++- src/qemu/qemu_domain.c | 15 ++-- src/qemu/qemu_process.c | 2 +- src/util/virfilecache.c | 43 ++++------ src/util/virfilecache.h | 12 +-- tests/cputest.c | 13 +-- tests/domaincapstest.c | 3 +- tests/qemublocktest.c | 3 +- tests/qemucapabilitiestest.c | 9 +-- tests/qemucaps2xmltest.c | 16 ++-- tests/qemucapsprobe.c | 4 +- tests/qemumemlocktest.c | 3 +- tests/testutilsqemu.c | 17 ++-- tests/virfilecachetest.c | 69 +++++++--------- 15 files changed, 161 insertions(+), 208 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index afbbdf8493..a38d0ed7e9 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -653,7 +653,7 @@ static void virQEMUDomainCapsCacheDispose(void *obj) * And don't forget to update virQEMUCapsNewCopy. */ struct _virQEMUCaps { - virObject parent; + GObject parent; =20 bool kvmSupportsNesting; =20 @@ -691,14 +691,23 @@ struct virQEMUCapsSearchData { }; =20 =20 -static virClassPtr virQEMUCapsClass; -static void virQEMUCapsDispose(void *obj); +G_DEFINE_TYPE(virQEMUCaps, vir_qemu_caps, G_TYPE_OBJECT); =20 -static int virQEMUCapsOnceInit(void) +static void virQEMUCapsFinalize(GObject *obj); + +static void vir_qemu_caps_init(virQEMUCaps *caps G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(virQEMUCaps, virClassForObject())) - return -1; +} + +static void vir_qemu_caps_class_init(virQEMUCapsClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virQEMUCapsFinalize; +} =20 +static int virQEMUCapsOnceInit(void) +{ if (!(VIR_CLASS_NEW(virQEMUDomainCapsCache, virClassForObjectLockable(= )))) return -1; =20 @@ -878,7 +887,7 @@ virQEMUCapsInitGuest(virCapsPtr caps, virArch guestarch) { char *binary =3D NULL; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; int ret =3D -1; =20 binary =3D virQEMUCapsGetDefaultEmulator(hostarch, guestarch); @@ -896,7 +905,6 @@ virQEMUCapsInitGuest(virCapsPtr caps, guestarch); =20 VIR_FREE(binary); - virObjectUnref(qemuCaps); =20 return ret; } @@ -1699,7 +1707,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, virFileCachePtr capsCache, unsigned int *version) { - virQEMUCapsPtr qemucaps; + g_autoptr(virQEMUCaps) qemucaps =3D NULL; virArch hostarch; virCapsDomainDataPtr capsdata; =20 @@ -1722,7 +1730,6 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, return -1; =20 *version =3D virQEMUCapsGetVersion(qemucaps); - virObjectUnref(qemucaps); return 0; } =20 @@ -1748,26 +1755,17 @@ virQEMUDomainCapsCacheNew(void) virQEMUCapsPtr virQEMUCapsNew(void) { - virQEMUCapsPtr qemuCaps; - - if (virQEMUCapsInitialize() < 0) - return NULL; - - if (!(qemuCaps =3D virObjectNew(virQEMUCapsClass))) - return NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D + VIR_QEMU_CAPS(g_object_new(VIR_TYPE_QEMU_CAPS, NULL)); =20 qemuCaps->invalidation =3D true; if (!(qemuCaps->flags =3D virBitmapNew(QEMU_CAPS_LAST))) - goto error; + return NULL; =20 if (!(qemuCaps->domCapsCache =3D virQEMUDomainCapsCacheNew())) - goto error; - - return qemuCaps; + return NULL; =20 - error: - virObjectUnref(qemuCaps); - return NULL; + return g_steal_pointer(&qemuCaps); } =20 =20 @@ -1884,7 +1882,7 @@ virQEMUCapsAccelCopy(virQEMUCapsAccelPtr dst, =20 virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps) { - virQEMUCapsPtr ret =3D virQEMUCapsNewBinary(qemuCaps->binary); + g_autoptr(virQEMUCaps) ret =3D virQEMUCapsNewBinary(qemuCaps->binary); size_t i; =20 if (!ret) @@ -1908,10 +1906,10 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qe= muCaps) =20 if (virQEMUCapsAccelCopy(&ret->kvm, &qemuCaps->kvm) < 0 || virQEMUCapsAccelCopy(&ret->tcg, &qemuCaps->tcg) < 0) - goto error; + return NULL; =20 if (VIR_ALLOC_N(ret->gicCapabilities, qemuCaps->ngicCapabilities) < 0) - goto error; + return NULL; ret->ngicCapabilities =3D qemuCaps->ngicCapabilities; for (i =3D 0; i < qemuCaps->ngicCapabilities; i++) ret->gicCapabilities[i] =3D qemuCaps->gicCapabilities[i]; @@ -1919,13 +1917,9 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qem= uCaps) if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SEV_GUEST) && virQEMUCapsSEVInfoCopy(&ret->sevCapabilities, qemuCaps->sevCapabilities) < 0) - goto error; - - return ret; + return NULL; =20 - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 @@ -1946,9 +1940,9 @@ virQEMUCapsAccelClear(virQEMUCapsAccelPtr caps) } =20 =20 -void virQEMUCapsDispose(void *obj) +static void virQEMUCapsFinalize(GObject *obj) { - virQEMUCapsPtr qemuCaps =3D obj; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(obj); =20 virObjectUnref(qemuCaps->domCapsCache); virBitmapFree(qemuCaps->flags); @@ -1963,6 +1957,8 @@ void virQEMUCapsDispose(void *obj) =20 virQEMUCapsAccelClear(&qemuCaps->kvm); virQEMUCapsAccelClear(&qemuCaps->tcg); + + G_OBJECT_CLASS(vir_qemu_caps_parent_class)->finalize(obj); } =20 void @@ -4594,14 +4590,17 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps) =20 =20 static int -virQEMUCapsSaveFile(void *data, +virQEMUCapsSaveFile(GObject *data, const char *filename, void *privData G_GNUC_UNUSED) { - virQEMUCapsPtr qemuCaps =3D data; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(data); char *xml =3D NULL; int ret =3D -1; =20 + if (!qemuCaps) + return -1; + xml =3D virQEMUCapsFormatCache(qemuCaps); =20 if (virFileWriteStr(filename, xml, 0600) < 0) { @@ -4707,15 +4706,18 @@ virQEMUCapsKVMUsable(virQEMUCapsCachePrivPtr priv) =20 =20 static bool -virQEMUCapsIsValid(void *data, +virQEMUCapsIsValid(GObject *data, void *privData) { - virQEMUCapsPtr qemuCaps =3D data; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(data); virQEMUCapsCachePrivPtr priv =3D privData; bool kvmUsable; struct stat sb; bool kvmSupportsNesting; =20 + if (!qemuCaps) + return false; + if (!qemuCaps->invalidation) return true; =20 @@ -5251,18 +5253,18 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, unsigned int microcodeVersion, const char *kernelVersion) { - virQEMUCapsPtr qemuCaps; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; struct stat sb; =20 if (!(qemuCaps =3D virQEMUCapsNewBinary(binary))) - goto error; + return NULL; =20 /* We would also want to check faccessat if we cared about ACLs, * but we don't. */ if (stat(binary, &sb) < 0) { virReportSystemError(errno, _("Cannot check QEMU binary %s"), binary); - goto error; + return NULL; } qemuCaps->ctime =3D sb.st_ctime; =20 @@ -5273,11 +5275,11 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, if (!virFileIsExecutable(binary)) { virReportSystemError(errno, _("QEMU binary %s is not executable"), binary); - goto error; + return NULL; } =20 if (virQEMUCapsInitQMP(qemuCaps, libDir, runUid, runGid) < 0) - goto error; + return NULL; =20 qemuCaps->libvirtCtime =3D virGetSelfLastChanged(); qemuCaps->libvirtVersion =3D LIBVIR_VERSION_NUMBER; @@ -5293,48 +5295,42 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, qemuCaps->kvmSupportsNesting =3D virQEMUCapsKVMSupportsNesting(); } =20 - return qemuCaps; - - error: - virObjectUnref(qemuCaps); - return NULL; + return g_steal_pointer(&qemuCaps); } =20 -static void * +static GObject * virQEMUCapsNewData(const char *binary, void *privData) { virQEMUCapsCachePrivPtr priv =3D privData; =20 - return virQEMUCapsNewForBinaryInternal(priv->hostArch, - binary, - priv->libDir, - priv->runUid, - priv->runGid, - virHostCPUGetMicrocodeVersion(), - priv->kernelVersion); + return G_OBJECT( + virQEMUCapsNewForBinaryInternal(priv->hostArch, + binary, + priv->libDir, + priv->runUid, + priv->runGid, + virHostCPUGetMicrocodeVersion(= ), + priv->kernelVersion) + ); } =20 =20 -static void * +static GObject * virQEMUCapsLoadFile(const char *filename, const char *binary, void *privData) { - virQEMUCapsPtr qemuCaps =3D virQEMUCapsNewBinary(binary); + g_autoptr(virQEMUCaps) qemuCaps =3D virQEMUCapsNewBinary(binary); virQEMUCapsCachePrivPtr priv =3D privData; =20 if (!qemuCaps) return NULL; =20 if (virQEMUCapsLoadCache(priv->hostArch, qemuCaps, filename) < 0) - goto error; - - return qemuCaps; + return NULL; =20 - error: - virObjectUnref(qemuCaps); - return NULL; + return g_steal_pointer(&qemuCaps); } =20 =20 @@ -5450,15 +5446,13 @@ virQEMUCapsCacheLookupCopy(virFileCachePtr cache, const char *binary, const char *machineType) { - virQEMUCapsPtr qemuCaps =3D virQEMUCapsCacheLookup(cache, binary); + g_autoptr(virQEMUCaps) qemuCaps =3D virQEMUCapsCacheLookup(cache, bina= ry); virQEMUCapsPtr ret; =20 if (!qemuCaps) return NULL; =20 ret =3D virQEMUCapsNewCopy(qemuCaps); - virObjectUnref(qemuCaps); - if (!ret) return NULL; =20 @@ -5562,8 +5556,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, virArch hostarch =3D virArchFromHost(); virArch arch =3D hostarch; virDomainVirtType capsType; - virQEMUCapsPtr qemuCaps =3D NULL; - virQEMUCapsPtr ret =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; virArch arch_from_caps; g_autofree char *probedbinary =3D NULL; =20 @@ -5571,14 +5564,14 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, (virttype =3D virDomainVirtTypeFromString(virttypeStr)) < 0) { virReportError(VIR_ERR_INVALID_ARG, _("unknown virttype: %s"), virttypeStr); - goto cleanup; + return NULL; } =20 if (archStr && (arch =3D virArchFromString(archStr)) =3D=3D VIR_ARCH_NONE) { virReportError(VIR_ERR_INVALID_ARG, _("unknown architecture: %s"), archStr); - goto cleanup; + return NULL; } =20 if (!binary) { @@ -5587,7 +5580,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, } =20 if (!(qemuCaps =3D virQEMUCapsCacheLookup(cache, binary))) - goto cleanup; + return NULL; =20 arch_from_caps =3D virQEMUCapsGetArch(qemuCaps); =20 @@ -5601,7 +5594,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, "match given architecture '%s'"), virArchToString(arch_from_caps), virArchToString(arch)); - goto cleanup; + return NULL; } =20 capsType =3D virQEMUCapsGetVirtType(qemuCaps); @@ -5613,7 +5606,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, virReportError(VIR_ERR_INVALID_ARG, _("KVM is not supported by '%s' on this host"), binary); - goto cleanup; + return NULL; } =20 if (machine) { @@ -5624,7 +5617,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, virReportError(VIR_ERR_INVALID_ARG, _("the machine '%s' is not supported by emulato= r '%s'"), machine, binary); - goto cleanup; + return NULL; } } else { machine =3D virQEMUCapsGetPreferredMachine(qemuCaps, virttype); @@ -5637,11 +5630,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, if (retMachine) *retMachine =3D machine; =20 - ret =3D g_steal_pointer(&qemuCaps); - - cleanup: - virObjectUnref(qemuCaps); - return ret; + return g_steal_pointer(&qemuCaps); } =20 bool diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6bfc7386e3..c3f67fe2c6 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -21,7 +21,9 @@ =20 #pragma once =20 -#include "virobject.h" +#include "internal.h" +#include + #include "capabilities.h" #include "vircommand.h" #include "qemu_monitor.h" @@ -567,10 +569,11 @@ typedef enum { /* virQEMUCapsFlags grouping marker fo= r syntax-check */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; =20 -typedef struct _virQEMUCaps virQEMUCaps; +#define VIR_TYPE_QEMU_CAPS vir_qemu_caps_get_type() +G_DECLARE_FINAL_TYPE(virQEMUCaps, vir_qemu_caps, VIR, QEMU_CAPS, GObject); + typedef virQEMUCaps *virQEMUCapsPtr; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUCaps, virObjectUnref); =20 virQEMUCapsPtr virQEMUCapsNew(void); virQEMUCapsPtr virQEMUCapsNewBinary(const char *binary); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index a1b250fd0b..252f2a045e 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2274,8 +2274,7 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePtr= priv) =20 VIR_FREE(priv->machineName); =20 - virObjectUnref(priv->qemuCaps); - priv->qemuCaps =3D NULL; + g_clear_object(&priv->qemuCaps); =20 VIR_FREE(priv->pidfile); =20 @@ -4981,7 +4980,7 @@ qemuDomainDefPostParse(virDomainDefPtr def, { virQEMUDriverPtr driver =3D opaque; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); - virQEMUCapsPtr qemuCaps =3D parseOpaque; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(parseOpaque); =20 /* Note that qemuCaps may be NULL when this function is called. This * function shall not fail in that case. It will be re-run on VM start= up @@ -5936,7 +5935,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr de= v, /* Note that qemuCaps may be NULL when this function is called. This * function shall not fail in that case. It will be re-run on VM start= up * with the capabilities populated. */ - virQEMUCapsPtr qemuCaps =3D parseOpaque; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(parseOpaque); int ret =3D -1; =20 switch ((virDomainDeviceType) dev->type) { @@ -6024,7 +6023,7 @@ qemuDomainDefAssignAddresses(virDomainDef *def, /* Note that qemuCaps may be NULL when this function is called. This * function shall not fail in that case. It will be re-run on VM start= up * with the capabilities populated. */ - virQEMUCapsPtr qemuCaps =3D parseOpaque; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(parseOpaque); bool newDomain =3D parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; =20 /* Skip address assignment if @qemuCaps is not present. In such case d= evices @@ -6057,9 +6056,9 @@ qemuDomainPostParseDataAlloc(const virDomainDef *def, static void qemuDomainPostParseDataFree(void *parseOpaque) { - virQEMUCapsPtr qemuCaps =3D parseOpaque; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(parseOpaque); =20 - virObjectUnref(qemuCaps); + g_clear_object(&qemuCaps); } =20 =20 @@ -6898,7 +6897,7 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr drive= r, g_autoptr(virQEMUCaps) qCaps =3D NULL; =20 if (qemuCaps) { - qCaps =3D virObjectRef(qemuCaps); + qCaps =3D g_object_ref(qemuCaps); } else { if (!(qCaps =3D virQEMUCapsCacheLookupCopy(driver->qemuCapsCac= he, def->virtType, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index dee3f3fb63..57700438e9 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5489,7 +5489,7 @@ qemuProcessPrepareQEMUCaps(virDomainObjPtr vm, { qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 - virObjectUnref(priv->qemuCaps); + g_clear_object(&priv->qemuCaps); if (!(priv->qemuCaps =3D virQEMUCapsCacheLookupCopy(qemuCapsCache, vm->def->virtType, vm->def->emulator, diff --git a/src/util/virfilecache.c b/src/util/virfilecache.c index aecabf173d..cafb700476 100644 --- a/src/util/virfilecache.c +++ b/src/util/virfilecache.c @@ -34,6 +34,7 @@ #include "virlog.h" #include "virobject.h" #include "virstring.h" +#include =20 #include #include @@ -125,59 +126,51 @@ virFileCacheGetFileName(virFileCachePtr cache, static int virFileCacheLoad(virFileCachePtr cache, const char *name, - void **data) + GObject **data) { g_autofree char *file =3D NULL; - int ret =3D -1; - void *loadData =3D NULL; + g_autoptr(GObject) loadData =3D NULL; =20 *data =3D NULL; =20 if (!(file =3D virFileCacheGetFileName(cache, name))) - return ret; + return -1; =20 if (!virFileExists(file)) { if (errno =3D=3D ENOENT) { VIR_DEBUG("No cached data '%s' for '%s'", file, name); - ret =3D 0; - goto cleanup; + return 0; } virReportSystemError(errno, _("Unable to access cache '%s' for '%s'"), file, name); - goto cleanup; + return -1; } =20 if (!(loadData =3D cache->handlers.loadFile(file, name, cache->priv)))= { VIR_WARN("Failed to load cached data from '%s' for '%s': %s", file, name, virGetLastErrorMessage()); virResetLastError(); - ret =3D 0; - goto cleanup; + return 0; } =20 if (!cache->handlers.isValid(loadData, cache->priv)) { VIR_DEBUG("Outdated cached capabilities '%s' for '%s'", file, name= ); unlink(file); - ret =3D 0; - goto cleanup; + return 0; } =20 VIR_DEBUG("Loaded cached data '%s' for '%s'", file, name); =20 - ret =3D 1; - *data =3D g_steal_pointer(&loadData); - - cleanup: - virObjectUnref(loadData); - return ret; + g_set_object(data, loadData); + return 1; } =20 =20 static int virFileCacheSave(virFileCachePtr cache, const char *name, - void *data) + GObject *data) { g_autofree char *file =3D NULL; =20 @@ -195,7 +188,7 @@ static void * virFileCacheNewData(virFileCachePtr cache, const char *name) { - void *data =3D NULL; + g_autoptr(GObject) data =3D NULL; int rv; =20 if ((rv =3D virFileCacheLoad(cache, name, &data)) < 0) @@ -206,12 +199,11 @@ virFileCacheNewData(virFileCachePtr cache, return NULL; =20 if (virFileCacheSave(cache, name, data) < 0) { - virObjectUnref(data); - data =3D NULL; + return NULL; } } =20 - return data; + return g_steal_pointer(&data); } =20 =20 @@ -275,8 +267,7 @@ virFileCacheValidate(virFileCachePtr cache, if (*data) { VIR_DEBUG("Caching data '%p' for '%s'", *data, name); if (virHashAddEntry(cache->table, name, *data) < 0) { - virObjectUnref(*data); - *data =3D NULL; + g_clear_object(data); } } } @@ -306,7 +297,7 @@ virFileCacheLookup(virFileCachePtr cache, data =3D virHashLookup(cache->table, name); virFileCacheValidate(cache, name, &data); =20 - virObjectRef(data); + g_object_ref(data); virObjectUnlock(cache); =20 return data; @@ -337,7 +328,7 @@ virFileCacheLookupByFunc(virFileCachePtr cache, data =3D virHashSearch(cache->table, iter, iterData, (void **)&name); virFileCacheValidate(cache, name, &data); =20 - virObjectRef(data); + g_object_ref(data); virObjectUnlock(cache); =20 return data; diff --git a/src/util/virfilecache.h b/src/util/virfilecache.h index 006a9717cb..c8277872d3 100644 --- a/src/util/virfilecache.h +++ b/src/util/virfilecache.h @@ -23,8 +23,8 @@ =20 #include "internal.h" =20 -#include "virobject.h" #include "virhash.h" +#include =20 typedef struct _virFileCache virFileCache; typedef virFileCache *virFileCachePtr; @@ -40,7 +40,7 @@ typedef virFileCache *virFileCachePtr; * Returns *true* if it's valid or *false* if not valid. */ typedef bool -(*virFileCacheIsValidPtr)(void *data, +(*virFileCacheIsValidPtr)(GObject *data, void *priv); =20 /** @@ -49,11 +49,11 @@ typedef bool * @priv: private data created together with cache * * Creates a new data based on the @name. The returned data must be - * an instance of virObject. + * an instance of GObject. * * Returns data object or NULL on error. */ -typedef void * +typedef GObject * (*virFileCacheNewDataPtr)(const char *name, void *priv); =20 @@ -67,7 +67,7 @@ typedef void * * * Returns cached data object or NULL on error. */ -typedef void * +typedef GObject * (*virFileCacheLoadFilePtr)(const char *filename, const char *name, void *priv); @@ -83,7 +83,7 @@ typedef void * * Returns 0 on success, -1 on error. */ typedef int -(*virFileCacheSaveFilePtr)(void *data, +(*virFileCacheSaveFilePtr)(GObject *data, const char *filename, void *priv); =20 diff --git a/tests/cputest.c b/tests/cputest.c index 21f47a6853..54c9689663 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -521,8 +521,7 @@ cpuTestMakeQEMUCaps(const struct data *data) return qemuCaps; =20 error: - virObjectUnref(qemuCaps); - qemuCaps =3D NULL; + g_clear_object(&qemuCaps); goto cleanup; } =20 @@ -531,7 +530,7 @@ static int cpuTestGetCPUModels(const struct data *data, virDomainCapsCPUModelsPtr *models) { - virQEMUCapsPtr qemuCaps; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; =20 *models =3D NULL; =20 @@ -544,8 +543,6 @@ cpuTestGetCPUModels(const struct data *data, =20 *models =3D virQEMUCapsGetCPUModels(qemuCaps, VIR_DOMAIN_VIRT_KVM, NUL= L, NULL); =20 - virObjectUnref(qemuCaps); - return 0; } =20 @@ -878,7 +875,7 @@ static int cpuTestJSONCPUID(const void *arg) { const struct data *data =3D arg; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; virCPUDefPtr cpu =3D NULL; char *result =3D NULL; int ret =3D -1; @@ -900,7 +897,6 @@ cpuTestJSONCPUID(const void *arg) ret =3D cpuTestCompareXML(data->arch, cpu, result); =20 cleanup: - virObjectUnref(qemuCaps); virCPUDefFree(cpu); VIR_FREE(result); return ret; @@ -911,7 +907,7 @@ static int cpuTestJSONSignature(const void *arg) { const struct data *data =3D arg; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; virCPUDataPtr hostData =3D NULL; qemuMonitorCPUModelInfoPtr modelInfo; int ret =3D -1; @@ -926,7 +922,6 @@ cpuTestJSONSignature(const void *arg) ret =3D cpuTestCompareSignature(data, hostData); =20 cleanup: - virObjectUnref(qemuCaps); virCPUDataFree(hostData); return ret; } diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index c3a9f4ef91..2393e312d1 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -79,7 +79,7 @@ fillQemuCaps(virDomainCapsPtr domCaps, { int ret =3D -1; char *path =3D NULL; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; virDomainCapsLoaderPtr loader =3D &domCaps->os.loader; virDomainVirtType virtType; =20 @@ -131,7 +131,6 @@ fillQemuCaps(virDomainCapsPtr domCaps, =20 ret =3D 0; cleanup: - virObjectUnref(qemuCaps); VIR_FREE(path); return ret; } diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c index 8a715d1989..762cd0e6b6 100644 --- a/tests/qemublocktest.c +++ b/tests/qemublocktest.c @@ -1450,7 +1450,8 @@ mymain(void) cleanup: qemuTestDriverFree(&driver); VIR_FREE(capslatest_x86_64); - virObjectUnref(caps_x86_64); + if (caps_x86_64) + g_object_unref(caps_x86_64); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c index 5b32ac1451..b7a93748d9 100644 --- a/tests/qemucapabilitiestest.c +++ b/tests/qemucapabilitiestest.c @@ -74,7 +74,7 @@ testQemuCaps(const void *opaque) char *repliesFile =3D NULL; char *capsFile =3D NULL; qemuMonitorTestPtr mon =3D NULL; - virQEMUCapsPtr capsActual =3D NULL; + g_autoptr(virQEMUCaps) capsActual =3D NULL; char *binary =3D NULL; char *actual =3D NULL; unsigned int fakeMicrocodeVersion =3D 0; @@ -138,7 +138,6 @@ testQemuCaps(const void *opaque) VIR_FREE(actual); VIR_FREE(binary); qemuMonitorTestFree(mon); - virObjectUnref(capsActual); return ret; } =20 @@ -149,8 +148,8 @@ testQemuCapsCopy(const void *opaque) int ret =3D -1; const testQemuData *data =3D opaque; char *capsFile =3D NULL; - virQEMUCapsPtr orig =3D NULL; - virQEMUCapsPtr copy =3D NULL; + g_autoptr(virQEMUCaps) orig =3D NULL; + g_autoptr(virQEMUCaps) copy =3D NULL; char *actual =3D NULL; =20 capsFile =3D g_strdup_printf("%s/%s_%s.%s.xml", @@ -174,8 +173,6 @@ testQemuCapsCopy(const void *opaque) =20 cleanup: VIR_FREE(capsFile); - virObjectUnref(orig); - virObjectUnref(copy); VIR_FREE(actual); return ret; } diff --git a/tests/qemucaps2xmltest.c b/tests/qemucaps2xmltest.c index 349af0e431..6039895fd8 100644 --- a/tests/qemucaps2xmltest.c +++ b/tests/qemucaps2xmltest.c @@ -51,7 +51,7 @@ testQemuDataInit(testQemuDataPtr data) static virQEMUCapsPtr testQemuGetCaps(char *caps) { - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; xmlDocPtr xml; xmlXPathContextPtr ctxt =3D NULL; ssize_t i, n; @@ -85,11 +85,10 @@ testQemuGetCaps(char *caps) VIR_FREE(nodes); xmlFreeDoc(xml); xmlXPathFreeContext(ctxt); - return qemuCaps; + return g_steal_pointer(&qemuCaps); =20 error: VIR_FREE(nodes); - virObjectUnref(qemuCaps); xmlFreeDoc(xml); xmlXPathFreeContext(ctxt); return NULL; @@ -98,7 +97,7 @@ testQemuGetCaps(char *caps) static virCapsPtr testGetCaps(char *capsData, const testQemuData *data) { - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; g_autoptr(virCaps) caps =3D NULL; virArch arch =3D virArchFromString(data->archName); g_autofree char *binary =3D NULL; @@ -107,7 +106,7 @@ testGetCaps(char *capsData, const testQemuData *data) =20 if ((qemuCaps =3D testQemuGetCaps(capsData)) =3D=3D NULL) { fprintf(stderr, "failed to parse qemu capabilities flags"); - goto error; + return NULL; } =20 caps =3D virCapabilitiesNew(arch, false, false); @@ -117,15 +116,10 @@ testGetCaps(char *capsData, const testQemuData *data) qemuCaps, arch) < 0) { fprintf(stderr, "failed to create the capabilities from qemu"); - goto error; + return NULL; } =20 - virObjectUnref(qemuCaps); return g_steal_pointer(&caps); - - error: - virObjectUnref(qemuCaps); - return NULL; } =20 static int diff --git a/tests/qemucapsprobe.c b/tests/qemucapsprobe.c index ea88fd2e8a..9167500614 100644 --- a/tests/qemucapsprobe.c +++ b/tests/qemucapsprobe.c @@ -45,7 +45,7 @@ int main(int argc, char **argv) { virThread thread; - virQEMUCapsPtr caps; + g_autoptr(virQEMUCaps) caps =3D NULL; const char *mock =3D VIR_TEST_MOCK("qemucapsprobe"); =20 if (!virFileIsExecutable(mock)) { @@ -80,7 +80,5 @@ main(int argc, char **argv) -1, -1, 0, NULL))) return EXIT_FAILURE; =20 - virObjectUnref(caps); - return EXIT_SUCCESS; } diff --git a/tests/qemumemlocktest.c b/tests/qemumemlocktest.c index 3f18fed1c3..c1945f1f2b 100644 --- a/tests/qemumemlocktest.c +++ b/tests/qemumemlocktest.c @@ -58,7 +58,7 @@ mymain(void) { int ret =3D 0; char *fakerootdir; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; =20 fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); =20 @@ -148,7 +148,6 @@ mymain(void) DO_TEST("pseries-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED); =20 cleanup: - virObjectUnref(qemuCaps); =20 if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) virFileDeleteTree(fakerootdir); diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 06932d1172..ea0a89e902 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -286,20 +286,16 @@ virQEMUCapsPtr qemuTestParseCapabilitiesArch(virArch arch, const char *capsFile) { - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; g_autofree char *binary =3D g_strdup_printf("/usr/bin/qemu-system-%s", virArchToString(arch)); =20 if (!(qemuCaps =3D virQEMUCapsNewBinary(binary)) || virQEMUCapsLoadCache(arch, qemuCaps, capsFile) < 0) - goto error; + return NULL; =20 virQEMUCapsSetInvalidation(qemuCaps, false); - return qemuCaps; - - error: - virObjectUnref(qemuCaps); - return NULL; + return g_steal_pointer(&qemuCaps); } =20 =20 @@ -359,7 +355,7 @@ int qemuTestCapsCacheInsert(virFileCachePtr cache, } =20 if (virFileCacheInsertData(cache, qemu_emulators[i], tmpCaps) < 0)= { - virObjectUnref(tmpCaps); + g_object_unref(tmpCaps); return -1; } } @@ -663,7 +659,7 @@ testQemuInfoSetArgs(struct testQemuInfo *info, { va_list argptr; testQemuInfoArgName argname; - virQEMUCapsPtr qemuCaps =3D NULL; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; int gic =3D GIC_NONE; char *capsarch =3D NULL; char *capsver =3D NULL; @@ -780,7 +776,6 @@ testQemuInfoSetArgs(struct testQemuInfo *info, ret =3D 0; =20 cleanup: - virObjectUnref(qemuCaps); va_end(argptr); =20 return ret; @@ -792,5 +787,5 @@ testQemuInfoClear(struct testQemuInfo *info) { VIR_FREE(info->infile); VIR_FREE(info->outfile); - virObjectUnref(info->qemuCaps); + g_clear_object(&info->qemuCaps); } diff --git a/tests/virfilecachetest.c b/tests/virfilecachetest.c index 6d280b3bec..66e83f49b6 100644 --- a/tests/virfilecachetest.c +++ b/tests/virfilecachetest.c @@ -24,52 +24,50 @@ #include "virfile.h" #include "virfilecache.h" =20 +#include =20 #define VIR_FROM_THIS VIR_FROM_NONE =20 =20 struct _testFileCacheObj { - virObject parent; + GObject parent; char *data; }; -typedef struct _testFileCacheObj testFileCacheObj; +#define TYPE_TEST_FILE_CACHE_OBJ test_file_cache_obj_get_type() +G_DECLARE_FINAL_TYPE(testFileCacheObj, test_file_cache_obj, TEST, FILE_CAC= HE_OBJ, GObject); typedef testFileCacheObj *testFileCacheObjPtr; =20 =20 -static virClassPtr testFileCacheObjClass; +G_DEFINE_TYPE(testFileCacheObj, test_file_cache_obj, G_TYPE_OBJECT); =20 =20 static void -testFileCacheObjDispose(void *opaque) +testFileCacheObjFinalize(GObject *opaque) { - testFileCacheObjPtr obj =3D opaque; + testFileCacheObjPtr obj =3D TEST_FILE_CACHE_OBJ(opaque); VIR_FREE(obj->data); -} =20 + G_OBJECT_CLASS(test_file_cache_obj_parent_class)->finalize(opaque); +} =20 -static int -testFileCacheObjOnceInit(void) +static void +test_file_cache_obj_init(testFileCacheObj *obj G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(testFileCacheObj, virClassForObject())) - return -1; - - return 0; } =20 +static void +test_file_cache_obj_class_init(testFileCacheObjClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 -VIR_ONCE_GLOBAL_INIT(testFileCacheObj); + obj->finalize =3D testFileCacheObjFinalize; +} =20 =20 static testFileCacheObjPtr testFileCacheObjNew(const char *data) { - testFileCacheObjPtr obj; - - if (testFileCacheObjInitialize() < 0) - return NULL; - - if (!(obj =3D virObjectNew(testFileCacheObjClass))) - return NULL; + testFileCacheObjPtr obj =3D TEST_FILE_CACHE_OBJ(g_object_new(TYPE_TEST= _FILE_CACHE_OBJ, NULL)); =20 obj->data =3D g_strdup(data); =20 @@ -87,27 +85,27 @@ typedef testFileCachePriv *testFileCachePrivPtr; =20 =20 static bool -testFileCacheIsValid(void *data, +testFileCacheIsValid(GObject *data, void *priv) { testFileCachePrivPtr testPriv =3D priv; - testFileCacheObjPtr obj =3D data; + testFileCacheObjPtr obj =3D TEST_FILE_CACHE_OBJ(data); =20 - return STREQ(testPriv->expectData, obj->data); + return obj && STREQ(testPriv->expectData, obj->data); } =20 =20 -static void * +static GObject * testFileCacheNewData(const char *name G_GNUC_UNUSED, void *priv) { testFileCachePrivPtr testPriv =3D priv; =20 - return testFileCacheObjNew(testPriv->newData); + return G_OBJECT(testFileCacheObjNew(testPriv->newData)); } =20 =20 -static void * +static GObject * testFileCacheLoadFile(const char *filename, const char *name G_GNUC_UNUSED, void *priv G_GNUC_UNUSED) @@ -121,12 +119,12 @@ testFileCacheLoadFile(const char *filename, obj =3D testFileCacheObjNew(data); =20 VIR_FREE(data); - return obj; + return G_OBJECT(obj); } =20 =20 static int -testFileCacheSaveFile(void *data G_GNUC_UNUSED, +testFileCacheSaveFile(GObject *data G_GNUC_UNUSED, const char *filename G_GNUC_UNUSED, void *priv) { @@ -160,9 +158,8 @@ typedef testFileCacheData *testFileCacheDataPtr; static int testFileCache(const void *opaque) { - int ret =3D -1; const testFileCacheData *data =3D opaque; - testFileCacheObjPtr obj =3D NULL; + g_autoptr(testFileCacheObj) obj =3D NULL; testFileCachePrivPtr testPriv =3D virFileCacheGetPriv(data->cache); =20 testPriv->dataSaved =3D false; @@ -171,27 +168,23 @@ testFileCache(const void *opaque) =20 if (!(obj =3D virFileCacheLookup(data->cache, data->name))) { fprintf(stderr, "Getting cached data failed.\n"); - goto cleanup; + return -1; } =20 if (!obj->data || STRNEQ(data->expectData, obj->data)) { fprintf(stderr, "Expect data '%s', loaded data '%s'.\n", data->expectData, NULLSTR(obj->data)); - goto cleanup; + return -1; } =20 if (data->expectSave !=3D testPriv->dataSaved) { fprintf(stderr, "Expect data to be saved '%s', data saved '%s'.\n", data->expectSave ? "yes" : "no", testPriv->dataSaved ? "yes" : "no"); - goto cleanup; + return -1; } =20 - ret =3D 0; - - cleanup: - virObjectUnref(obj); - return ret; + return 0; } =20 =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371102; cv=none; d=zohomail.com; s=zohoarc; b=OhxyQipOnYWHl9JufEn/uYQoBJnoPthIwxfRUGfadpp8x0cSP0CBzjUkEsGWrQk/FR+zraZKd4STy5ADMjlZycK8EwbOZYPbfhx8UI/BbZWNNrXz4YvFCgM4/0UK4sUUqGw3VpIUkBBXI6FzTBRS1OrRDo6ds+Aa8CxruWe2XCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371102; 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=kYgPFrY1v92j+uCtopC2rVqB+SZ02FjFVe6TRZYFUn0=; b=aahZNIv8wpMP9QS1WwIXIHcGUtbXgP8dg8la2txjXf/8b851VpXjUJpHzBf9+MynP42/s48ZtORcb/GEMzydIqya7Bln2VDfQOSbLg9+eIZy5xbiYdN+VXXmI8Q5nbzAimuNhdIMJ940ST/AtIyWAaG0ZPszPBRkhwpXqpCV2Yc= 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 1589371102185350.3855873606112; Wed, 13 May 2020 04:58:22 -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-224-bEaVKKa9OwGX6MbMZsIUrA-1; Wed, 13 May 2020 07:58:17 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6E3F457097; Wed, 13 May 2020 11:58:12 +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 4DCF85C1D6; Wed, 13 May 2020 11:58: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 203C74CAAE; Wed, 13 May 2020 11:58:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwBDM015935 for ; Wed, 13 May 2020 07:58:11 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5106B200A798; Wed, 13 May 2020 11:58:11 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 48E382029F62 for ; Wed, 13 May 2020 11:58:10 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 530CC80028C for ; Wed, 13 May 2020 11:58:10 +0000 (UTC) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-387-tpcL5te6NzOwOCEsh6Dthw-1; Wed, 13 May 2020 07:58:08 -0400 Received: by mail-wr1-f41.google.com with SMTP id y3so20534869wrt.1 for ; Wed, 13 May 2020 04:58:07 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371100; 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=kYgPFrY1v92j+uCtopC2rVqB+SZ02FjFVe6TRZYFUn0=; b=bGhUyEPAwj9h5pDRilpEEeNUYK0wdUQmHxGO9nZCtnUrBmBWeQL9c53l2iVrX00c5VBvM7 x+K9bzzRpsK6Nnqgfia3OMbnDi/cdvwELeU25mk90HcqAmvZ+lvLpCao12McOfzr1sxVVB 7UaW9WanT7qjr/3puo8t2Q1g+tHZjAg= X-MC-Unique: bEaVKKa9OwGX6MbMZsIUrA-1 X-MC-Unique: tpcL5te6NzOwOCEsh6Dthw-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=kYgPFrY1v92j+uCtopC2rVqB+SZ02FjFVe6TRZYFUn0=; b=G+PTulhgntQQDM0IKHIyO/jXkTtVuMBkon4kt8vnS6Ea1adYWP7DOB+OClCs/sAdR1 y4oeJMYwcrPl5Iqto2u0V1L+jipXcovmJB0165eXRb27rL4SXhfma+mesVLyKWZ7HExy avgBbjz6WtCKXi0neLaHaJrI2w/wFo47aZnQooC6oQMUw26dTDXekPKlZyQy4QkJTW5v 8RsLMpTJFYBpBB0yyPjaQB+WvlF0aFnhMd1Qjgsfa3w4K9EsbJow8lJ3z/9LAOc3XcU+ ZyCMS2JCMIC56e5ZCDb8vwD9iF9WGa2tGHg8wa3EF/I0ecjM9mlpvBev9YDkIJV/Ftsc d1lw== X-Gm-Message-State: AOAM533fL5D8YiAktgmfbWv+JGA4p9RBiZTuArruFkfKkNbSEGLToA8Y b0o/AagZvVqeBN8o9V1QzHJhILtO X-Google-Smtp-Source: ABdhPJwevYUqD6qgIaBEeYEzg16l7E+G/9zOx2kLH1YV3Aw4mLRbei7DuYdrexkmO9bi/WXWPAHqmw== X-Received: by 2002:adf:f783:: with SMTP id q3mr7310804wrp.348.1589371086613; Wed, 13 May 2020 04:58:06 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 04/40] util: add function to unref array of GObjects Date: Wed, 13 May 2020 13:56:48 +0200 Message-Id: <20200513115724.157687-5-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.16 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" As types are slowly converted to GObject, a helper function to unref all the GObjects in an array will come in handy, as it's already the case with virObject. Signed-off-by: Rafael Fonseca --- src/libvirt_private.syms | 1 + src/util/virobject.c | 24 ++++++++++++++++++++++++ src/util/virobject.h | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1796ef5cbe..88fdc1a3a8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2744,6 +2744,7 @@ virClassForObjectRWLockable; virClassIsDerivedFrom; virClassName; virClassNew; +virGObjectListFreeCount; virObjectFreeCallback; virObjectFreeHashData; virObjectIsClass; diff --git a/src/util/virobject.c b/src/util/virobject.c index c71781550f..9030fb1625 100644 --- a/src/util/virobject.c +++ b/src/util/virobject.c @@ -29,6 +29,7 @@ #include "virlog.h" #include "virprobe.h" #include "virstring.h" +#include =20 #define VIR_FROM_THIS VIR_FROM_NONE =20 @@ -636,3 +637,26 @@ virObjectListFreeCount(void *list, =20 VIR_FREE(list); } + + +/** + * virGObjectListFreeCount: + * @list: A pointer to a list of GObject pointers to free + * @count: Number of elements in the list. + * + * Unrefs all members of @list and frees the list itself. + */ +void +virGObjectListFreeCount(void *list, + size_t count) +{ + size_t i; + + if (!list) + return; + + for (i =3D 0; i < count; i++) + g_clear_object(&((GObject **)list)[i]); + + VIR_FREE(list); +} diff --git a/src/util/virobject.h b/src/util/virobject.h index 62a8a3d132..1af048aefc 100644 --- a/src/util/virobject.h +++ b/src/util/virobject.h @@ -159,3 +159,7 @@ virObjectListFree(void *list); void virObjectListFreeCount(void *list, size_t count); + +void +virGObjectListFreeCount(void *list, + size_t count); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371111; cv=none; d=zohomail.com; s=zohoarc; b=hi+DTnLAmf9i6T8dgQQpufkzW4ddBnktqsRkbifNHPRIAF59dGfMsEDj00BdeIFlqRtjUrSvsLDPW5Enlfcd1gzVxpqDUk80CyiK1Xuq2NALfVt0o32HhtR7P0pQlVFLAXDZ8cs8QlwbtIFD+2SXPDb8Ptx6fPrHhPdqD1plpH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371111; 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=1ZWvlmCShW8rxtS0r/nqXB+tZyo35ejv7mXDDI0HEDU=; b=Hssi7cbX4NfL/ifxSI/KC3gFcraP1Z7v4vcMuYya7cEK021tsxhIx6azYrGmbMmFsQNAyyHy8zJktpRKBf8Z1N1e0RxDq+vDSHS554fL9LiSXMlzjgmS47xKhgg7WvfSG9VpcssB+Oztk8NwsVwrvToeTnTzpuAjDhi906zp+Ic= 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 1589371111276451.3798119642829; Wed, 13 May 2020 04:58:31 -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-34-nJHuFSOrMkKpTLVujAf9yA-1; Wed, 13 May 2020 07:58:27 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 260078015D2; Wed, 13 May 2020 11:58:19 +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 054E57D95A; Wed, 13 May 2020 11:58:19 +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 CB2D94E565; Wed, 13 May 2020 11:58:18 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwEc2015961 for ; Wed, 13 May 2020 07:58:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0EAC52166BA3; Wed, 13 May 2020 11:58:14 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 081DD2166BA0 for ; Wed, 13 May 2020 11:58:11 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C9A00800FFA for ; Wed, 13 May 2020 11:58:11 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-445-LK_mVUmhMxqIQwd-y3Nf8w-1; Wed, 13 May 2020 07:58:09 -0400 Received: by mail-wr1-f53.google.com with SMTP id i15so20496235wrx.10 for ; Wed, 13 May 2020 04:58:09 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371109; 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=1ZWvlmCShW8rxtS0r/nqXB+tZyo35ejv7mXDDI0HEDU=; b=fBHnaQ4P/mA/1/bX0LIlcouMzTZN/WWkxqaqBo4Bc4+fwfh/PtFlte6o8MNbJYgrKfZT2m zUNNCYnSdGlp8abZWXCj85gPTbxictqOehU32ChAX6eTdg5h7YOykgY7YQR4fqGp8tAlEN Ie0zZbJu/pGbRLZTa7OpFhrbAqJ3qI0= X-MC-Unique: nJHuFSOrMkKpTLVujAf9yA-1 X-MC-Unique: LK_mVUmhMxqIQwd-y3Nf8w-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=1ZWvlmCShW8rxtS0r/nqXB+tZyo35ejv7mXDDI0HEDU=; b=IdynJNLgXecsVSH8PvBQol2UawZfSLYEdVEbvd7FuPL6LaDfBMYi3z2NMbxVuioSES tdREtvU/WJ7JRgZRfFIJc4j64jGESEQp9awR/H6xEaOjrReX2WCL7gJO+tZiOgf9cwAq vOqpx7K6NFyTO4K42o9gpyBRrOtvoIULJQgOcAiaxTLrC38LyVLD8vs8H2px1zjYJ9q4 y1MN+A5koPCCHomc7zroRGitpW4C2GxddQzLvbXOH+3NYmYnRAfu/l4moy0Qv3zt9vrO 831JTuUsDYuaZ0PS8JM3n76wH92+SGjZhdloCHeUAloi/c/mvBK8RjgjQmSRUXIjApgI gKhw== X-Gm-Message-State: AGi0PubN/9sAVfNX89qKcr9kjSHY6KcUp84kba09mn47kBiwhnqhzjdy cHie+xKvvohT7B9XhSJaMJ/0Svlz X-Google-Smtp-Source: APiQypId7G3qvMJ0YED1pPmTekbSiBrcNcG2AnxVj5s5QxBFAqlgS6CeyB+FL1K9wrT/oVp3iUJdfQ== X-Received: by 2002:adf:dd50:: with SMTP id u16mr32724181wrm.58.1589371087951; Wed, 13 May 2020 04:58:07 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 05/40] rpc: convert virNetClientProgram to GObject Date: Wed, 13 May 2020 13:56:49 +0200 Message-Id: <20200513115724.157687-6-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 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/admin/admin_remote.c | 9 +++---- src/locking/lock_driver_lockd.c | 19 +++++++------- src/logging/log_manager.c | 15 +++++------ src/lxc/lxc_monitor.c | 2 +- src/remote/remote_driver.c | 46 +++++++++++++++------------------ src/rpc/virnetclient.c | 7 ++--- src/rpc/virnetclientprogram.c | 29 ++++++--------------- src/rpc/virnetclientprogram.h | 10 +++++-- src/rpc/virnetclientstream.c | 4 +-- 9 files changed, 62 insertions(+), 79 deletions(-) diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c index ca5e0c9fe4..c732379695 100644 --- a/src/admin/admin_remote.c +++ b/src/admin/admin_remote.c @@ -41,7 +41,7 @@ remoteAdminPrivDispose(void *opaque) { remoteAdminPrivPtr priv =3D opaque; =20 - virObjectUnref(priv->program); + g_clear_object(&priv->program); virObjectUnref(priv->client); } =20 @@ -227,10 +227,9 @@ remoteAdminPrivNew(const char *sock_path) if (!(priv->client =3D virNetClientNewUNIX(sock_path, false, NULL))) goto error; =20 - if (!(priv->program =3D virNetClientProgramNew(ADMIN_PROGRAM, - ADMIN_PROTOCOL_VERSION, - NULL, 0, NULL))) - goto error; + priv->program =3D virNetClientProgramNew(ADMIN_PROGRAM, + ADMIN_PROTOCOL_VERSION, + NULL, 0, NULL); =20 if (virNetClientAddProgram(priv->client, priv->program) < 0) goto error; diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lock= d.c index bec98dd05f..3101454a1d 100644 --- a/src/locking/lock_driver_lockd.c +++ b/src/locking/lock_driver_lockd.c @@ -213,12 +213,11 @@ static virNetClientPtr virLockManagerLockDaemonConnec= tionNew(bool privileged, daemonPath))) goto error; =20 - if (!(*prog =3D virNetClientProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM, - VIR_LOCK_SPACE_PROTOCOL_PROGRAM_V= ERSION, - NULL, - 0, - NULL))) - goto error; + *prog =3D virNetClientProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM, + VIR_LOCK_SPACE_PROTOCOL_PROGRAM_VERSION, + NULL, + 0, + NULL); =20 if (virNetClientAddProgram(client, *prog) < 0) goto error; @@ -233,7 +232,7 @@ static virNetClientPtr virLockManagerLockDaemonConnecti= onNew(bool privileged, VIR_FREE(lockdpath); virNetClientClose(client); virObjectUnref(client); - virObjectUnref(*prog); + g_clear_object(prog); return NULL; } =20 @@ -296,7 +295,7 @@ static int virLockManagerLockDaemonSetupLockspace(const= char *path) rv =3D 0; =20 cleanup: - virObjectUnref(program); + g_clear_object(&program); virNetClientClose(client); virObjectUnref(client); return rv; @@ -660,7 +659,7 @@ static int virLockManagerLockDaemonAcquire(virLockManag= erPtr lock, VIR_FORCE_CLOSE(*fd); virNetClientClose(client); virObjectUnref(client); - virObjectUnref(program); + g_clear_object(&program); =20 return rv; } @@ -713,7 +712,7 @@ static int virLockManagerLockDaemonRelease(virLockManag= erPtr lock, cleanup: virNetClientClose(client); virObjectUnref(client); - virObjectUnref(program); + g_clear_object(&program); =20 return rv; } diff --git a/src/logging/log_manager.c b/src/logging/log_manager.c index fd7c2922b3..0428ea4728 100644 --- a/src/logging/log_manager.c +++ b/src/logging/log_manager.c @@ -83,12 +83,11 @@ virLogManagerConnect(bool privileged, daemonPath))) goto error; =20 - if (!(*prog =3D virNetClientProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRA= M, - VIR_LOG_MANAGER_PROTOCOL_PROGRAM_= VERSION, - NULL, - 0, - NULL))) - goto error; + *prog =3D virNetClientProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRAM, + VIR_LOG_MANAGER_PROTOCOL_PROGRAM_VERSIO= N, + NULL, + 0, + NULL); =20 if (virNetClientAddProgram(client, *prog) < 0) goto error; @@ -103,7 +102,7 @@ virLogManagerConnect(bool privileged, VIR_FREE(logdpath); virNetClientClose(client); virObjectUnref(client); - virObjectUnref(*prog); + g_clear_object(prog); return NULL; } =20 @@ -135,7 +134,7 @@ virLogManagerFree(virLogManagerPtr mgr) =20 if (mgr->client) virNetClientClose(mgr->client); - virObjectUnref(mgr->program); + g_clear_object(&mgr->program); virObjectUnref(mgr->client); =20 VIR_FREE(mgr); diff --git a/src/lxc/lxc_monitor.c b/src/lxc/lxc_monitor.c index 479125374b..b3d6da6b98 100644 --- a/src/lxc/lxc_monitor.c +++ b/src/lxc/lxc_monitor.c @@ -198,7 +198,7 @@ static void virLXCMonitorDispose(void *opaque) VIR_DEBUG("mon=3D%p", mon); if (mon->cb.destroy) (mon->cb.destroy)(mon, mon->vm); - virObjectUnref(mon->program); + g_clear_object(&mon->program); virObjectUnref(mon->vm); } =20 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 0aeab9db27..961f8f78d9 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1280,24 +1280,21 @@ doRemoteOpen(virConnectPtr conn, remoteClientCloseFunc, priv->closeCallback, virObjectFreeCallbac= k); =20 - if (!(priv->remoteProgram =3D virNetClientProgramNew(REMOTE_PROGRAM, - REMOTE_PROTOCOL_VER= SION, - remoteEvents, - G_N_ELEMENTS(remote= Events), - conn))) - goto failed; - if (!(priv->lxcProgram =3D virNetClientProgramNew(LXC_PROGRAM, - LXC_PROTOCOL_VERSION, - NULL, - 0, - NULL))) - goto failed; - if (!(priv->qemuProgram =3D virNetClientProgramNew(QEMU_PROGRAM, - QEMU_PROTOCOL_VERSION, - qemuEvents, - G_N_ELEMENTS(qemuEven= ts), - conn))) - goto failed; + priv->remoteProgram =3D virNetClientProgramNew(REMOTE_PROGRAM, + REMOTE_PROTOCOL_VERSION, + remoteEvents, + G_N_ELEMENTS(remoteEvents= ), + conn); + priv->lxcProgram =3D virNetClientProgramNew(LXC_PROGRAM, + LXC_PROTOCOL_VERSION, + NULL, + 0, + NULL); + priv->qemuProgram =3D virNetClientProgramNew(QEMU_PROGRAM, + QEMU_PROTOCOL_VERSION, + qemuEvents, + G_N_ELEMENTS(qemuEvents), + conn); =20 if (virNetClientAddProgram(priv->client, priv->remoteProgram) < 0 || virNetClientAddProgram(priv->client, priv->lxcProgram) < 0 || @@ -1369,9 +1366,9 @@ doRemoteOpen(virConnectPtr conn, return VIR_DRV_OPEN_SUCCESS; =20 failed: - virObjectUnref(priv->remoteProgram); - virObjectUnref(priv->lxcProgram); - virObjectUnref(priv->qemuProgram); + g_clear_object(&priv->remoteProgram); + g_clear_object(&priv->lxcProgram); + g_clear_object(&priv->qemuProgram); virNetClientClose(priv->client); virObjectUnref(priv->client); priv->client =3D NULL; @@ -1532,10 +1529,9 @@ doRemoteClose(virConnectPtr conn, struct private_dat= a *priv) priv->client =3D NULL; virObjectUnref(priv->closeCallback); priv->closeCallback =3D NULL; - virObjectUnref(priv->remoteProgram); - virObjectUnref(priv->lxcProgram); - virObjectUnref(priv->qemuProgram); - priv->remoteProgram =3D priv->qemuProgram =3D priv->lxcProgram =3D NUL= L; + g_clear_object(&priv->remoteProgram); + g_clear_object(&priv->lxcProgram); + g_clear_object(&priv->qemuProgram); =20 /* Free hostname copy */ VIR_FREE(priv->hostname); diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 1c5bef86a1..9bec5235b9 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -676,7 +676,6 @@ bool virNetClientHasPassFD(virNetClientPtr client) void virNetClientDispose(void *obj) { virNetClientPtr client =3D obj; - size_t i; =20 PROBE(RPC_CLIENT_DISPOSE, "client=3D%p", client); @@ -684,9 +683,7 @@ void virNetClientDispose(void *obj) if (client->closeFf) client->closeFf(client->closeOpaque); =20 - for (i =3D 0; i < client->nprograms; i++) - virObjectUnref(client->programs[i]); - VIR_FREE(client->programs); + virGObjectListFreeCount(client->programs, client->nprograms); =20 g_main_loop_unref(client->eventLoop); g_main_context_unref(client->eventCtx); @@ -1010,7 +1007,7 @@ int virNetClientAddProgram(virNetClientPtr client, if (VIR_EXPAND_N(client->programs, client->nprograms, 1) < 0) goto error; =20 - client->programs[client->nprograms-1] =3D virObjectRef(prog); + client->programs[client->nprograms-1] =3D g_object_ref(prog); =20 virObjectUnlock(client); return 0; diff --git a/src/rpc/virnetclientprogram.c b/src/rpc/virnetclientprogram.c index 4d1a2bc28b..d76f3eaea7 100644 --- a/src/rpc/virnetclientprogram.c +++ b/src/rpc/virnetclientprogram.c @@ -38,7 +38,7 @@ VIR_LOG_INIT("rpc.netclientprogram"); =20 struct _virNetClientProgram { - virObject parent; + GObject parent; =20 unsigned program; unsigned version; @@ -47,19 +47,15 @@ struct _virNetClientProgram { void *eventOpaque; }; =20 -static virClassPtr virNetClientProgramClass; -static void virNetClientProgramDispose(void *obj); +G_DEFINE_TYPE(virNetClientProgram, vir_net_client_program, G_TYPE_OBJECT); =20 -static int virNetClientProgramOnceInit(void) +static void vir_net_client_program_init(virNetClientProgram *prg G_GNUC_UN= USED) { - if (!VIR_CLASS_NEW(virNetClientProgram, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virNetClientProgram); - +static void vir_net_client_program_class_init(virNetClientProgramClass *kl= ass G_GNUC_UNUSED) +{ +} =20 virNetClientProgramPtr virNetClientProgramNew(unsigned program, unsigned version, @@ -67,13 +63,9 @@ virNetClientProgramPtr virNetClientProgramNew(unsigned p= rogram, size_t nevents, void *eventOpaque) { - virNetClientProgramPtr prog; + virNetClientProgramPtr prog =3D + VIR_NET_CLIENT_PROGRAM(g_object_new(VIR_TYPE_NET_CLIENT_PROGRAM, N= ULL)); =20 - if (virNetClientProgramInitialize() < 0) - return NULL; - - if (!(prog =3D virObjectNew(virNetClientProgramClass))) - return NULL; =20 prog->program =3D program; prog->version =3D version; @@ -85,11 +77,6 @@ virNetClientProgramPtr virNetClientProgramNew(unsigned p= rogram, } =20 =20 -void virNetClientProgramDispose(void *obj G_GNUC_UNUSED) -{ -} - - unsigned virNetClientProgramGetProgram(virNetClientProgramPtr prog) { return prog->program; diff --git a/src/rpc/virnetclientprogram.h b/src/rpc/virnetclientprogram.h index 1ac0f30023..1f7006d462 100644 --- a/src/rpc/virnetclientprogram.h +++ b/src/rpc/virnetclientprogram.h @@ -24,12 +24,18 @@ #include =20 #include "virnetmessage.h" -#include "virobject.h" +#include "internal.h" +#include =20 typedef struct _virNetClient virNetClient; typedef virNetClient *virNetClientPtr; =20 -typedef struct _virNetClientProgram virNetClientProgram; +#define VIR_TYPE_NET_CLIENT_PROGRAM vir_net_client_program_get_type() +G_DECLARE_FINAL_TYPE(virNetClientProgram, + vir_net_client_program, + VIR, + NET_CLIENT_PROGRAM, + GObject); typedef virNetClientProgram *virNetClientProgramPtr; =20 typedef struct _virNetClientProgramEvent virNetClientProgramEvent; diff --git a/src/rpc/virnetclientstream.c b/src/rpc/virnetclientstream.c index f904eaba31..183eddd98b 100644 --- a/src/rpc/virnetclientstream.c +++ b/src/rpc/virnetclientstream.c @@ -145,7 +145,7 @@ virNetClientStreamPtr virNetClientStreamNew(virNetClien= tProgramPtr prog, if (!(st =3D virObjectLockableNew(virNetClientStreamClass))) return NULL; =20 - st->prog =3D virObjectRef(prog); + st->prog =3D g_object_ref(prog); st->proc =3D proc; st->serial =3D serial; st->allowSkip =3D allowSkip; @@ -163,7 +163,7 @@ void virNetClientStreamDispose(void *obj) virNetMessageQueueServe(&st->rx); virNetMessageFree(msg); } - virObjectUnref(st->prog); + g_clear_object(&st->prog); } =20 bool virNetClientStreamMatches(virNetClientStreamPtr st, --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371109; cv=none; d=zohomail.com; s=zohoarc; b=EoKytlOMX7RUiuqXbd4zBd/T4TJs6haIkjsAU/oXzEHEEI6FJEBU9Z6FVI0/hM/DHDphtVDY9TGDfDO19BtUHmVmUNPxWjxxlKXyjWCyDN/yUK0aQQQCm0w/dS3Md3KMo3ADLK4OGZms9Iyhk27FyUHSbd4Es6cDCKu3baV0dB0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371109; 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=VwRP5wvJXmCzMQ0HlK0i7Bnq6nr0pgwjXkDYx6/goOI=; b=XqYzt2Nm1TVFK9pnSbnqixzOc19lW3ZRMyqnqltaA4Yd0jh8RuM37L/BI8io9rbEZwOG7m/8RZsdIFp3YkU33zZuiezJXP+2v4gMqwhWnoEVANQQZyQeXpJY0OzGqUYG38dH7A12X+A6oPEQAafeIuXid0kZI+DcN0yNhBzC7tE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371109893578.7310980069115; Wed, 13 May 2020 04:58:29 -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-75-xnVmi2lyN022wK-Rq3PQmw-1; Wed, 13 May 2020 07:58:26 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 38ADF108BD10; Wed, 13 May 2020 11:58:20 +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 148777D95A; Wed, 13 May 2020 11:58:20 +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 D5A401809563; Wed, 13 May 2020 11:58:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwFJe015973 for ; Wed, 13 May 2020 07:58:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id E16CC2166BA0; Wed, 13 May 2020 11:58:14 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DBE7F2166B27 for ; Wed, 13 May 2020 11:58:14 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B2D02811E77 for ; Wed, 13 May 2020 11:58:14 +0000 (UTC) Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-279-bjdz1__uO-6MD3JdUxlAUA-1; Wed, 13 May 2020 07:58:11 -0400 Received: by mail-wm1-f42.google.com with SMTP id y24so28194117wma.4 for ; Wed, 13 May 2020 04:58:11 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371108; 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=VwRP5wvJXmCzMQ0HlK0i7Bnq6nr0pgwjXkDYx6/goOI=; b=L4SCFSO5fMFFd1Fl3LnEkt6H7Kz2zB4uw99X3Y+KXnKMaFmeYxiSiYFZDsR5S/VIKMAhUc eUqQ/AR9yFpoza+ZyjaNcSU5yIZ70CJN8ctTrUJaHdGOSuywfTvd2FGQTbYYGlYBdvN05/ 85YsMaNgoJs1OXIHyqI4quMVxaSEA7s= X-MC-Unique: xnVmi2lyN022wK-Rq3PQmw-1 X-MC-Unique: bjdz1__uO-6MD3JdUxlAUA-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=VwRP5wvJXmCzMQ0HlK0i7Bnq6nr0pgwjXkDYx6/goOI=; b=Sek27UmAIzXhEnhlSheWxzbkMQNNCGBrCt34/QRTRe+NP+Nft5PgdAe1v65Zf5a3ld VBh8IpjXr2gb3kXQqMQs4meFHfW2qRx3UCIRYqcFnk4IVyi08Iois39bWvPsqCIiP/3d EaYkkV5dEBRhinC+63/Ya135ORCktDNJrJV1NFHhwwFcXdlbUouLA8C3ngKqn1rVLnrv zF1QUd1AjVZwlyzynFEpfv6qRaN/xlf+hCO5JOe9n5HsgtwepTC1BsYBtrWCVtIztw2R RD0tSXkDfKjuMa+8J6tB4QyBEGKfufc/p8dsQha8BuNyiqqwZCFx71Gr0mMKZ2lGYaZX XVOw== X-Gm-Message-State: AGi0PuZxAI9qPrCDxtdlwHq2hboxLmYXY8Ul8HDP0R19QiN1q04BfoCY chV6GqIkWvSlVDBJBo7oYjCVMEqX X-Google-Smtp-Source: APiQypIS69RXDheZGEjzcn/gZKYIAnACxaSx7b1WPJDYJTG6p0ABWIZ3K9t9WIpCthBaIYjoh7/W2A== X-Received: by 2002:a05:600c:21c1:: with SMTP id x1mr13055195wmj.173.1589371089371; Wed, 13 May 2020 04:58:09 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 06/40] rpc: convert virNetServerProgram to GObject Date: Wed, 13 May 2020 13:56:50 +0200 Message-Id: <20200513115724.157687-7-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 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/locking/lock_daemon.c | 28 ++++++---------- src/logging/log_daemon.c | 28 ++++++---------- src/lxc/lxc_controller.c | 11 +++--- src/remote/remote_daemon.c | 52 ++++++++++------------------- src/remote/remote_daemon_dispatch.c | 18 +++++----- src/remote/remote_daemon_stream.c | 4 +-- src/rpc/virnetserver.c | 14 ++++---- src/rpc/virnetserverprogram.c | 30 +++++------------ src/rpc/virnetserverprogram.h | 10 ++++-- 9 files changed, 77 insertions(+), 118 deletions(-) diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index b0cd89375b..c4faf3349d 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -859,8 +859,8 @@ virLockDaemonUsage(const char *argv0, bool privileged) int main(int argc, char **argv) { virNetServerPtr lockSrv =3D NULL; virNetServerPtr adminSrv =3D NULL; - virNetServerProgramPtr lockProgram =3D NULL; - virNetServerProgramPtr adminProgram =3D NULL; + g_autoptr(virNetServerProgram) lockProgram =3D NULL; + g_autoptr(virNetServerProgram) adminProgram =3D NULL; char *remote_config_file =3D NULL; int statuswrite =3D -1; int ret =3D 1; @@ -1133,13 +1133,10 @@ int main(int argc, char **argv) { goto cleanup; } =20 - if (!(lockProgram =3D virNetServerProgramNew(VIR_LOCK_SPACE_PROTOCOL_P= ROGRAM, - VIR_LOCK_SPACE_PROTOCOL_PRO= GRAM_VERSION, - virLockSpaceProtocolProcs, - virLockSpaceProtocolNProcs)= )) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + lockProgram =3D virNetServerProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM, + VIR_LOCK_SPACE_PROTOCOL_PROGRAM_V= ERSION, + virLockSpaceProtocolProcs, + virLockSpaceProtocolNProcs); =20 if (virNetServerAddProgram(lockSrv, lockProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; @@ -1147,13 +1144,10 @@ int main(int argc, char **argv) { } =20 if (adminSrv !=3D NULL) { - if (!(adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, - ADMIN_PROTOCOL_VERSION, - adminProcs, - adminNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, + ADMIN_PROTOCOL_VERSION, + adminProcs, + adminNProcs); if (virNetServerAddProgram(adminSrv, adminProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; @@ -1190,8 +1184,6 @@ int main(int argc, char **argv) { ret =3D 0; =20 cleanup: - virObjectUnref(lockProgram); - virObjectUnref(adminProgram); virObjectUnref(lockSrv); virObjectUnref(adminSrv); virLockDaemonFree(lockDaemon); diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c index 7017db2dcc..40cfae9ae8 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -640,8 +640,8 @@ virLogDaemonUsage(const char *argv0, bool privileged) int main(int argc, char **argv) { virNetServerPtr logSrv =3D NULL; virNetServerPtr adminSrv =3D NULL; - virNetServerProgramPtr logProgram =3D NULL; - virNetServerProgramPtr adminProgram =3D NULL; + g_autoptr(virNetServerProgram) logProgram =3D NULL; + g_autoptr(virNetServerProgram) adminProgram =3D NULL; char *remote_config_file =3D NULL; int statuswrite =3D -1; int ret =3D 1; @@ -915,26 +915,20 @@ int main(int argc, char **argv) { goto cleanup; } =20 - if (!(logProgram =3D virNetServerProgramNew(VIR_LOG_MANAGER_PROTOCOL_P= ROGRAM, - VIR_LOG_MANAGER_PROTOCOL_PRO= GRAM_VERSION, - virLogManagerProtocolProcs, - virLogManagerProtocolNProcs)= )) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + logProgram =3D virNetServerProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRAM, + VIR_LOG_MANAGER_PROTOCOL_PROGRAM_V= ERSION, + virLogManagerProtocolProcs, + virLogManagerProtocolNProcs); if (virNetServerAddProgram(logSrv, logProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; } =20 if (adminSrv !=3D NULL) { - if (!(adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, - ADMIN_PROTOCOL_VERSION, - adminProcs, - adminNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, + ADMIN_PROTOCOL_VERSION, + adminProcs, + adminNProcs); if (virNetServerAddProgram(adminSrv, adminProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; @@ -970,8 +964,6 @@ int main(int argc, char **argv) { ret =3D 0; =20 cleanup: - virObjectUnref(logProgram); - virObjectUnref(adminProgram); virObjectUnref(logSrv); virObjectUnref(adminSrv); virLogDaemonFree(logDaemon); diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 43f75d639a..f078c1c425 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -316,6 +316,7 @@ static void virLXCControllerFree(virLXCControllerPtr ct= rl) VIR_FREE(ctrl->nsFDs); virCgroupFree(&ctrl->cgroup); =20 + g_clear_object(&ctrl->prog); /* This must always be the last thing to be closed */ VIR_FORCE_CLOSE(ctrl->handshakeFd); VIR_FREE(ctrl); @@ -991,11 +992,10 @@ static int virLXCControllerSetupServer(virLXCControll= erPtr ctrl) virObjectUnref(svc); svc =3D NULL; =20 - if (!(ctrl->prog =3D virNetServerProgramNew(VIR_LXC_MONITOR_PROGRAM, - VIR_LXC_MONITOR_PROGRAM_VERS= ION, - virLXCMonitorProcs, - virLXCMonitorNProcs))) - goto error; + ctrl->prog =3D virNetServerProgramNew(VIR_LXC_MONITOR_PROGRAM, + VIR_LXC_MONITOR_PROGRAM_VERSION, + virLXCMonitorProcs, + virLXCMonitorNProcs); =20 if (!(ctrl->daemon =3D virNetDaemonNew()) || virNetDaemonAddServer(ctrl->daemon, srv) < 0) @@ -1007,6 +1007,7 @@ static int virLXCControllerSetupServer(virLXCControll= erPtr ctrl) =20 error: VIR_FREE(sockpath); + g_clear_object(&ctrl->prog); virObjectUnref(srv); virObjectUnref(ctrl->daemon); ctrl->daemon =3D NULL; diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c index 1aa9bfc0d2..e015034333 100644 --- a/src/remote/remote_daemon.c +++ b/src/remote/remote_daemon.c @@ -760,8 +760,8 @@ int main(int argc, char **argv) { virNetDaemonPtr dmn =3D NULL; virNetServerPtr srv =3D NULL; virNetServerPtr srvAdm =3D NULL; - virNetServerProgramPtr adminProgram =3D NULL; - virNetServerProgramPtr lxcProgram =3D NULL; + g_autoptr(virNetServerProgram) adminProgram =3D NULL; + g_autoptr(virNetServerProgram) lxcProgram =3D NULL; char *remote_config_file =3D NULL; int statuswrite =3D -1; int ret =3D 1; @@ -1038,37 +1038,28 @@ int main(int argc, char **argv) { remoteProcs[REMOTE_PROC_AUTH_SASL_STEP].needAuth =3D false; remoteProcs[REMOTE_PROC_AUTH_SASL_START].needAuth =3D false; remoteProcs[REMOTE_PROC_AUTH_POLKIT].needAuth =3D false; - if (!(remoteProgram =3D virNetServerProgramNew(REMOTE_PROGRAM, - REMOTE_PROTOCOL_VERSION, - remoteProcs, - remoteNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + remoteProgram =3D virNetServerProgramNew(REMOTE_PROGRAM, + REMOTE_PROTOCOL_VERSION, + remoteProcs, + remoteNProcs); if (virNetServerAddProgram(srv, remoteProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; } =20 - if (!(lxcProgram =3D virNetServerProgramNew(LXC_PROGRAM, - LXC_PROTOCOL_VERSION, - lxcProcs, - lxcNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + lxcProgram =3D virNetServerProgramNew(LXC_PROGRAM, + LXC_PROTOCOL_VERSION, + lxcProcs, + lxcNProcs); if (virNetServerAddProgram(srv, lxcProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; } =20 - if (!(qemuProgram =3D virNetServerProgramNew(QEMU_PROGRAM, - QEMU_PROTOCOL_VERSION, - qemuProcs, - qemuNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + qemuProgram =3D virNetServerProgramNew(QEMU_PROGRAM, + QEMU_PROTOCOL_VERSION, + qemuProcs, + qemuNProcs); if (virNetServerAddProgram(srv, qemuProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; @@ -1095,13 +1086,10 @@ int main(int argc, char **argv) { goto cleanup; } =20 - if (!(adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, - ADMIN_PROTOCOL_VERSION, - adminProcs, - adminNProcs))) { - ret =3D VIR_DAEMON_ERR_INIT; - goto cleanup; - } + adminProgram =3D virNetServerProgramNew(ADMIN_PROGRAM, + ADMIN_PROTOCOL_VERSION, + adminProcs, + adminNProcs); if (virNetServerAddProgram(srvAdm, adminProgram) < 0) { ret =3D VIR_DAEMON_ERR_INIT; goto cleanup; @@ -1213,11 +1201,7 @@ int main(int argc, char **argv) { virStateCleanup(); } =20 - virObjectUnref(adminProgram); virObjectUnref(srvAdm); - virObjectUnref(qemuProgram); - virObjectUnref(lxcProgram); - virObjectUnref(remoteProgram); virObjectUnref(srv); virObjectUnref(dmn); =20 diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 6f67d2fb30..3b016636e0 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -150,7 +150,7 @@ remoteEventCallbackFree(void *opaque) daemonClientEventCallbackPtr callback =3D opaque; if (!callback) return; - virObjectUnref(callback->program); + g_clear_object(&callback->program); virObjectUnref(callback->client); VIR_FREE(callback); } @@ -4255,7 +4255,7 @@ remoteDispatchConnectDomainEventRegister(virNetServer= Ptr server G_GNUC_UNUSED, if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D VIR_DOMAIN_EVENT_ID_LIFECYCLE; callback->callbackID =3D -1; callback->legacy =3D true; @@ -4484,7 +4484,7 @@ remoteDispatchConnectDomainEventRegisterAny(virNetSer= verPtr server G_GNUC_UNUSED if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; callback->legacy =3D true; @@ -4560,7 +4560,7 @@ remoteDispatchConnectDomainEventCallbackRegisterAny(v= irNetServerPtr server G_GNU if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; ref =3D callback; @@ -6043,7 +6043,7 @@ remoteDispatchConnectNetworkEventRegisterAny(virNetSe= rverPtr server G_GNUC_UNUSE if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; ref =3D callback; @@ -6164,7 +6164,7 @@ remoteDispatchConnectStoragePoolEventRegisterAny(virN= etServerPtr server G_GNUC_U if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; ref =3D callback; @@ -6284,7 +6284,7 @@ remoteDispatchConnectNodeDeviceEventRegisterAny(virNe= tServerPtr server G_GNUC_UN if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; ref =3D callback; @@ -6404,7 +6404,7 @@ remoteDispatchConnectSecretEventRegisterAny(virNetSer= verPtr server G_GNUC_UNUSED if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(remoteProgram); + callback->program =3D g_object_ref(remoteProgram); callback->eventID =3D args->eventID; callback->callbackID =3D -1; ref =3D callback; @@ -6519,7 +6519,7 @@ qemuDispatchConnectDomainMonitorEventRegister(virNetS= erverPtr server G_GNUC_UNUS if (VIR_ALLOC(callback) < 0) goto cleanup; callback->client =3D virObjectRef(client); - callback->program =3D virObjectRef(qemuProgram); + callback->program =3D g_object_ref(qemuProgram); callback->eventID =3D -1; callback->callbackID =3D -1; ref =3D callback; diff --git a/src/remote/remote_daemon_stream.c b/src/remote/remote_daemon_s= tream.c index 73e4d7befb..62bc9e0f5b 100644 --- a/src/remote/remote_daemon_stream.c +++ b/src/remote/remote_daemon_stream.c @@ -367,7 +367,7 @@ daemonCreateClientStream(virNetServerClientPtr client, =20 stream->refs =3D 1; stream->priv =3D priv; - stream->prog =3D virObjectRef(prog); + stream->prog =3D g_object_ref(prog); stream->procedure =3D header->proc; stream->serial =3D header->serial; stream->filterID =3D -1; @@ -399,7 +399,7 @@ int daemonFreeClientStream(virNetServerClientPtr client, VIR_DEBUG("client=3D%p, proc=3D%d, serial=3D%u", client, stream->procedure, stream->serial); =20 - virObjectUnref(stream->prog); + g_clear_object(&stream->prog); =20 msg =3D stream->rx; while (msg) { diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index e0a23867f6..15be0275e6 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -154,13 +154,13 @@ static void virNetServerHandleJob(void *jobOpaque, vo= id *opaque) if (virNetServerProcessMsg(srv, job->client, job->prog, job->msg) < 0) goto error; =20 - virObjectUnref(job->prog); + g_clear_object(&job->prog); virObjectUnref(job->client); VIR_FREE(job); return; =20 error: - virObjectUnref(job->prog); + g_clear_object(&job->prog); virNetMessageFree(job->msg); virNetServerClientClose(job->client); virObjectUnref(job->client); @@ -218,14 +218,14 @@ virNetServerDispatchNewMessage(virNetServerClientPtr = client, job->msg =3D msg; =20 if (prog) { - job->prog =3D virObjectRef(prog); + job->prog =3D g_object_ref(prog); priority =3D virNetServerProgramGetPriority(prog, msg->header.= proc); } =20 if (virThreadPoolSendJob(srv->workers, priority, job) < 0) { virObjectUnref(client); VIR_FREE(job); - virObjectUnref(prog); + g_clear_object(&prog); goto error; } } else { @@ -826,7 +826,7 @@ int virNetServerAddProgram(virNetServerPtr srv, if (VIR_EXPAND_N(srv->programs, srv->nprograms, 1) < 0) goto error; =20 - srv->programs[srv->nprograms-1] =3D virObjectRef(prog); + srv->programs[srv->nprograms-1] =3D g_object_ref(prog); =20 virObjectUnlock(srv); return 0; @@ -918,9 +918,7 @@ void virNetServerDispose(void *obj) virObjectUnref(srv->services[i]); VIR_FREE(srv->services); =20 - for (i =3D 0; i < srv->nprograms; i++) - virObjectUnref(srv->programs[i]); - VIR_FREE(srv->programs); + virGObjectListFreeCount(srv->programs, srv->nprograms); =20 for (i =3D 0; i < srv->nclients; i++) virObjectUnref(srv->clients[i]); diff --git a/src/rpc/virnetserverprogram.c b/src/rpc/virnetserverprogram.c index 8df92fb8df..119c9d01c1 100644 --- a/src/rpc/virnetserverprogram.c +++ b/src/rpc/virnetserverprogram.c @@ -35,7 +35,7 @@ VIR_LOG_INIT("rpc.netserverprogram"); =20 struct _virNetServerProgram { - virObject parent; + GObject parent; =20 unsigned program; unsigned version; @@ -44,32 +44,23 @@ struct _virNetServerProgram { }; =20 =20 -static virClassPtr virNetServerProgramClass; -static void virNetServerProgramDispose(void *obj); +G_DEFINE_TYPE(virNetServerProgram, vir_net_server_program, G_TYPE_OBJECT); =20 -static int virNetServerProgramOnceInit(void) +static void vir_net_server_program_init(virNetServerProgram *prog G_GNUC_U= NUSED) { - if (!VIR_CLASS_NEW(virNetServerProgram, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virNetServerProgram); - +static void vir_net_server_program_class_init(virNetServerProgramClass *kl= ass G_GNUC_UNUSED) +{ +} =20 virNetServerProgramPtr virNetServerProgramNew(unsigned program, unsigned version, virNetServerProgramProcPtr p= rocs, size_t nprocs) { - virNetServerProgramPtr prog; - - if (virNetServerProgramInitialize() < 0) - return NULL; - - if (!(prog =3D virObjectNew(virNetServerProgramClass))) - return NULL; + virNetServerProgramPtr prog =3D + VIR_NET_SERVER_PROGRAM(g_object_new(VIR_TYPE_NET_SERVER_PROGRAM, N= ULL)); =20 prog->program =3D program; prog->version =3D version; @@ -567,8 +558,3 @@ int virNetServerProgramSendStreamHole(virNetServerProgr= amPtr prog, =20 return virNetServerClientSendMessage(client, msg); } - - -void virNetServerProgramDispose(void *obj G_GNUC_UNUSED) -{ -} diff --git a/src/rpc/virnetserverprogram.h b/src/rpc/virnetserverprogram.h index 851bbf0183..bcc10809d4 100644 --- a/src/rpc/virnetserverprogram.h +++ b/src/rpc/virnetserverprogram.h @@ -23,7 +23,8 @@ =20 #include "virnetmessage.h" #include "virnetserverclient.h" -#include "virobject.h" +#include "internal.h" +#include =20 typedef struct _virNetDaemon virNetDaemon; typedef virNetDaemon *virNetDaemonPtr; @@ -31,7 +32,12 @@ typedef virNetDaemon *virNetDaemonPtr; typedef struct _virNetServerService virNetServerService; typedef virNetServerService *virNetServerServicePtr; =20 -typedef struct _virNetServerProgram virNetServerProgram; +#define VIR_TYPE_NET_SERVER_PROGRAM vir_net_server_program_get_type() +G_DECLARE_FINAL_TYPE(virNetServerProgram, + vir_net_server_program, + VIR, + NET_SERVER_PROGRAM, + GObject); typedef virNetServerProgram *virNetServerProgramPtr; =20 typedef struct _virNetServerProgramProc virNetServerProgramProc; --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371112; cv=none; d=zohomail.com; s=zohoarc; b=fR30St1SBuEpeCIfb5zNITSdX3ZTvAOSyJLix0xo8ppnIVgO/D65B2mq1KH+j45sWn0gvR2ebV5Zzy0w+NGljbaDUILLgjU3ZTXGoTro2Ew4NxboP7jwvcUjRONthxH3RXPWhp9Fs4k/wdba0MLIEPpq2OThZspCtd/qVhf2Dv8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371112; 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=5fAT0t1vClZ3gCk15dpo6M1xh829YDoenWTDNir6nmU=; b=A3fWiQvgvXrxLYtzeoysVzgDkYvkt7xNqyVqUFeR5rzP+mCpqBuJLZgrJKpV3XQHsKjiD16FF+rmYxE26ctUx1Mve36gJTdfrEPlCgBtvM88A3zWBErVVNnqGUipex4Dg+5660An+ASxskdKXNeiG9A4UZtw4WFeFm+pu1QnqIc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371112877303.30971433116304; Wed, 13 May 2020 04:58:32 -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-271-HknAOjOsM-29fIuCP2pR3w-1; Wed, 13 May 2020 07:58:29 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7F3CD8018AB; Wed, 13 May 2020 11:58:21 +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 5B5C32E187; Wed, 13 May 2020 11:58:21 +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 2A4154E586; Wed, 13 May 2020 11:58:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwFWC015974 for ; Wed, 13 May 2020 07:58:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2489D5EDD7; Wed, 13 May 2020 11:58:15 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1F4F9110EB4 for ; Wed, 13 May 2020 11:58:15 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0032C80CDB4 for ; Wed, 13 May 2020 11:58:15 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-463-xFa6cVjtP96qGYPi6yIRCA-1; Wed, 13 May 2020 07:58:12 -0400 Received: by mail-wr1-f65.google.com with SMTP id v12so20498289wrp.12 for ; Wed, 13 May 2020 04:58:12 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371111; 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=5fAT0t1vClZ3gCk15dpo6M1xh829YDoenWTDNir6nmU=; b=gTrSUE/4SGtRNoF/6l/AsMSG9zMrwrgIVUTjSUGPSEphR0KOi8s78cnI9dK/k009mTlOW0 t9SeD2RrTAU2uCmpF3fKts+9nmDd6mB4pFk25CxUGvthovzv1VPVIl2Avo5ui9z+Jq0kXP YUx5/L+UZrerLfgZRJxZwnS7UHMx1yw= X-MC-Unique: HknAOjOsM-29fIuCP2pR3w-1 X-MC-Unique: xFa6cVjtP96qGYPi6yIRCA-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=5fAT0t1vClZ3gCk15dpo6M1xh829YDoenWTDNir6nmU=; b=eRx5KkZ27PmHSY9uQKY6o649JlFHvllmJ6ijX4KbRsBtGM96aRyNp1cl9pKM/2uxTo ggEQxHvBr+yeYGPE1VsrpfSyHMnq2SIdc9oquoUvd78LVnL9cLcFKcix/LTh0g0foOMF 2w1Yf/UEUlY6DdWPgdFf46ZT8CyutE4htnJOOIpaUThfj6dC2c/KFB8kVe0wTpU4ZqX2 KOezkret5nunfgz1NfnRRM9fGqzYAqVlAwkH64+QGz7Pmpdj/uiCaKM57yEI8bMxMwC4 uwrMFjvrXePlk93cAlJZmmgQV4HfeRP05cgK5SFKwcqzQk/uWfiFxhyLwvzfurF2TFlG HkoA== X-Gm-Message-State: AOAM531eJ2+IQu43dacbwxznBkGIwXD1gbxkNCuQKznVQAkcS6hPsxLV PTgU/Ai9NQz+UyeSRcLhqm0ZK1lk X-Google-Smtp-Source: ABdhPJyowLW0xwayLtqJnEbvpHE0Of2R+l1LxDbZnnxfcdOASXnv7oiw2EgCDvFp+2kZAIZxD1EaXw== X-Received: by 2002:a5d:4e4d:: with SMTP id r13mr10118205wrt.122.1589371090892; Wed, 13 May 2020 04:58:10 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 07/40] conf: convert virDomainXMLOption to GObject Date: Wed, 13 May 2020 13:56:51 +0200 Message-Id: <20200513115724.157687-8-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.84 on 10.5.11.23 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/bhyve/bhyve_driver.c | 2 +- src/conf/domain_conf.c | 29 +++++++++++++++++++---------- src/conf/domain_conf.h | 9 +++++++++ src/esx/esx_driver.c | 2 +- src/libvirt_private.syms | 1 + src/libxl/libxl_driver.c | 2 +- src/lxc/lxc_controller.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/openvz/openvz_conf.c | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_process.c | 15 +++++---------- src/security/virt-aa-helper.c | 2 +- src/test/test_driver.c | 2 +- src/vbox/vbox_common.c | 2 +- src/vmware/vmware_conf.c | 2 +- src/vz/vz_driver.c | 2 +- tests/bhyveargv2xmltest.c | 2 +- tests/bhyvexml2argvtest.c | 2 +- tests/bhyvexml2xmltest.c | 2 +- tests/domainconftest.c | 2 +- tests/genericxml2xmltest.c | 2 +- tests/openvzutilstest.c | 2 +- tests/testutilslxc.c | 2 +- tests/testutilsqemu.c | 2 +- tests/testutilsxen.c | 2 +- tests/vmx2xmltest.c | 2 +- tests/xml2vmxtest.c | 4 ++-- 27 files changed, 58 insertions(+), 44 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index bbaf6ea1f5..6a37c7973b 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1182,7 +1182,7 @@ bhyveStateCleanup(void) =20 virObjectUnref(bhyve_driver->domains); g_clear_object(&bhyve_driver->caps); - virObjectUnref(bhyve_driver->xmlopt); + g_clear_object(&bhyve_driver->xmlopt); virSysinfoDefFree(bhyve_driver->hostsysinfo); virObjectUnref(bhyve_driver->closeCallbacks); virObjectUnref(bhyve_driver->domainEventState); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 301b4b0d84..62f49a598a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -70,7 +70,7 @@ VIR_LOG_INIT("conf.domain_conf"); /* This structure holds various callbacks and data needed * while parsing and creating domain XMLs */ struct _virDomainXMLOption { - virObject parent; + GObject parent; =20 /* XML parser callbacks and defaults */ virDomainDefParserConfig config; @@ -1324,18 +1324,26 @@ VIR_ENUM_IMPL(virDomainLaunchSecurity, ); =20 static virClassPtr virDomainObjClass; -static virClassPtr virDomainXMLOptionClass; static void virDomainObjDispose(void *obj); -static void virDomainXMLOptionDispose(void *obj); +G_DEFINE_TYPE(virDomainXMLOption, vir_domain_xml_option, G_TYPE_OBJECT); +static void virDomainXMLOptionFinalize(GObject *obj); + +static void vir_domain_xml_option_init(virDomainXMLOption *option G_GNUC_U= NUSED) +{ +} + +static void vir_domain_xml_option_class_init(virDomainXMLOptionClass *klas= s) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virDomainXMLOptionFinalize; +} =20 static int virDomainObjOnceInit(void) { if (!VIR_CLASS_NEW(virDomainObj, virClassForObjectLockable())) return -1; =20 - if (!VIR_CLASS_NEW(virDomainXMLOption, virClassForObject())) - return -1; - return 0; } =20 @@ -1343,12 +1351,14 @@ VIR_ONCE_GLOBAL_INIT(virDomainObj); =20 =20 static void -virDomainXMLOptionDispose(void *obj) +virDomainXMLOptionFinalize(GObject *obj) { - virDomainXMLOptionPtr xmlopt =3D obj; + virDomainXMLOptionPtr xmlopt =3D VIR_DOMAIN_XML_OPTION(obj); =20 if (xmlopt->config.privFree) (xmlopt->config.privFree)(xmlopt->config.priv); + + G_OBJECT_CLASS(vir_domain_xml_option_parent_class)->finalize(obj); } =20 /** @@ -1475,8 +1485,7 @@ virDomainXMLOptionNew(virDomainDefParserConfigPtr con= fig, if (virDomainObjInitialize() < 0) return NULL; =20 - if (!(xmlopt =3D virObjectNew(virDomainXMLOptionClass))) - return NULL; + xmlopt =3D VIR_DOMAIN_XML_OPTION(g_object_new(VIR_TYPE_DOMAIN_XML_OPTI= ON, NULL)); =20 if (priv) xmlopt->privateData =3D *priv; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index ddc75d8de2..20fc734e06 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -58,6 +58,8 @@ #include "virresctrl.h" #include "virenum.h" =20 +#include + /* Flags for the 'type' field in virDomainDeviceDef */ typedef enum { VIR_DOMAIN_DEVICE_NONE =3D 0, @@ -2876,6 +2878,13 @@ struct _virDomainABIStability { virDomainABIStabilityDomain domain; }; =20 +#define VIR_TYPE_DOMAIN_XML_OPTION vir_domain_xml_option_get_type() +G_DECLARE_FINAL_TYPE(virDomainXMLOption, + vir_domain_xml_option, + VIR, + DOMAIN_XML_OPTION, + GObject); + virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr co= nfig, virDomainXMLPrivateDataCallbac= ksPtr priv, virXMLNamespacePtr xmlns, diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 39412f746a..42f6ab9392 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -70,7 +70,7 @@ esxFreePrivate(esxPrivate **priv) esxVI_Context_Free(&(*priv)->vCenter); esxUtil_FreeParsedUri(&(*priv)->parsedUri); g_clear_object(&(*priv)->caps); - virObjectUnref((*priv)->xmlopt); + g_clear_object(&(*priv)->xmlopt); VIR_FREE(*priv); } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 88fdc1a3a8..ed7813ce0e 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -219,6 +219,7 @@ virSEVCapabilitiesFree; =20 =20 # conf/domain_conf.h +vir_domain_xml_option_get_type; virBlkioDeviceArrayClear; virDiskNameParse; virDiskNameToBusDeviceIndex; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 63ec0a2188..0e465f7d05 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -507,7 +507,7 @@ libxlStateCleanup(void) return -1; =20 virObjectUnref(libxl_driver->hostdevMgr); - virObjectUnref(libxl_driver->xmlopt); + g_clear_object(&libxl_driver->xmlopt); virObjectUnref(libxl_driver->domains); virPortAllocatorRangeFree(libxl_driver->reservedGraphicsPorts); virPortAllocatorRangeFree(libxl_driver->migrationPorts); diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index f078c1c425..0aa56f6d24 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -180,7 +180,7 @@ virLXCControllerDriverFree(virLXCDriverPtr driver) { if (!driver) return; - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); g_clear_object(&driver->caps); virMutexDestroy(&driver->lock); g_free(driver); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index b76e2a4f15..c34bcd5397 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1614,7 +1614,7 @@ static int lxcStateCleanup(void) virObjectUnref(lxc_driver->hostdevMgr); g_clear_object(&lxc_driver->caps); virObjectUnref(lxc_driver->securityManager); - virObjectUnref(lxc_driver->xmlopt); + g_clear_object(&lxc_driver->xmlopt); =20 if (lxc_driver->lockFD !=3D -1) virPidFileRelease(lxc_driver->config->stateDir, "driver", lxc_driv= er->lockFD); diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 0d11d71dfd..474f75840f 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -479,7 +479,7 @@ openvzFreeDriver(struct openvz_driver *driver) if (!driver) return; =20 - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); virObjectUnref(driver->domains); g_clear_object(&driver->caps); VIR_FREE(driver); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e5b34b1f98..13d3948bd6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1121,7 +1121,7 @@ qemuStateCleanup(void) virObjectUnref(qemu_driver->securityManager); virObjectUnref(qemu_driver->domainEventState); virObjectUnref(qemu_driver->qemuCapsCache); - virObjectUnref(qemu_driver->xmlopt); + g_clear_object(&qemu_driver->xmlopt); virCPUDefFree(qemu_driver->hostcpu); virCapabilitiesHostNUMAUnref(qemu_driver->hostnuma); g_clear_object(&qemu_driver->caps); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 57700438e9..0d9a83ab89 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8560,9 +8560,8 @@ qemuProcessQMPInitMonitor(qemuMonitorPtr mon) static int qemuProcessQMPConnectMonitor(qemuProcessQMPPtr proc) { - virDomainXMLOptionPtr xmlopt =3D NULL; + g_autoptr(virDomainXMLOption) xmlopt =3D NULL; virDomainChrSourceDef monConfig; - int ret =3D -1; =20 VIR_DEBUG("proc=3D%p, emulator=3D%s, proc->pid=3D%lld", proc, proc->binary, (long long)proc->pid); @@ -8574,25 +8573,21 @@ qemuProcessQMPConnectMonitor(qemuProcessQMPPtr proc) if (!(xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NULL)) = || !(proc->vm =3D virDomainObjNew(xmlopt)) || !(proc->vm->def =3D virDomainDefNew())) - goto cleanup; + return -1; =20 proc->vm->pid =3D proc->pid; =20 if (!(proc->mon =3D qemuMonitorOpen(proc->vm, &monConfig, true, 0, virEventThreadGetContext(proc->event= Thread), &callbacks, NULL))) - goto cleanup; + return -1; =20 virObjectLock(proc->mon); =20 if (qemuProcessQMPInitMonitor(proc->mon) < 0) - goto cleanup; - - ret =3D 0; + return -1; =20 - cleanup: - virObjectUnref(xmlopt); - return ret; + return 0; } =20 =20 diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 370efd8dd1..d8e4ef9111 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -80,7 +80,7 @@ vahDeinit(vahControl * ctl) =20 VIR_FREE(ctl->def); g_clear_object(&ctl->caps); - virObjectUnref(ctl->xmlopt); + g_clear_object(&ctl->xmlopt); VIR_FREE(ctl->files); VIR_FREE(ctl->virtType); VIR_FREE(ctl->os); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index d824d12baf..d1e9b6cd49 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -159,7 +159,7 @@ testDriverDispose(void *obj) size_t i; =20 g_clear_object(&driver->caps); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); virObjectUnref(driver->domains); virNodeDeviceObjListFree(driver->devs); virObjectUnref(driver->networks); diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index febf843cd5..7ca314d0dc 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -123,7 +123,7 @@ vboxDriverDispose(void *obj) vboxDriverPtr driver =3D obj; =20 g_clear_object(&driver->caps); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); } =20 static int diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 017df7237f..1779edaf68 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -55,7 +55,7 @@ vmwareFreeDriver(struct vmware_driver *driver) virMutexDestroy(&driver->lock); virObjectUnref(driver->domains); g_clear_object(&driver->caps); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); VIR_FREE(driver->vmrun); VIR_FREE(driver); } diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 85dac9a682..4fe072233e 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -149,7 +149,7 @@ static void vzDriverDispose(void * obj) prlsdkDisconnect(driver); virObjectUnref(driver->domains); g_clear_object(&driver->caps); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); virObjectUnref(driver->domainEventState); virSysinfoDefFree(driver->hostsysinfo); } diff --git a/tests/bhyveargv2xmltest.c b/tests/bhyveargv2xmltest.c index 3150c4583f..7abbf9a7fd 100644 --- a/tests/bhyveargv2xmltest.c +++ b/tests/bhyveargv2xmltest.c @@ -196,7 +196,7 @@ mymain(void) DO_TEST_FAIL("extraargs"); =20 g_clear_object(&driver.caps); - virObjectUnref(driver.xmlopt); + g_clear_object(&driver.xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 0429394246..0f2caa011b 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -250,7 +250,7 @@ mymain(void) DO_TEST_FAILURE("cputopology"); =20 g_clear_object(&driver.caps); - virObjectUnref(driver.xmlopt); + g_clear_object(&driver.xmlopt); virPortAllocatorRangeFree(driver.remotePorts); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 27b9abb204..782741aab7 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -128,7 +128,7 @@ mymain(void) DO_TEST_DIFFERENT("input-xhci-tablet"); =20 g_clear_object(&driver.caps); - virObjectUnref(driver.xmlopt); + g_clear_object(&driver.xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/domainconftest.c b/tests/domainconftest.c index 54fdd72c25..361628dcf4 100644 --- a/tests/domainconftest.c +++ b/tests/domainconftest.c @@ -104,7 +104,7 @@ mymain(void) DO_TEST_GET_FS("/doesnotexist", false); =20 g_clear_object(&caps); - virObjectUnref(xmlopt); + g_clear_object(&xmlopt); =20 cleanup: return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index a92f5dc613..139e2326ff 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -199,7 +199,7 @@ mymain(void) =20 =20 g_clear_object(&caps); - virObjectUnref(xmlopt); + g_clear_object(&xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/openvzutilstest.c b/tests/openvzutilstest.c index 124f17c3ce..00ed653835 100644 --- a/tests/openvzutilstest.c +++ b/tests/openvzutilstest.c @@ -131,7 +131,7 @@ testReadNetworkConf(const void *data G_GNUC_UNUSED) result =3D 0; =20 cleanup: - virObjectUnref(driver.xmlopt); + g_clear_object(&driver.xmlopt); g_clear_object(&driver.caps); VIR_FREE(actual); virDomainDefFree(def); diff --git a/tests/testutilslxc.c b/tests/testutilslxc.c index bffc3ba440..c871f3b920 100644 --- a/tests/testutilslxc.c +++ b/tests/testutilslxc.c @@ -76,7 +76,7 @@ testLXCDriverInit(void) void testLXCDriverFree(virLXCDriverPtr driver) { - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); g_clear_object(&driver->caps); virMutexDestroy(&driver->lock); g_free(driver); diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index ea0a89e902..396c069bd2 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -307,7 +307,7 @@ void qemuTestDriverFree(virQEMUDriver *driver) virFileDeleteTree(driver->config->configDir); } virObjectUnref(driver->qemuCapsCache); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); g_clear_object(&driver->caps); virObjectUnref(driver->config); virObjectUnref(driver->securityManager); diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index 7da90cdd1e..d680fe36e3 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -112,7 +112,7 @@ libxlDriverPrivatePtr testXLInitDriver(void) void testXLFreeDriver(libxlDriverPrivatePtr driver) { virObjectUnref(driver->config); - virObjectUnref(driver->xmlopt); + g_clear_object(&driver->xmlopt); virMutexDestroy(&driver->lock); g_free(driver); } diff --git a/tests/vmx2xmltest.c b/tests/vmx2xmltest.c index 613331cabc..07cb718f12 100644 --- a/tests/vmx2xmltest.c +++ b/tests/vmx2xmltest.c @@ -282,7 +282,7 @@ mymain(void) DO_TEST("datacenterpath", "datacenterpath"); =20 g_clear_object(&caps); - virObjectUnref(xmlopt); + g_clear_object(&xmlopt); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/xml2vmxtest.c b/tests/xml2vmxtest.c index 5d5fb8e69a..58e8adafcb 100644 --- a/tests/xml2vmxtest.c +++ b/tests/xml2vmxtest.c @@ -60,7 +60,7 @@ testCapsInit(void) =20 failure: g_clear_object(&caps); - virObjectUnref(xmlopt); + g_clear_object(&xmlopt); } =20 static int @@ -291,7 +291,7 @@ mymain(void) DO_TEST("datacenterpath", "datacenterpath", 4); =20 g_clear_object(&caps); - virObjectUnref(xmlopt); + g_clear_object(&xmlopt); =20 return result =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371117; cv=none; d=zohomail.com; s=zohoarc; b=Jwp55tNyuy6H4IngjQSy00ZV2wc8F/UmtCoHWcMzi+LHPbPt3scWsw/MAFtsaAF0qVIXoBucg8MM73ij9IwWs/19oAeXbReUdxHxePcQ8eN1aoaca9Oguv5rmAfK3vmriFAq+FTTLGpH7RUPftYOJdWPe7vrtXARlsC/jGE8FMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371117; 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=rDikbyxrWBNaUz0LdHSeYqGUSlPZN9D7MoH2zhht9nE=; b=H0lg2FfGPc7+sjCL5eILzPmqGT1Qi7dZrhHoGK1vvY5qd4bwEPwz7xA2eFJBwLrJGFOQhYmtdJB0MHxOA+978mSVTuQ/qbe/PFy8J3GsRtqTnC7hDzHCooVxlVGpqaYFMkaCE04Cp1nZ/mb9j77JZYmnhmocHB4DuvkiSsRht2g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 158937111756858.59458201661869; Wed, 13 May 2020 04:58:37 -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-285-wn5aY2VsNTeuS6891R4ZTg-1; Wed, 13 May 2020 07:58:32 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BDABE83DB3A; Wed, 13 May 2020 11:58:25 +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 9DE106E710; Wed, 13 May 2020 11:58:25 +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 69C70180599D; Wed, 13 May 2020 11:58:25 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwIjA016013 for ; Wed, 13 May 2020 07:58:19 -0400 Received: by smtp.corp.redhat.com (Postfix) id DD0E12028CD3; Wed, 13 May 2020 11:58:18 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D5F922026FFE for ; Wed, 13 May 2020 11:58:16 +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-mx02.redhat.com (Postfix) with ESMTPS id B30398007C8 for ; Wed, 13 May 2020 11:58:16 +0000 (UTC) Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-328-sOz_z7zYOneX4DjCNwysVA-1; Wed, 13 May 2020 07:58:14 -0400 Received: by mail-wr1-f54.google.com with SMTP id l18so20522691wrn.6 for ; Wed, 13 May 2020 04:58:13 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371116; 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=rDikbyxrWBNaUz0LdHSeYqGUSlPZN9D7MoH2zhht9nE=; b=IOWaRDbv/M0rege++dJ2yAI1C0p22GuGfA5XTnPU/3lVbBxeEE9rsV7MxkueWQ4cOq7hQ/ QhQqW36gprBZ9iGOrRo7t4MDJXlWwOC5HvIUHgVtLP+Ke8pAZAl+6swp3SsKTNnAfgQuKD xjgPoFS+Ny6N5GYOq4VwUytNFZn9DMI= X-MC-Unique: wn5aY2VsNTeuS6891R4ZTg-1 X-MC-Unique: sOz_z7zYOneX4DjCNwysVA-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=rDikbyxrWBNaUz0LdHSeYqGUSlPZN9D7MoH2zhht9nE=; b=SuafI7BSfqkT8AHFQK/CUtryWpFcaZ2+6q2bo/IYc+hg9n468OjDL0jloII+jCOzhI IQkx5ZQUSo1WS/ZS2SLhOVaFoxqVaiSkEBmD8F1oWyxFQGpQMnr3SLgFEGqgbxlNxg1k 6Y/mxRzAsc+8DUUzG9ba0N4+4OzLOpKwhKHqm+xdD2zWAXHDZnuOXL7lAAoMZxskCjiq w+WcNV5alQpBV7/MGH1B/2QyVDuY52a9T3zNpvLhQUVXyj5wWrxKvxvR7S0CRH7FFcCR LvLC4o596+eDG4GP4zB12/Gt7QLVuYupBtWcvy888yzxa8fr0VIzVdrfBiOk67Xyr2lp JMfw== X-Gm-Message-State: AGi0PuZOcdcpey6DfFYOFU5N0OZNcf2vmA+b8tKyyMpLRE5FbnkfEm4D ro0WuBgzxdDNffE+DQtzZcSUTuY9 X-Google-Smtp-Source: APiQypKLxf3lfc7kNd7meKo/8beUYt2EuGaYXqto35Sd2/B1vUgTE39EVSEYhlOIFGScaF26V6Cilg== X-Received: by 2002:adf:9d91:: with SMTP id p17mr23653695wre.119.1589371092669; Wed, 13 May 2020 04:58:12 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 08/40] bhyve: convert bhyveMonitor to GObject Date: Wed, 13 May 2020 13:56:52 +0200 Message-Id: <20200513115724.157687-9-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.15 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/bhyve/bhyve_monitor.c | 37 ++++++++++++++++++++----------------- src/bhyve/bhyve_monitor.h | 3 ++- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index e5cd39a086..20633cd320 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -39,7 +39,7 @@ VIR_LOG_INIT("bhyve.bhyve_monitor"); =20 struct _bhyveMonitor { - virObject parent; + GObject parent; =20 bhyveConnPtr driver; virDomainObjPtr vm; @@ -48,44 +48,48 @@ struct _bhyveMonitor { bool reboot; }; =20 -static virClassPtr bhyveMonitorClass; +G_DEFINE_TYPE(bhyveMonitor, bhyve_monitor, G_TYPE_OBJECT); =20 static void -bhyveMonitorDispose(void *obj) +bhyveMonitorFinalize(GObject *obj) { - bhyveMonitorPtr mon =3D obj; + bhyveMonitorPtr mon =3D BHYVE_MONITOR(obj); =20 VIR_FORCE_CLOSE(mon->kq); virObjectUnref(mon->vm); + + G_OBJECT_CLASS(bhyve_monitor_parent_class)->finalize(obj); } =20 -static int -bhyveMonitorOnceInit(void) +static void +bhyve_monitor_init(bhyveMonitor *mon G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(bhyveMonitor, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(bhyveMonitor); +static void +bhyve_monitor_class_init(bhyveMonitorClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D bhyveMonitorFinalize; +} =20 static void bhyveMonitorIO(int, int, int, void *); =20 static bool bhyveMonitorRegister(bhyveMonitorPtr mon) { - virObjectRef(mon); + g_object_ref(mon); mon->watch =3D virEventAddHandle(mon->kq, VIR_EVENT_HANDLE_READABLE | VIR_EVENT_HANDLE_ERROR | VIR_EVENT_HANDLE_HANGUP, bhyveMonitorIO, mon, - virObjectFreeCallback); + g_object_unref); if (mon->watch < 0) { VIR_DEBUG("failed to add event handle for mon %p", mon); - virObjectUnref(mon); + g_object_unref(mon); return false; } return true; @@ -181,8 +185,7 @@ bhyveMonitorOpenImpl(virDomainObjPtr vm, bhyveConnPtr d= river) if (bhyveMonitorInitialize() < 0) return NULL; =20 - if (!(mon =3D virObjectNew(bhyveMonitorClass))) - return NULL; + mon =3D BHYVE_MONITOR(g_object_new(BHYVE_TYPE_MONITOR, NULL)); =20 mon->driver =3D driver; mon->reboot =3D false; @@ -238,5 +241,5 @@ bhyveMonitorClose(bhyveMonitorPtr mon) VIR_DEBUG("cleaning up bhyveMonitor %p", mon); =20 bhyveMonitorUnregister(mon); - virObjectUnref(mon); + g_clear_object(&mon); } diff --git a/src/bhyve/bhyve_monitor.h b/src/bhyve/bhyve_monitor.h index 175cc87192..dcc6929696 100644 --- a/src/bhyve/bhyve_monitor.h +++ b/src/bhyve/bhyve_monitor.h @@ -24,7 +24,8 @@ #include "domain_conf.h" #include "bhyve_utils.h" =20 -typedef struct _bhyveMonitor bhyveMonitor; +#define BHYVE_TYPE_MONITOR bhyve_monitor_get_type() +G_DECLARE_FINAL_TYPE(bhyveMonitor, bhyve_monitor, BHYVE, MONITOR, GObject); typedef bhyveMonitor *bhyveMonitorPtr; =20 bhyveMonitorPtr bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr driver); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371113; cv=none; d=zohomail.com; s=zohoarc; b=oGTwVC5TYlKmA+IwAsucGp5+RMTo954pUru0OOxugrqEw7TwRhNLGUcAUWjl2HC9/7gqWHKXPZVfiVRgbgJAdMc0m5tqx+eGRdiI140T57q4a9kRumCsAlSkjt4/PzzcLYEL8VNZARVtX9/FSG0oVoYCWLoxmzywgzCB35EVzKg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371113; 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=hqpnFYElistFF11qT0J1TDQ95iG4jOxqGtdOFYdf4Lg=; b=hO465a7qC88A+Xiz/IKit4Ll3Nj2KZPTp8h73zvw0Vx0kE9V2j0nFXPNgfdliCk3dnmObxjvi1DUNRYvxnF2LKYqZ7fdWzKQ6RsW1uId/ZVLTChni5gT1CNkQ6HV0AjQTAs9nc+1AqCbixAF7ExdVvcMCnwsKUD9t+aQtJfpLtc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371113137841.43049399575; Wed, 13 May 2020 04:58:33 -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-307-2QDm7OlKMdCFbBnzAOWjbA-1; Wed, 13 May 2020 07:58:28 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4A087835B40; Wed, 13 May 2020 11:58:23 +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 2B94E7D95E; Wed, 13 May 2020 11:58:23 +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 EBCB21806B0B; Wed, 13 May 2020 11:58:22 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwIa4016002 for ; Wed, 13 May 2020 07:58:18 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0FF7A2157F23; Wed, 13 May 2020 11:58:18 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0AE742166B27 for ; Wed, 13 May 2020 11:58:18 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E5F101859172 for ; Wed, 13 May 2020 11:58:17 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-60-seoiwxhCMSyRE5R6XI48bA-1; Wed, 13 May 2020 07:58:15 -0400 Received: by mail-wr1-f65.google.com with SMTP id l17so6981120wrr.4 for ; Wed, 13 May 2020 04:58:15 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371111; 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=hqpnFYElistFF11qT0J1TDQ95iG4jOxqGtdOFYdf4Lg=; b=X6Onw2SKXSXkM1jE7sUiieuWn/6dORgVhQEAwkr/vQrPQklT9qMkLujvV05Ye6YlMiiWiG yW+tphDVFc2z1bOyXEa+zK5MrXUzVTViijX25XPk7E9LzYbt7CrURMDZF2x4TWKnIcbgp3 96opzk7ypRgqQbJRib8jrE2MCiJaXag= X-MC-Unique: 2QDm7OlKMdCFbBnzAOWjbA-1 X-MC-Unique: seoiwxhCMSyRE5R6XI48bA-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=hqpnFYElistFF11qT0J1TDQ95iG4jOxqGtdOFYdf4Lg=; b=SjajE+Worp+AWoFoclhd2cS8rvYic0uU0T+fWXsmNkcHrYlDunpBpm31sTLAlvRynS +dHVzmfr5IMOnQFe0qTlfDV8rD7w+4cDjjnGVBjGeW8HWlYSLvd5TUL7MXb9I17VONmI vLNct/e/WdQ1IUisO00akJlDzBfKdLk6Kog/DwS45kAz9eCgoSBgOImE6ZsZIEnzi6cy 3plFI10mfwyc2rDLRcj30ABhi0f0RQG278dFgYaeRNtJwSZAolIYmBf8s/ElfHpUHBOv h4gq0Ex8btmUqnvZaCxpfG+qj1uz0Sk6wms17mis4FgNwaPmpdkXmkHb7SDFFMBxdr/o CYrA== X-Gm-Message-State: AGi0PuYiGSoLAWEMoP7crkhA2wZAAZr5uqkRYOb/dK1u0vU5P40dJTZ9 8199lyXZ0DyofvEYYgfE1Ub2Em9A X-Google-Smtp-Source: APiQypJIgmLx1zbJBpJ2xpgNbDq4+Zp2gNiG7MSVje4kHr/Io2KIF3QkNikDUvsc/KnnytfuAJbmmw== X-Received: by 2002:adf:f605:: with SMTP id t5mr30251087wrp.354.1589371093886; Wed, 13 May 2020 04:58:13 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 09/40] bhyve: convert virBhyveDriverConfig to GObject Date: Wed, 13 May 2020 13:56:53 +0200 Message-Id: <20200513115724.157687-10-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 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/bhyve/bhyve_capabilities.c | 3 +-- src/bhyve/bhyve_conf.c | 36 +++++++++++++++++----------------- src/bhyve/bhyve_driver.c | 2 +- src/bhyve/bhyve_utils.h | 11 +++++++++-- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 66442e50ba..00f7613594 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -131,7 +131,7 @@ virBhyveDomainCapsBuild(bhyveConnPtr conn, DIR *dir; struct dirent *entry; size_t firmwares_alloc =3D 0; - virBhyveDriverConfigPtr cfg =3D virBhyveDriverGetConfig(conn); + g_autoptr(virBhyveDriverConfig) cfg =3D virBhyveDriverGetConfig(conn); const char *firmware_dir =3D cfg->firmwareDir; virDomainCapsStringValuesPtr firmwares =3D NULL; =20 @@ -167,7 +167,6 @@ virBhyveDomainCapsBuild(bhyveConnPtr conn, cleanup: VIR_FREE(firmwares); VIR_DIR_CLOSE(dir); - virObjectUnref(cfg); return caps; } =20 diff --git a/src/bhyve/bhyve_conf.c b/src/bhyve/bhyve_conf.c index f3e2ebf7c7..85f170b1a7 100644 --- a/src/bhyve/bhyve_conf.c +++ b/src/bhyve/bhyve_conf.c @@ -32,29 +32,27 @@ =20 VIR_LOG_INIT("bhyve.bhyve_conf"); =20 -static virClassPtr virBhyveDriverConfigClass; -static void virBhyveDriverConfigDispose(void *obj); +G_DEFINE_TYPE(virBhyveDriverConfig, vir_bhyve_driver_config, G_TYPE_OBJECT= ); +static void virBhyveDriverConfigFinalize(GObject *obj); =20 -static int virBhyveConfigOnceInit(void) +static void +vir_bhyve_driver_config_init(virBhyveDriverConfig *cfg G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(virBhyveDriverConfig, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virBhyveConfig); +static void +vir_bhyve_driver_config_class_init(virBhyveDriverConfigClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virBhyveDriverConfigFinalize; +} =20 virBhyveDriverConfigPtr virBhyveDriverConfigNew(void) { - virBhyveDriverConfigPtr cfg; - - if (virBhyveConfigInitialize() < 0) - return NULL; - - if (!(cfg =3D virObjectNew(virBhyveDriverConfigClass))) - return NULL; + virBhyveDriverConfigPtr cfg =3D + VIR_BHYVE_DRIVER_CONFIG(g_object_new(VIR_TYPE_BHYVE_DRIVER_CONFIG,= NULL)); =20 cfg->firmwareDir =3D g_strdup(DATADIR "/uefi-firmware"); =20 @@ -87,17 +85,19 @@ virBhyveDriverGetConfig(bhyveConnPtr driver) { virBhyveDriverConfigPtr cfg; bhyveDriverLock(driver); - cfg =3D virObjectRef(driver->config); + cfg =3D g_object_ref(driver->config); bhyveDriverUnlock(driver); return cfg; } =20 static void -virBhyveDriverConfigDispose(void *obj) +virBhyveDriverConfigFinalize(GObject *obj) { - virBhyveDriverConfigPtr cfg =3D obj; + virBhyveDriverConfigPtr cfg =3D VIR_BHYVE_DRIVER_CONFIG(obj); =20 VIR_FREE(cfg->firmwareDir); + + G_OBJECT_CLASS(vir_bhyve_driver_config_parent_class)->finalize(obj); } =20 void diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 6a37c7973b..2bdffe0b63 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1186,7 +1186,7 @@ bhyveStateCleanup(void) virSysinfoDefFree(bhyve_driver->hostsysinfo); virObjectUnref(bhyve_driver->closeCallbacks); virObjectUnref(bhyve_driver->domainEventState); - virObjectUnref(bhyve_driver->config); + g_clear_object(&bhyve_driver->config); virPortAllocatorRangeFree(bhyve_driver->remotePorts); =20 if (bhyve_driver->lockFD !=3D -1) diff --git a/src/bhyve/bhyve_utils.h b/src/bhyve/bhyve_utils.h index f3e80b6121..675b859098 100644 --- a/src/bhyve/bhyve_utils.h +++ b/src/bhyve/bhyve_utils.h @@ -29,16 +29,23 @@ #include "hypervisor/virclosecallbacks.h" #include "virportallocator.h" =20 +#include + #define BHYVE_AUTOSTART_DIR SYSCONFDIR "/libvirt/bhyve/autostart" #define BHYVE_CONFIG_DIR SYSCONFDIR "/libvirt/bhyve" #define BHYVE_STATE_DIR RUNSTATEDIR "/libvirt/bhyve" #define BHYVE_LOG_DIR LOCALSTATEDIR "/log/libvirt/bhyve" =20 -typedef struct _virBhyveDriverConfig virBhyveDriverConfig; +#define VIR_TYPE_BHYVE_DRIVER_CONFIG vir_bhyve_driver_config_get_type() +G_DECLARE_FINAL_TYPE(virBhyveDriverConfig, + vir_bhyve_driver_config, + VIR, + BHYVE_DRIVER_CONFIG, + GObject); typedef struct _virBhyveDriverConfig *virBhyveDriverConfigPtr; =20 struct _virBhyveDriverConfig { - virObject parent; + GObject parent; =20 char *firmwareDir; }; --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371122; cv=none; d=zohomail.com; s=zohoarc; b=nGyfpjLsyrJt7ZG/7Z90+nDFSpZB9dUiJvB8BG1kzp4fWhDrbssvBYweb3aj8KinxEe2MzNYjM5zisEx9EfwoFW/JhizRF7ji6+Q/U6IY/OK4D6b8+suZlFmgY2mvYjai+0Vh2i3DeHWITiX2djd+2i7NH5PlhBJRGifML4BYuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371122; 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=G1bDeEnJLzDMLRsEQGPXSVo3rS0v3v9+MhTXAqS5yxg=; b=O7VDIN6Pg/vAcZSqPA6dUmZ2A0R+29d2VPdfaPBayK4viM6QAxCbpsbrnrDs+c9CAkoug9WS1AVnT4oLfOSiahZZHBRp40dhOOZsAjnenBh7/F9c5+XNq6uj90WCgetrAt521E2qCcRWPxIr8eEF2WMcvkSz9WQqipj5gjMRj34= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 15893711228341009.1561212383283; Wed, 13 May 2020 04:58:42 -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-444-I2aSGTRrPaeyXT-Oo9cqbw-1; Wed, 13 May 2020 07:58:37 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 90E7F1005512; Wed, 13 May 2020 11:58:30 +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 6A6D31000079; Wed, 13 May 2020 11:58:30 +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 3B68A4E98B; Wed, 13 May 2020 11:58:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwQfg016068 for ; Wed, 13 May 2020 07:58:26 -0400 Received: by smtp.corp.redhat.com (Postfix) id 91EDC11921B3; Wed, 13 May 2020 11:58:26 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8CCA711921B2 for ; Wed, 13 May 2020 11:58:21 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 898841859162 for ; Wed, 13 May 2020 11:58:21 +0000 (UTC) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-495-42gm5krINu6PHeHpaf_PJg-1; Wed, 13 May 2020 07:58:17 -0400 Received: by mail-wm1-f43.google.com with SMTP id y24so28194458wma.4 for ; Wed, 13 May 2020 04:58:17 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371121; 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=G1bDeEnJLzDMLRsEQGPXSVo3rS0v3v9+MhTXAqS5yxg=; b=RqkMEuBsdQv5UueM80My3QTj1VP0+Q3P5t1OLToZtQJGnWfuUlwktlU5LZWzhFTX+ZXvPX x78U/5Q5hh/4VmGTzqmyyOKsE58S8fmJ4GMTLkkF01Dr1iW2swmaqytuNQUZowui4fDVMM a10kwp2vndb4OiO/tke5E1sN3cQNJvk= X-MC-Unique: I2aSGTRrPaeyXT-Oo9cqbw-1 X-MC-Unique: 42gm5krINu6PHeHpaf_PJg-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=G1bDeEnJLzDMLRsEQGPXSVo3rS0v3v9+MhTXAqS5yxg=; b=ktYcrJmNFhsSPVDkVEhtJFCg9adCg7rImXz4wH4HQTCzlbZH8omu8u8y6F0A+simhU L80sdLJMZyrdo63OUEUvXcZQAeyOf6TdoNYjOGtmnXL9JEwQdoiGuAJGbibAcgJReJsh etWlsG75iRHijTaz5lNwSfvBi7y6y2/E5d5sUR9/d0hV41DeRm+tuWXN6GZmXUFMTrvu Rt1jNJJ+XJgp758GpPSlDTGlY9sQty/++hXC2w8DBqan5YL8lzlHgJ2i4OJf25Ck/SLD 3g4Uw2cm9ObzTnXpC4vBWEX2LTFzEjGy+7aZemToDyYZjA8LA2+rYKRO2wjAFMdqsRdJ KVmA== X-Gm-Message-State: AOAM532+uYPlFpKEfknTuCXKtqBpvViMf0iA9CA4N/2Jtg2ostW/RS0i dWo1JGrGyyqFOB523aRCCznilD/a X-Google-Smtp-Source: ABdhPJzNCbkZ+s+YLPQlXP/DroPJHAI6z/krFGMHDnjU5fdnMZkPbavkSEoUvxEGUbyQGwdy5LM5GQ== X-Received: by 2002:a7b:c394:: with SMTP id s20mr6039738wmj.40.1589371095768; Wed, 13 May 2020 04:58:15 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 10/40] rpc: convert virNetServerService to GObject Date: Wed, 13 May 2020 13:56:54 +0200 Message-Id: <20200513115724.157687-11-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.84 on 10.5.11.22 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/lxc/lxc_controller.c | 5 +- src/rpc/virnetserver.c | 7 +-- src/rpc/virnetserverprogram.h | 7 ++- src/rpc/virnetserverservice.c | 87 +++++++++++++++-------------------- tests/virnetdaemontest.c | 4 +- 5 files changed, 47 insertions(+), 63 deletions(-) diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 0aa56f6d24..a8a8b413f7 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -989,8 +989,7 @@ static int virLXCControllerSetupServer(virLXCController= Ptr ctrl) =20 if (virNetServerAddService(srv, svc) < 0) goto error; - virObjectUnref(svc); - svc =3D NULL; + g_clear_object(&svc); =20 ctrl->prog =3D virNetServerProgramNew(VIR_LXC_MONITOR_PROGRAM, VIR_LXC_MONITOR_PROGRAM_VERSION, @@ -1011,7 +1010,7 @@ static int virLXCControllerSetupServer(virLXCControll= erPtr ctrl) virObjectUnref(srv); virObjectUnref(ctrl->daemon); ctrl->daemon =3D NULL; - virObjectUnref(svc); + g_clear_object(&svc); return -1; } =20 diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index 15be0275e6..e2500f6cb0 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -659,7 +659,7 @@ int virNetServerAddService(virNetServerPtr srv, if (VIR_EXPAND_N(srv->services, srv->nservices, 1) < 0) goto error; =20 - srv->services[srv->nservices-1] =3D virObjectRef(svc); + srv->services[srv->nservices-1] =3D g_object_ref(svc); =20 virNetServerServiceSetDispatcher(svc, virNetServerDispatchNewClient, @@ -914,10 +914,7 @@ void virNetServerDispose(void *obj) =20 virThreadPoolFree(srv->workers); =20 - for (i =3D 0; i < srv->nservices; i++) - virObjectUnref(srv->services[i]); - VIR_FREE(srv->services); - + virGObjectListFreeCount(srv->services, srv->nservices); virGObjectListFreeCount(srv->programs, srv->nprograms); =20 for (i =3D 0; i < srv->nclients; i++) diff --git a/src/rpc/virnetserverprogram.h b/src/rpc/virnetserverprogram.h index bcc10809d4..72dff3b9cb 100644 --- a/src/rpc/virnetserverprogram.h +++ b/src/rpc/virnetserverprogram.h @@ -29,7 +29,12 @@ typedef struct _virNetDaemon virNetDaemon; typedef virNetDaemon *virNetDaemonPtr; =20 -typedef struct _virNetServerService virNetServerService; +#define VIR_TYPE_NET_SERVER_SERVICE vir_net_server_service_get_type() +G_DECLARE_FINAL_TYPE(virNetServerService, + vir_net_server_service, + VIR, + NET_SERVER_SERVICE, + GObject); typedef virNetServerService *virNetServerServicePtr; =20 #define VIR_TYPE_NET_SERVER_PROGRAM vir_net_server_program_get_type() diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c index 9d5df456a8..781e414461 100644 --- a/src/rpc/virnetserverservice.c +++ b/src/rpc/virnetserverservice.c @@ -35,7 +35,7 @@ VIR_LOG_INIT("rpc.netserverservice"); =20 struct _virNetServerService { - virObject parent; + GObject parent; =20 size_t nsocks; virNetSocketPtr *socks; @@ -51,19 +51,19 @@ struct _virNetServerService { }; =20 =20 -static virClassPtr virNetServerServiceClass; -static void virNetServerServiceDispose(void *obj); +G_DEFINE_TYPE(virNetServerService, vir_net_server_service, G_TYPE_OBJECT); +static void virNetServerServiceFinalize(GObject *obj); =20 -static int virNetServerServiceOnceInit(void) +static void vir_net_server_service_init(virNetServerService *svc G_GNUC_UN= USED) { - if (!VIR_CLASS_NEW(virNetServerService, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virNetServerService); +static void vir_net_server_service_class_init(virNetServerServiceClass *kl= ass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 + obj->finalize =3D virNetServerServiceFinalize; +} =20 static void virNetServerServiceAccept(virNetSocketPtr sock, int events G_GNUC_UNUSED, @@ -97,17 +97,13 @@ virNetServerServiceNewSocket(virNetSocketPtr *socks, size_t max_queued_clients, size_t nrequests_client_max) { - virNetServerServicePtr svc; + g_autoptr(virNetServerService) svc =3D NULL; size_t i; =20 - if (virNetServerServiceInitialize() < 0) - return NULL; - - if (!(svc =3D virObjectNew(virNetServerServiceClass))) - return NULL; + svc =3D VIR_NET_SERVER_SERVICE(g_object_new(VIR_TYPE_NET_SERVER_SERVIC= E, NULL)); =20 if (VIR_ALLOC_N(svc->socks, nsocks) < 0) - goto error; + return NULL; svc->nsocks =3D nsocks; for (i =3D 0; i < svc->nsocks; i++) { svc->socks[i] =3D socks[i]; @@ -120,27 +116,22 @@ virNetServerServiceNewSocket(virNetSocketPtr *socks, =20 for (i =3D 0; i < svc->nsocks; i++) { if (virNetSocketListen(svc->socks[i], max_queued_clients) < 0) - goto error; + return NULL; =20 /* IO callback is initially disabled, until we're ready * to deal with incoming clients */ - virObjectRef(svc); + g_object_ref(svc); if (virNetSocketAddIOCallback(svc->socks[i], 0, virNetServerServiceAccept, svc, - virObjectFreeCallback) < 0) { - virObjectUnref(svc); - goto error; + g_object_unref) < 0) { + g_object_unref(svc); + return NULL; } } =20 - - return svc; - - error: - virObjectUnref(svc); - return NULL; + return g_steal_pointer(&svc); } =20 =20 @@ -258,51 +249,47 @@ virNetServerServicePtr virNetServerServiceNewFDs(int = *fds, =20 virNetServerServicePtr virNetServerServiceNewPostExecRestart(virJSONValueP= tr object) { - virNetServerServicePtr svc; + g_autoptr(virNetServerService) svc =3D NULL; virJSONValuePtr socks; size_t i; size_t n; unsigned int max; =20 - if (virNetServerServiceInitialize() < 0) - return NULL; - - if (!(svc =3D virObjectNew(virNetServerServiceClass))) - return NULL; + svc =3D VIR_NET_SERVER_SERVICE(g_object_new(VIR_TYPE_NET_SERVER_SERVIC= E, NULL)); =20 if (virJSONValueObjectGetNumberInt(object, "auth", &svc->auth) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Missing auth field in JSON state document")); - goto error; + return NULL; } if (virJSONValueObjectGetBoolean(object, "readonly", &svc->readonly) <= 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Missing readonly field in JSON state document")); - goto error; + return NULL; } if (virJSONValueObjectGetNumberUint(object, "nrequests_client_max", &max) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Missing nrequests_client_max field in JSON state= document")); - goto error; + return NULL; } svc->nrequests_client_max =3D max; =20 if (!(socks =3D virJSONValueObjectGet(object, "socks"))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Missing socks field in JSON state document")); - goto error; + return NULL; } =20 if (!virJSONValueIsArray(socks)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Malformed socks array")); - goto error; + return NULL; } =20 n =3D virJSONValueArraySize(socks); if (VIR_ALLOC_N(svc->socks, n) < 0) - goto error; + return NULL; svc->nsocks =3D n; =20 for (i =3D 0; i < svc->nsocks; i++) { @@ -311,29 +298,25 @@ virNetServerServicePtr virNetServerServiceNewPostExec= Restart(virJSONValuePtr obj =20 if (!(sock =3D virNetSocketNewPostExecRestart(child))) { virObjectUnref(sock); - goto error; + return NULL; } =20 svc->socks[i] =3D sock; =20 /* IO callback is initially disabled, until we're ready * to deal with incoming clients */ - virObjectRef(svc); + g_object_ref(svc); if (virNetSocketAddIOCallback(sock, 0, virNetServerServiceAccept, svc, - virObjectFreeCallback) < 0) { - virObjectUnref(svc); - goto error; + g_object_unref) < 0) { + g_object_unref(svc); + return NULL; } } =20 - return svc; - - error: - virObjectUnref(svc); - return NULL; + return g_steal_pointer(&svc); } =20 =20 @@ -415,9 +398,9 @@ void virNetServerServiceSetDispatcher(virNetServerServi= cePtr svc, } =20 =20 -void virNetServerServiceDispose(void *obj) +void virNetServerServiceFinalize(GObject *obj) { - virNetServerServicePtr svc =3D obj; + virNetServerServicePtr svc =3D VIR_NET_SERVER_SERVICE(obj); size_t i; =20 for (i =3D 0; i < svc->nsocks; i++) @@ -425,6 +408,8 @@ void virNetServerServiceDispose(void *obj) VIR_FREE(svc->socks); =20 virObjectUnref(svc->tls); + + G_OBJECT_CLASS(vir_net_server_service_parent_class)->finalize(obj); } =20 void virNetServerServiceToggle(virNetServerServicePtr svc, diff --git a/tests/virnetdaemontest.c b/tests/virnetdaemontest.c index 09d268627c..3107fb6747 100644 --- a/tests/virnetdaemontest.c +++ b/tests/virnetdaemontest.c @@ -85,7 +85,7 @@ static virNetServerPtr testCreateServer(const char *server_name, const char *host, int family) { virNetServerPtr srv =3D NULL; - virNetServerServicePtr svc1 =3D NULL, svc2 =3D NULL; + g_autoptr(virNetServerService) svc1 =3D NULL, svc2 =3D NULL; virNetServerClientPtr cln1 =3D NULL, cln2 =3D NULL; virNetSocketPtr sk1 =3D NULL, sk2 =3D NULL; int fdclient[2]; @@ -170,8 +170,6 @@ testCreateServer(const char *server_name, const char *h= ost, int family) virDispatchError(NULL); virObjectUnref(cln1); virObjectUnref(cln2); - virObjectUnref(svc1); - virObjectUnref(svc2); virObjectUnref(sk1); virObjectUnref(sk2); return srv; --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371115; cv=none; d=zohomail.com; s=zohoarc; b=ErXDhbmm69YGVCW8S3vFbdXfAPId7bQtmz7frM3lSsU+y+FM1rPZ0cMPTz5FB0Zg37HLs24X6/Tiimp304eyOziYNCI0+wXwD/SLr9ZsvnKDllxzI7vyyqmLY6IlCLUZAPqp4gM1LF24ajy/TquVAvnEcXw0oMU06JCyEoLxOAw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371115; 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=4I5YKT+bPSUVR47AS1wFnA29UBxBvtlhzYXQKaqfIFU=; b=ALEwqRxUig5uFdTDWaxNa2qtGARlfH6aoRMiwzJuZB/abp5s7EmJgQ6l6MobrqHPed0ECSi2itTPzCRxhYSEwP5JEkj337YQWMAWtHI8zu7s+I6AZ3Orv6pYYJx9k0Z4jYbeId0g46ryNheCJs/X1gOrlZ61oO7v2yyP1C4heJU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371115206739.6324928011111; Wed, 13 May 2020 04:58:35 -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-439-zjCv4y6GOcKSr1AemARi6A-1; Wed, 13 May 2020 07:58:30 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DEB80805726; Wed, 13 May 2020 11:58:23 +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 BB747619B4; Wed, 13 May 2020 11:58:23 +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 8A0091800432; Wed, 13 May 2020 11:58:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwLS4016028 for ; Wed, 13 May 2020 07:58:21 -0400 Received: by smtp.corp.redhat.com (Postfix) id 002AB2156A49; Wed, 13 May 2020 11:58:21 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EF2232166B27 for ; Wed, 13 May 2020 11:58:20 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CCAE180A0C4 for ; Wed, 13 May 2020 11:58:20 +0000 (UTC) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-225-3bh5K42pPzy187MGpbp2Kg-1; Wed, 13 May 2020 07:58:18 -0400 Received: by mail-wr1-f48.google.com with SMTP id v12so20498591wrp.12 for ; Wed, 13 May 2020 04:58:18 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371113; 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=4I5YKT+bPSUVR47AS1wFnA29UBxBvtlhzYXQKaqfIFU=; b=a+sGXSdYQ4jJMEFjOwt1iGD6oKCr1TPd6mzYh9Wns2nX/FdlNWli45fk0zRQUgWg/pk4mb 9SBPPYkRBc4gP2sqlAB6LBBqPCjAeXQxPruUL24Xk0ZORyt/yx6a4wZhkcLNJRcr4fwGs2 cdjyEO4RG2sJ/VcC/Th+ludvQepVcRE= X-MC-Unique: zjCv4y6GOcKSr1AemARi6A-1 X-MC-Unique: 3bh5K42pPzy187MGpbp2Kg-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=4I5YKT+bPSUVR47AS1wFnA29UBxBvtlhzYXQKaqfIFU=; b=aVV5N/h2PFC+OfuMrvUkCAoy5lev0tWqTSmoLsXdfrB6mjnV386cFHM8LOAjAOHt8c D5F/UqJq8qm4hExtT2vYv1uQmyrEf9Nx0QV1mYwS1yh/yyvsdycze+z0W3pHMJaSy43I nFzOM4XTS7plRo6lnzxSYEJOPNj67yg98i1KcQv/Ztv8c432pUQU4RzIkS29D1ZGTM1P 7bKSA1fYZtuTK7rcS0DcxLiT4MwSWcASCNtciGzhEbnTxrktDbglhlaIxWL9bNlbTc+P bzVplLvhcRaJDn4lFyPOjejt/HRBTi+BGQ42TmkhgLwISQO1/g9kns/xta+biQ48PL3U xEyw== X-Gm-Message-State: AOAM533GlKZIYvlurRVChyLonQmabFYGf68c7nENdsu7rxQi7qEq2afa +NruR4+Z6RINRVqGiRpjOcVUX23d X-Google-Smtp-Source: ABdhPJyjqjk2mgSAsdLeWd1oCA7Q2CUB80sqoyXYEQdb9TJeIfXnoedKovlWr4M2B76rURdawjdMbg== X-Received: by 2002:a5d:490e:: with SMTP id x14mr7325590wrq.375.1589371096922; Wed, 13 May 2020 04:58:16 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 11/40] conf: convert virDomainCapsCPUModels to GObject Date: Wed, 13 May 2020 13:56:55 +0200 Message-Id: <20200513115724.157687-12-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.12 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/conf/domain_capabilities.c | 48 ++++++++++++++++++---------------- src/conf/domain_capabilities.h | 10 ++++--- src/libvirt_private.syms | 1 + tests/cputest.c | 35 ++++++++----------------- 4 files changed, 44 insertions(+), 50 deletions(-) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 921d795630..bc0a505cb9 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -45,19 +45,27 @@ VIR_ENUM_IMPL(virDomainCapsFeature, ); =20 static virClassPtr virDomainCapsClass; -static virClassPtr virDomainCapsCPUModelsClass; +G_DEFINE_TYPE(virDomainCapsCPUModels, vir_domain_caps_cpu_models, G_TYPE_O= BJECT); =20 static void virDomainCapsDispose(void *obj); -static void virDomainCapsCPUModelsDispose(void *obj); +static void virDomainCapsCPUModelsFinalize(GObject *obj); + +static void vir_domain_caps_cpu_models_init(virDomainCapsCPUModels *mod G_= GNUC_UNUSED) +{ +} + +static void vir_domain_caps_cpu_models_class_init(virDomainCapsCPUModelsCl= ass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virDomainCapsCPUModelsFinalize; +} =20 static int virDomainCapsOnceInit(void) { if (!VIR_CLASS_NEW(virDomainCaps, virClassForObjectLockable())) return -1; =20 - if (!VIR_CLASS_NEW(virDomainCapsCPUModels, virClassForObject())) - return -1; - return 0; } =20 @@ -107,9 +115,9 @@ virDomainCapsDispose(void *obj) =20 =20 static void -virDomainCapsCPUModelsDispose(void *obj) +virDomainCapsCPUModelsFinalize(GObject *obj) { - virDomainCapsCPUModelsPtr cpuModels =3D obj; + virDomainCapsCPUModelsPtr cpuModels =3D VIR_DOMAIN_CAPS_CPU_MODELS(obj= ); size_t i; =20 for (i =3D 0; i < cpuModels->nmodels; i++) { @@ -118,6 +126,8 @@ virDomainCapsCPUModelsDispose(void *obj) } =20 VIR_FREE(cpuModels->models); + + G_OBJECT_CLASS(vir_domain_caps_cpu_models_parent_class)->finalize(obj); } =20 =20 @@ -147,30 +157,26 @@ virDomainCapsNew(const char *path, virDomainCapsCPUModelsPtr virDomainCapsCPUModelsNew(size_t nmodels) { - virDomainCapsCPUModelsPtr cpuModels =3D NULL; + g_autoptr(virDomainCapsCPUModels) cpuModels =3D NULL; =20 if (virDomainCapsInitialize() < 0) return NULL; =20 - if (!(cpuModels =3D virObjectNew(virDomainCapsCPUModelsClass))) - return NULL; + cpuModels =3D VIR_DOMAIN_CAPS_CPU_MODELS( + g_object_new(VIR_TYPE_DOMAIN_CAPS_CPU_MODELS, NULL)); =20 if (VIR_ALLOC_N(cpuModels->models, nmodels) < 0) - goto error; + return NULL; cpuModels->nmodels_max =3D nmodels; =20 - return cpuModels; - - error: - virObjectUnref(cpuModels); - return NULL; + return g_steal_pointer(&cpuModels); } =20 =20 virDomainCapsCPUModelsPtr virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old) { - virDomainCapsCPUModelsPtr cpuModels; + g_autoptr(virDomainCapsCPUModels) cpuModels =3D NULL; size_t i; =20 if (!(cpuModels =3D virDomainCapsCPUModelsNew(old->nmodels))) @@ -181,14 +187,10 @@ virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr = old) old->models[i].name, old->models[i].usable, old->models[i].blockers) < 0) - goto error; + return NULL; } =20 - return cpuModels; - - error: - virObjectUnref(cpuModels); - return NULL; + return g_steal_pointer(&cpuModels); } =20 =20 diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 9f4a23d015..88673ffe35 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -129,17 +129,21 @@ struct _virDomainCapsCPUModel { char **blockers; /* NULL-terminated list of usability blockers */ }; =20 -typedef struct _virDomainCapsCPUModels virDomainCapsCPUModels; +#define VIR_TYPE_DOMAIN_CAPS_CPU_MODELS vir_domain_caps_cpu_models_get_typ= e() +G_DECLARE_FINAL_TYPE(virDomainCapsCPUModels, + vir_domain_caps_cpu_models, + VIR, + DOMAIN_CAPS_CPU_MODELS, + GObject); typedef virDomainCapsCPUModels *virDomainCapsCPUModelsPtr; struct _virDomainCapsCPUModels { - virObject parent; + GObject parent; =20 size_t nmodels_max; size_t nmodels; virDomainCapsCPUModelPtr models; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainCapsCPUModels, virObjectUnref); =20 typedef struct _virDomainCapsCPU virDomainCapsCPU; typedef virDomainCapsCPU *virDomainCapsCPUPtr; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ed7813ce0e..1e2b9af689 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -204,6 +204,7 @@ virDomainAuditVcpu; =20 =20 # conf/domain_capabilities.h +vir_domain_caps_cpu_models_get_type; virDomainCapsCPUModelsAdd; virDomainCapsCPUModelsCopy; virDomainCapsCPUModelsGet; diff --git a/tests/cputest.c b/tests/cputest.c index 54c9689663..72c6bbbd45 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -573,7 +573,7 @@ cpuTestCPUID(bool guest, const void *arg) char *host =3D NULL; virCPUDefPtr cpu =3D NULL; char *result =3D NULL; - virDomainCapsCPUModelsPtr models =3D NULL; + g_autoptr(virDomainCapsCPUModels) models =3D NULL; =20 hostFile =3D g_strdup_printf("%s/cputestdata/%s-cpuid-%s.xml", abs_src= dir, virArchToString(data->arch), data->host); @@ -615,7 +615,6 @@ cpuTestCPUID(bool guest, const void *arg) virCPUDataFree(hostData); virCPUDefFree(cpu); VIR_FREE(result); - virObjectUnref(models); return ret; } =20 @@ -787,8 +786,8 @@ cpuTestUpdateLive(const void *arg) virCPUDataPtr disabledData =3D NULL; char *expectedFile =3D NULL; virCPUDefPtr expected =3D NULL; - virDomainCapsCPUModelsPtr hvModels =3D NULL; - virDomainCapsCPUModelsPtr models =3D NULL; + g_autoptr(virDomainCapsCPUModels) hvModels =3D NULL; + g_autoptr(virDomainCapsCPUModels) models =3D NULL; int ret =3D -1; =20 cpuFile =3D g_strdup_printf("cpuid-%s-guest", data->host); @@ -864,8 +863,6 @@ cpuTestUpdateLive(const void *arg) virCPUDataFree(disabledData); VIR_FREE(expectedFile); virCPUDefFree(expected); - virObjectUnref(hvModels); - virObjectUnref(models); return ret; } =20 @@ -937,7 +934,7 @@ static const char *ppc_models_list[] =3D { "POWER6", "P= OWER7", "POWER8", NULL }; static virDomainCapsCPUModelsPtr cpuTestInitModels(const char **list) { - virDomainCapsCPUModelsPtr cpus; + g_autoptr(virDomainCapsCPUModels) cpus =3D NULL; const char **model; =20 if (!(cpus =3D virDomainCapsCPUModelsNew(0))) @@ -946,25 +943,21 @@ cpuTestInitModels(const char **list) for (model =3D list; *model; model++) { if (virDomainCapsCPUModelsAdd(cpus, *model, VIR_DOMCAPS_CPU_USABLE_UNKNOWN, NULL= ) < 0) - goto error; + return NULL; } =20 - return cpus; - - error: - virObjectUnref(cpus); - return NULL; + return g_steal_pointer(&cpus); } =20 =20 static int mymain(void) { - virDomainCapsCPUModelsPtr model486 =3D NULL; - virDomainCapsCPUModelsPtr nomodel =3D NULL; - virDomainCapsCPUModelsPtr models =3D NULL; - virDomainCapsCPUModelsPtr haswell =3D NULL; - virDomainCapsCPUModelsPtr ppc_models =3D NULL; + g_autoptr(virDomainCapsCPUModels) model486 =3D NULL; + g_autoptr(virDomainCapsCPUModels) nomodel =3D NULL; + g_autoptr(virDomainCapsCPUModels) models =3D NULL; + g_autoptr(virDomainCapsCPUModels) haswell =3D NULL; + g_autoptr(virDomainCapsCPUModels) ppc_models =3D NULL; int ret =3D 0; =20 #if WITH_QEMU @@ -1275,12 +1268,6 @@ mymain(void) qemuTestDriverFree(&driver); #endif =20 - virObjectUnref(model486); - virObjectUnref(nomodel); - virObjectUnref(models); - virObjectUnref(haswell); - virObjectUnref(ppc_models); - return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; 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 207.211.31.81 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=1589371116; cv=none; d=zohomail.com; s=zohoarc; b=jn3LdJs1r555ZC2KtVNNQ2zgcLijID6j6azOXZ9ui+qnPksVMcv4k/cTgjNzEBMci/hpXsoGPECyHFuBe13/z6eiDcw9M+pWXLRxNiBQ0wxgBGQR/SUCXlqqBrT8v6brE7bHFptHZhH5rryHZE33DLwcueQxQ3ouVSRxfUsvAxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371116; 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=xEmeBY3uuHHyTcwGtMZQWh3xkwgAm5UnxppEncnHJOM=; b=PKpBrhE/4USPUNYKIGUy2JEKQXANmnWLzbDNMDdz5Nvg/mVhrew1G9F68zPNzRd4OuwfSzCpNXWajkmYMGwXfzIMnjKg0o5MNmDRQAnswawEXg4p5EcgxmQMp0b0VCpagblbYt6bE/IT/Kta4d6Sgwg1uhpItKhapMai7chyAzo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 158937111630193.4582594015501; Wed, 13 May 2020 04:58:36 -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-11-fwxB-ek-Oi6jFssqtybPaw-1; Wed, 13 May 2020 07:58:31 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D6433107ACCD; Wed, 13 May 2020 11:58:25 +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 B78965C1BB; Wed, 13 May 2020 11:58:25 +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 86DA71805309; Wed, 13 May 2020 11:58:25 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwNQY016039 for ; Wed, 13 May 2020 07:58:23 -0400 Received: by smtp.corp.redhat.com (Postfix) id 76B7E114CE5; Wed, 13 May 2020 11:58:23 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 71EB45EDD7 for ; Wed, 13 May 2020 11:58:23 +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-mx02.redhat.com (Postfix) with ESMTPS id 54DD38007C8 for ; Wed, 13 May 2020 11:58:23 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-324-Cbje6Ly7OaaWdLrB1qax6w-1; Wed, 13 May 2020 07:58:20 -0400 Received: by mail-wr1-f66.google.com with SMTP id e16so20536960wra.7 for ; Wed, 13 May 2020 04:58:20 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371114; 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=xEmeBY3uuHHyTcwGtMZQWh3xkwgAm5UnxppEncnHJOM=; b=J36r5I4Lo2psTgT63Fl9UEewsIqLIkTaAZDA3QTK70BvC+2XUTYSpAsxp6ziBDNhTmauba 5XnviCwlFR5oscSruYtptX/35Bnw5y8+W3lzoecYwrSYTg2lfqQiG0gHyBAf+ihQ4hoK4D c+J0ldWawIyhDty3UuzFEQIR6zCvlMU= X-MC-Unique: fwxB-ek-Oi6jFssqtybPaw-1 X-MC-Unique: Cbje6Ly7OaaWdLrB1qax6w-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=xEmeBY3uuHHyTcwGtMZQWh3xkwgAm5UnxppEncnHJOM=; b=gbmPA/TzfX8A8ldHosdGlkxMbOcBzQwx+ql8Cr7a/StQUbSjHB5ufCAU+tnb5KAk3S pPzbAjvtMvzgPg9cAPfDf9YI1elz3il+cGm8Shza8vSjnZ8AERocYLkwoYf8xk+AB/xK wR50LKPt9M85nelsOUKtjigKlH6W0JqgTkEVSlKSfm13Vnvqvb0VWzdmg57iTsqi8var t+t7wA8i/pNl1xWVe017tK291+B0NR32pInpIlN4Zcd9Dw0s0P77CH8pHTo81rXnINAV jJPtUURvi2FxEH5yMiBh4sZThrt9mmXPnoD+fjbMMMoet2V0ICj9etkeL+2LTs1tGodR rkRQ== X-Gm-Message-State: AGi0PubxT45Z7bDmRNvAqcl6hFQK6N+IPoyfp9TCrLE46A2TkQoAbmn4 NY36oAhuvGz1XAfuHC9lWwvEZScE X-Google-Smtp-Source: APiQypLuMkRVR5p0CfEr5JhCHKAf25Ap1OP/IXdfO17o7+/sKDLtuYNBXAf1JDjFyu07p20Nim773Q== X-Received: by 2002:adf:dd50:: with SMTP id u16mr32725008wrm.58.1589371098806; Wed, 13 May 2020 04:58:18 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 12/40] util: convert dnsmasqCaps to GObject Date: Wed, 13 May 2020 13:56:56 +0200 Message-Id: <20200513115724.157687-13-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.16 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/libvirt_private.syms | 1 + src/network/bridge_driver.c | 22 ++++++--------- src/util/virdnsmasq.c | 56 +++++++++++++++++-------------------- src/util/virdnsmasq.h | 6 ++-- tests/networkxml2conftest.c | 10 ++----- 5 files changed, 42 insertions(+), 53 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1e2b9af689..4a927a26bf 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1948,6 +1948,7 @@ virDevMapperGetTargets; =20 =20 # util/virdnsmasq.h +dnsmasq_caps_get_type; dnsmasqAddDhcpHost; dnsmasqAddHost; dnsmasqCapsGet; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 47d5d95678..3c110a53fc 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -115,9 +115,10 @@ networkDriverUnlock(virNetworkDriverStatePtr driver) static dnsmasqCapsPtr networkGetDnsmasqCaps(virNetworkDriverStatePtr driver) { - dnsmasqCapsPtr ret; + dnsmasqCapsPtr ret =3D NULL; networkDriverLock(driver); - ret =3D virObjectRef(driver->dnsmasqCaps); + if (driver->dnsmasqCaps) + ret =3D g_object_ref(driver->dnsmasqCaps); networkDriverUnlock(driver); return ret; } @@ -132,7 +133,7 @@ networkDnsmasqCapsRefresh(virNetworkDriverStatePtr driv= er) return -1; =20 networkDriverLock(driver); - virObjectUnref(driver->dnsmasqCaps); + g_clear_object(&driver->dnsmasqCaps); driver->dnsmasqCaps =3D caps; networkDriverUnlock(driver); return 0; @@ -545,7 +546,7 @@ networkUpdateState(virNetworkObjPtr obj, { virNetworkDefPtr def; virNetworkDriverStatePtr driver =3D opaque; - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); virMacMapPtr macmap; char *macMapFile =3D NULL; int ret =3D -1; @@ -631,7 +632,6 @@ networkUpdateState(virNetworkObjPtr obj, ret =3D 0; cleanup: virObjectUnlock(obj); - virObjectUnref(dnsmasq_caps); VIR_FREE(macMapFile); return ret; } @@ -907,7 +907,7 @@ networkStateCleanup(void) VIR_FREE(network_driver->dnsmasqStateDir); VIR_FREE(network_driver->radvdStateDir); =20 - virObjectUnref(network_driver->dnsmasqCaps); + g_clear_object(&network_driver->dnsmasqCaps); =20 virMutexDestroy(&network_driver->lock); =20 @@ -1581,7 +1581,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverSta= tePtr driver, dnsmasqContext *dctx) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); virCommandPtr cmd =3D NULL; int ret =3D -1; char *configfile =3D NULL; @@ -1625,7 +1625,6 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverSta= tePtr driver, *cmdout =3D cmd; ret =3D 0; cleanup: - virObjectUnref(dnsmasq_caps); VIR_FREE(configfile); VIR_FREE(configstr); VIR_FREE(leaseshelper_path); @@ -1949,7 +1948,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); pid_t radvdPid; char *pidfile =3D NULL; char *radvdpidbase =3D NULL; @@ -2027,7 +2026,6 @@ networkStartRadvd(virNetworkDriverStatePtr driver, =20 ret =3D 0; cleanup: - virObjectUnref(dnsmasq_caps); virCommandFree(cmd); VIR_FREE(configfile); VIR_FREE(radvdpidbase); @@ -2041,14 +2039,13 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); g_autofree char *radvdpidbase =3D NULL; g_autofree char *pidfile =3D NULL; pid_t radvdPid; =20 /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { - virObjectUnref(dnsmasq_caps); if ((radvdpidbase =3D networkRadvdPidfileBasename(def->name)) && (pidfile =3D virPidFileBuildPath(driver->pidDir, radvdpidbase)= )) { /* radvd should not be running but in case it is */ @@ -2057,7 +2054,6 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, } return 0; } - virObjectUnref(dnsmasq_caps); =20 /* if there's no running radvd, just start it */ radvdPid =3D virNetworkObjGetRadvdPid(obj); diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c index 818219fbeb..4d62680f3a 100644 --- a/src/util/virdnsmasq.c +++ b/src/util/virdnsmasq.c @@ -598,7 +598,7 @@ dnsmasqReload(pid_t pid G_GNUC_UNUSED) * */ struct _dnsmasqCaps { - virObject parent; + GObject parent; char *binaryPath; bool noRefresh; time_t mtime; @@ -606,26 +606,31 @@ struct _dnsmasqCaps { unsigned long version; }; =20 -static virClassPtr dnsmasqCapsClass; +G_DEFINE_TYPE(dnsmasqCaps, dnsmasq_caps, G_TYPE_OBJECT); =20 static void -dnsmasqCapsDispose(void *obj) +dnsmasqCapsFinalize(GObject *obj) { - dnsmasqCapsPtr caps =3D obj; + dnsmasqCapsPtr caps =3D DNSMASQ_CAPS(obj); =20 virBitmapFree(caps->flags); VIR_FREE(caps->binaryPath); + + G_OBJECT_CLASS(dnsmasq_caps_parent_class)->finalize(obj); } =20 -static int dnsmasqCapsOnceInit(void) +static void +dnsmasq_caps_init(dnsmasqCaps *caps G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(dnsmasqCaps, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(dnsmasqCaps); +static void +dnsmasq_caps_class_init(dnsmasqCapsClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D dnsmasqCapsFinalize; +} =20 static void dnsmasqCapsSet(dnsmasqCapsPtr caps, @@ -764,65 +769,54 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool = force) static dnsmasqCapsPtr dnsmasqCapsNewEmpty(const char *binaryPath) { - dnsmasqCapsPtr caps; - - if (dnsmasqCapsInitialize() < 0) - return NULL; - if (!(caps =3D virObjectNew(dnsmasqCapsClass))) - return NULL; + g_autoptr(dnsmasqCaps) caps =3D + DNSMASQ_CAPS(g_object_new(DNSMASQ_TYPE_CAPS, NULL)); if (!(caps->flags =3D virBitmapNew(DNSMASQ_CAPS_LAST))) - goto error; + return NULL; caps->binaryPath =3D g_strdup(binaryPath ? binaryPath : DNSMASQ); - return caps; - - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromBuffer(const char *buf, const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsSetFromBuffer(caps, buf) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromFile(const char *dataPath, const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsSetFromFile(caps, dataPath) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromBinary(const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsRefreshInternal(caps, true) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 /** dnsmasqCapsRefresh: diff --git a/src/util/virdnsmasq.h b/src/util/virdnsmasq.h index 4c14bc6ca7..d5de44c5ba 100644 --- a/src/util/virdnsmasq.h +++ b/src/util/virdnsmasq.h @@ -23,7 +23,8 @@ =20 #pragma once =20 -#include "virobject.h" +#include "internal.h" +#include #include "virsocketaddr.h" =20 typedef struct @@ -75,7 +76,8 @@ typedef enum { DNSMASQ_CAPS_LAST, /* this must always be the last item */ } dnsmasqCapsFlags; =20 -typedef struct _dnsmasqCaps dnsmasqCaps; +#define DNSMASQ_TYPE_CAPS dnsmasq_caps_get_type() +G_DECLARE_FINAL_TYPE(dnsmasqCaps, dnsmasq_caps, DNSMASQ, CAPS, GObject); typedef dnsmasqCaps *dnsmasqCapsPtr; =20 =20 diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c index b35de50f0b..a5902bacc9 100644 --- a/tests/networkxml2conftest.c +++ b/tests/networkxml2conftest.c @@ -122,11 +122,11 @@ static int mymain(void) { int ret =3D 0; - dnsmasqCapsPtr restricted + g_autoptr(dnsmasqCaps) restricted =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.48", DNSMASQ); - dnsmasqCapsPtr full + g_autoptr(dnsmasqCaps) full =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.63\n--bind-dynamic= ", DNSMASQ); - dnsmasqCapsPtr dhcpv6 + g_autoptr(dnsmasqCaps) dhcpv6 =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.64\n--bind-dynamic= ", DNSMASQ); =20 #define DO_TEST(xname, xcaps) \ @@ -168,10 +168,6 @@ mymain(void) DO_TEST("leasetime-hours", full); DO_TEST("leasetime-infinite", full); =20 - virObjectUnref(dhcpv6); - virObjectUnref(full); - virObjectUnref(restricted); - return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371118; cv=none; d=zohomail.com; s=zohoarc; b=d1mWl/u6mHoYxC1tGmwzHOugU1uS6BygoUqPEN/wcYdO1WgrjyEP1KHHi+LWWG57ABQZM7ZEJTX5WBdU/k7r2f3L05rTX1UUtuMWEIyXOHmOu9wLo9RKHApMi8x+uTj1wl5fAspjrUbsf6ETvOP9qbcstCvZALUaKTrbl5XL3h8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371118; 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=DWC7Gwg9T2gVrzfWmvTbuCsnSUsJRdGhqK6SdAy63Hs=; b=cPS7tCrMJ4tqDtfai0Qjhi6vz7FRNTsIy63o1YvJlQ9ZnbG/bUoLjL0XiaKS7gCrd40sKqAlvf6N7stEagIrXs6ilOWfSlFkgeAJ6sh/uVEfDk9HtHQ+ecS/nkAeZ1yMLM7EAcahIN8bvwQXJo4v+GMKSb1oygJbjCief+O6LEY= 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 1589371118538166.6351152178379; Wed, 13 May 2020 04:58:38 -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-146-gRMHm4-OMQCB5FHM60mSqw-1; Wed, 13 May 2020 07:58:35 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5007D100A8ED; Wed, 13 May 2020 11:58:28 +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 2BD08619BF; Wed, 13 May 2020 11:58:28 +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 F10174E984; Wed, 13 May 2020 11:58:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwOJH016055 for ; Wed, 13 May 2020 07:58:25 -0400 Received: by smtp.corp.redhat.com (Postfix) id D9EE3211D021; Wed, 13 May 2020 11:58:24 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D476D211D020 for ; Wed, 13 May 2020 11:58:24 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B1BBD85A5B0 for ; Wed, 13 May 2020 11:58:24 +0000 (UTC) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-467-g9jKw1hLM3qdpWDKIqIQKw-1; Wed, 13 May 2020 07:58:22 -0400 Received: by mail-wm1-f68.google.com with SMTP id u16so28144381wmc.5 for ; Wed, 13 May 2020 04:58:22 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371117; 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=DWC7Gwg9T2gVrzfWmvTbuCsnSUsJRdGhqK6SdAy63Hs=; b=eG7t5cW8rb3epNeCibaWeNhdDfl3BTRc/dKSTKzaXfkQDgeAspu4OJU5Mul44Bx4hSXt6x Om/VwESVmxeLtyie4NUK0bylZwc5dlX/6epnLhNpS898i3pdZqzIjUrUWmQxykUnvaFkru 0Qw3Nje44eOyX667dhNPa1dziYwV+rs= X-MC-Unique: gRMHm4-OMQCB5FHM60mSqw-1 X-MC-Unique: g9jKw1hLM3qdpWDKIqIQKw-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=DWC7Gwg9T2gVrzfWmvTbuCsnSUsJRdGhqK6SdAy63Hs=; b=n2sL/lyOggtfNGXEb+6xqLnTFJ782Y2r4Sq8grfhgm5J+p4N1nPA88XZ6/8H3KumZ2 4e8TDGDxvJ3MCl9F+oVV3Tr7F0lZtP1o76ASYVvLNcuQ6aGn5tSUZhtAtqA7Qa0rR5qQ pw+hwAcN2LMfu7FbrYbINcbHBqz55S6eHkZ01bxZOm5FhEHzICCdaSfBkQWXVVgkcfQi ZpOrZttHY1JMhvMkqzWWEj/fp4wK6brHkV6TwvGMV2xPEgQM9XxzxjtbipWCYEXJKmzX 02FH+1bYSPRUpYMfDy5FL6EtHty8tzhd9/CqKc+/cpcgzWE9Kv46jsqJr5KFqcmIcTWP eLdA== X-Gm-Message-State: AOAM530YGQLmrKlJ8+ZPKhSnDP3x/dXCKjsdrDQ+4zJ351uBeh7M15It 5LWs0c2+AigUjPBoL95Ul9kzEhC0 X-Google-Smtp-Source: ABdhPJzh/qnVghRsUDWN8yFth6GG0Kc6ozGoH4yEPWd3pLxpLRs1VX1OPAgga1k/tFmbY08AzLsSXg== X-Received: by 2002:a05:600c:2146:: with SMTP id v6mr8420575wml.142.1589371100465; Wed, 13 May 2020 04:58:20 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 13/40] conf: convert virDomainChrSourceDef to GObject Date: Wed, 13 May 2020 13:56:57 +0200 Message-Id: <20200513115724.157687-14-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.12 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/conf/domain_conf.c | 39 ++++++++++++++++++--------------------- src/conf/domain_conf.h | 9 ++++++++- src/libvirt_private.syms | 1 + src/qemu/qemu_domain.c | 5 ++--- src/qemu/qemu_process.c | 3 +-- src/qemu/qemu_virtiofs.c | 12 +++++------- 6 files changed, 35 insertions(+), 34 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 62f49a598a..15d371df6e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2483,8 +2483,7 @@ virDomainNetDefClear(virDomainNetDefPtr def) =20 switch (def->type) { case VIR_DOMAIN_NET_TYPE_VHOSTUSER: - virObjectUnref(def->data.vhostuser); - def->data.vhostuser =3D NULL; + g_clear_object(&def->data.vhostuser); break; =20 case VIR_DOMAIN_NET_TYPE_SERVER: @@ -2559,6 +2558,7 @@ virDomainNetDefFree(virDomainNetDefPtr def) VIR_FREE(def); } =20 +G_DEFINE_TYPE(virDomainChrSourceDef, vir_domain_chr_source_def, G_TYPE_OBJ= ECT); =20 const char * virDomainChrSourceDefGetPath(virDomainChrSourceDefPtr chr) @@ -2691,9 +2691,9 @@ virDomainChrSourceDefCopy(virDomainChrSourceDefPtr de= st, } =20 static void -virDomainChrSourceDefDispose(void *obj) +virDomainChrSourceDefFinalize(GObject *obj) { - virDomainChrSourceDefPtr def =3D obj; + virDomainChrSourceDefPtr def =3D VIR_DOMAIN_CHR_SOURCE_DEF(obj); size_t i; =20 virDomainChrSourceDefClear(def); @@ -2704,6 +2704,8 @@ virDomainChrSourceDefDispose(void *obj) virSecurityDeviceLabelDefFree(def->seclabels[i]); VIR_FREE(def->seclabels); } + + G_OBJECT_CLASS(vir_domain_chr_source_def_parent_class)->finalize(obj); } =20 =20 @@ -13309,37 +13311,32 @@ virDomainChrSourceDefParseXML(virDomainChrSourceD= efPtr def, } =20 =20 -static virClassPtr virDomainChrSourceDefClass; +static void +vir_domain_chr_source_def_init(virDomainChrSourceDef *def G_GNUC_UNUSED) +{ +} =20 -static int -virDomainChrSourceDefOnceInit(void) +static void +vir_domain_chr_source_def_class_init(virDomainChrSourceDefClass *klass) { - if (!VIR_CLASS_NEW(virDomainChrSourceDef, virClassForObject())) - return -1; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - return 0; + obj->finalize =3D virDomainChrSourceDefFinalize; } =20 -VIR_ONCE_GLOBAL_INIT(virDomainChrSourceDef); - virDomainChrSourceDefPtr virDomainChrSourceDefNew(virDomainXMLOptionPtr xmlopt) { - virDomainChrSourceDefPtr def =3D NULL; - - if (virDomainChrSourceDefInitialize() < 0) - return NULL; + g_autoptr(virDomainChrSourceDef) def =3D NULL; =20 - if (!(def =3D virObjectNew(virDomainChrSourceDefClass))) - return NULL; + def =3D VIR_DOMAIN_CHR_SOURCE_DEF(g_object_new(VIR_TYPE_DOMAIN_CHR_SOU= RCE_DEF, NULL)); =20 if (xmlopt && xmlopt->privateData.chrSourceNew && !(def->privateData =3D xmlopt->privateData.chrSourceNew())) { - virObjectUnref(def); - def =3D NULL; + return NULL; } =20 - return def; + return g_steal_pointer(&def); } =20 =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 20fc734e06..2a4d8deaf6 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1192,7 +1192,7 @@ struct _virDomainChrSourceReconnectDef { =20 /* The host side information for a character device. */ struct _virDomainChrSourceDef { - virObject parent; + GObject parent; int type; /* virDomainChrType */ virObjectPtr privateData; union { @@ -1238,6 +1238,13 @@ struct _virDomainChrSourceDef { virSecurityDeviceLabelDefPtr *seclabels; }; =20 +#define VIR_TYPE_DOMAIN_CHR_SOURCE_DEF vir_domain_chr_source_def_get_type() +G_DECLARE_FINAL_TYPE(virDomainChrSourceDef, + vir_domain_chr_source_def, + VIR, + DOMAIN_CHR_SOURCE_DEF, + GObject); + /* A complete character device, both host and domain views. */ struct _virDomainChrDef { int deviceType; /* enum virDomainChrDeviceType */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4a927a26bf..5a83243d58 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -220,6 +220,7 @@ virSEVCapabilitiesFree; =20 =20 # conf/domain_conf.h +vir_domain_chr_source_def_get_type; vir_domain_xml_option_get_type; virBlkioDeviceArrayClear; virDiskNameParse; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 252f2a045e..41dfba5597 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2339,7 +2339,7 @@ qemuDomainObjPrivateFree(void *data) =20 qemuDomainObjPrivateDataClear(priv); =20 - virObjectUnref(priv->monConfig); + g_clear_object(&priv->monConfig); qemuDomainObjFreeJob(priv); VIR_FREE(priv->lockState); VIR_FREE(priv->origname); @@ -3960,8 +3960,7 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, error: virBitmapFree(priv->namespaces); priv->namespaces =3D NULL; - virObjectUnref(priv->monConfig); - priv->monConfig =3D NULL; + g_clear_object(&priv->monConfig); virStringListFree(priv->qemuDevices); priv->qemuDevices =3D NULL; return -1; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 0d9a83ab89..101ec3c3d8 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7383,8 +7383,7 @@ void qemuProcessStop(virQEMUDriverPtr driver, if (priv->monConfig) { if (priv->monConfig->type =3D=3D VIR_DOMAIN_CHR_TYPE_UNIX) unlink(priv->monConfig->data.nix.path); - virObjectUnref(priv->monConfig); - priv->monConfig =3D NULL; + g_clear_object(&priv->monConfig); } =20 qemuDomainObjStopWorker(vm); diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c index 2e239cad66..483af5c798 100644 --- a/src/qemu/qemu_virtiofs.c +++ b/src/qemu/qemu_virtiofs.c @@ -80,7 +80,7 @@ qemuVirtioFSOpenChardev(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *socket_path) { - virDomainChrSourceDefPtr chrdev =3D virDomainChrSourceDefNew(NULL); + g_autoptr(virDomainChrSourceDef) chrdev =3D virDomainChrSourceDefNew(N= ULL); virDomainChrDef chr =3D { .source =3D chrdev }; VIR_AUTOCLOSE fd =3D -1; int ret =3D -1; @@ -90,23 +90,21 @@ qemuVirtioFSOpenChardev(virQEMUDriverPtr driver, chrdev->data.nix.path =3D g_strdup(socket_path); =20 if (qemuSecuritySetDaemonSocketLabel(driver->securityManager, vm->def)= < 0) - goto cleanup; + return ret; fd =3D qemuOpenChrChardevUNIXSocket(chrdev); if (fd < 0) { ignore_value(qemuSecurityClearSocketLabel(driver->securityManager,= vm->def)); - goto cleanup; + return ret; } if (qemuSecurityClearSocketLabel(driver->securityManager, vm->def) < 0) - goto cleanup; + return ret; =20 if (qemuSecuritySetChardevLabel(driver, vm, &chr) < 0) - goto cleanup; + return ret; =20 ret =3D fd; fd =3D -1; =20 - cleanup: - virObjectUnref(chrdev); return ret; } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371125; cv=none; d=zohomail.com; s=zohoarc; b=B1dBt1e0UPWLrFv1brUrm/aHR80xu4wznxfhZAg+L/ezsIZ5cus2orD9qYHZzdDyp32JH49miq71c3XsL0eRpbhM+4soVh0Tk34Qo5AuvBra8Ld0YP7cZxyvnvVPbcjO/LPN5r8zjZxa98KfbhVwnyd6tYSHiljgcXLW0BcxUpE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371125; 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=s0U8Q9Bx6M/L7cGoDMdQ7pt+SMg/yeFS/dJhDhzr/Ig=; b=eubA+ePuXi9eZKNYQK6HNttukwLZM8LA1rPzq68Bht4J/2iafD1+I/ZWtsxV2328YJzNS8hdTzS005mBjVR+il8Jr+ebJUwSfeY6jNp95i9fBGDyLjREaYU7JhwmKNt2O+3H6D8xT+NDXdzBepqdOerMpGUcpOoyuV6LOjUJ8U0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371125261654.7575614196063; Wed, 13 May 2020 04:58:45 -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-120-J1XnTtzEOkCsZMyAu7HV2Q-1; Wed, 13 May 2020 07:58:41 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 333D818CA27E; Wed, 13 May 2020 11:58:33 +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 ACF957D959; Wed, 13 May 2020 11:58:32 +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 7E0C24E98E; Wed, 13 May 2020 11:58:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwRB7016075 for ; Wed, 13 May 2020 07:58:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id 42862110EB4; Wed, 13 May 2020 11:58:27 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3D5CA5EDD7 for ; Wed, 13 May 2020 11:58:27 +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-mx02.redhat.com (Postfix) with ESMTPS id 1E791185A78B for ; Wed, 13 May 2020 11:58:27 +0000 (UTC) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-488-mqgzb1mzPTOcm3ez1boZPA-1; Wed, 13 May 2020 07:58:23 -0400 Received: by mail-wm1-f68.google.com with SMTP id d207so8747812wmd.0 for ; Wed, 13 May 2020 04:58:23 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371123; 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=s0U8Q9Bx6M/L7cGoDMdQ7pt+SMg/yeFS/dJhDhzr/Ig=; b=FvPTY2DHsccevpvk4QGqhAsOolE3nRQElUveybAKRXIvWyaaENMm5uXF3dxUjjOYGMR4O9 WtMESXEXJZ8NyV4XX0/LvFi+SUZbWx6CnZ3Up+26SpsRbyG5I+AttWK6dzm961lzJqgOH/ TXMv7zV4nUmYigFq/s/mZfkmJYN/k10= X-MC-Unique: J1XnTtzEOkCsZMyAu7HV2Q-1 X-MC-Unique: mqgzb1mzPTOcm3ez1boZPA-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=s0U8Q9Bx6M/L7cGoDMdQ7pt+SMg/yeFS/dJhDhzr/Ig=; b=GHK0cqfi80xfF8Qqk6DuUsNj2UOsv4ZjrLLULtcTly+H/gFDRkU3n/4LEoIIQrRnJS 1vf+/AYyA42MOewrOExlJ39u6YIGErPCcxEDYWYkWMeC9UtC6kKUGYXTPijY+DHR4KVu JXNFfzS+2cgHgg+oVtSesj/el2tFq5zVKHHYRxpGTvyYC59vgNA+YKGrBFwTHDu0L0Od E5fBDGl8QI3LloILG/myTkcfa3ed85czEzCX997TCo8OViUXf5kcwgyCsbDqGIGN8xGp KsfvqVMXOWe16UKRVW595XZ1ZHsEoEQ6eU59AVJbvns1ElQ8CdXpNZ/WspB3f9NuW5yw /SBA== X-Gm-Message-State: AGi0PuZpAEdHNGNjZrGyDZagmH41tYc1X/uNpP2aIzn6wY3l22ErV2aU mTCq6DyqydziOKZV82VM/uxwBO14 X-Google-Smtp-Source: APiQypL3cdlGlCuyM8wVGkHqXfEEtwaMPiGXmxqd9aku8GvjDNJaGoKVCYsvwDNWABra7+P5FSe+Hw== X-Received: by 2002:a1c:2d02:: with SMTP id t2mr42496058wmt.98.1589371101844; Wed, 13 May 2020 04:58:21 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 14/40] rpc: gendispatch: prepare for GObject conversion Date: Wed, 13 May 2020 13:56:58 +0200 Message-Id: <20200513115724.157687-15-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.13 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" As we slowly convert virObject to GObject, prepare gendispatch.pl to choose the right unref implementation for each object type. Once a type has been converted, just add it to the `gobject_impl` hash. Note though that types explicitly declared should be changed directly where they are used. Signed-off-by: Rafael Fonseca --- src/rpc/gendispatch.pl | 66 +++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 0b2ae59910..bc32246618 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -193,6 +193,22 @@ sub get_conn_method { return "remoteGetHypervisorConn"; } =20 +my %gobject_impl =3D ( +); + +sub use_gobject { + (my $typename =3D shift) =3D~ s/Ptr$//; + return exists($gobject_impl{$typename}); +} + +sub get_unref_method { + my $type =3D shift; + if (use_gobject($type)) { + return "g_object_unref"; + } + return "virObjectUnref"; +} + # Read the input file (usually remote_protocol.x) and form an # opinion about the name, args and return type of each RPC. my ($name, $ProcName, $id, $flags, %calls, @calls, %opts); @@ -584,6 +600,7 @@ elsif ($mode eq "server") { next } elsif ($args_member =3D~ m/^remote_nonnull_(domain|netwo= rk|network_port|storage_pool|storage_vol|interface|secret|nwfilter|nwfilter= _binding) (\S+);/) { my $type_name =3D name_to_TypeName($1); + my $unref_impl =3D get_unref_method("vir${type_name}"); =20 push(@vars_list, "vir${type_name}Ptr $2 =3D NULL"); push(@getters_list, @@ -591,9 +608,11 @@ elsif ($mode eq "server") { " goto cleanup;\n"); push(@args_list, "$2"); push(@free_list, - " virObjectUnref($2);"); + " if ($2)\n" . + " $unref_impl($2);"); } elsif ($args_member =3D~ m/^remote_nonnull_domain_(check= point|snapshot) (\S+);$/) { my $type_name =3D name_to_TypeName($1); + my $unref_impl =3D get_unref_method("virDomain${type_n= ame}"); =20 push(@vars_list, "virDomainPtr dom =3D NULL"); push(@vars_list, "virDomain${type_name}Ptr ${1} =3D NU= LL"); @@ -605,7 +624,8 @@ elsif ($mode eq "server") { " goto cleanup;\n"); push(@args_list, "$1"); push(@free_list, - " virObjectUnref($1);\n" . + " if ($1)\n" . + " $unref_impl($1);\n" . " virObjectUnref(dom);"); } elsif ($args_member =3D~ m/^(?:(?:admin|remote)_string|r= emote_uuid) (\S+)<\S+>;/) { push(@args_list, $conn_var) if !@args_list; @@ -686,6 +706,7 @@ elsif ($mode eq "server") { } } elsif ($args_member =3D~ m/^admin_nonnull_(server) (\S+)= ;/) { my $type_name =3D name_to_TypeName($1); + my $unref_impl =3D get_unref_method("virNet${type_name= }"); =20 push(@vars_list, "virNet${type_name}Ptr $2 =3D NULL"); push(@getters_list, @@ -693,9 +714,11 @@ elsif ($mode eq "server") { " goto cleanup;\n"); push(@args_list, "$2"); push(@free_list, - " virObjectUnref($2);"); + " if ($2)\n" . + " $unref_impl($2);"); } elsif ($args_member =3D~ m/^admin_nonnull_(client) (\S+)= ;/) { my $type_name =3D name_to_TypeName($1); + my $unref_impl =3D get_unref_method("virNetServer${typ= e_name}"); =20 push(@vars_list, "virNetServerPtr srv =3D NULL"); push(@vars_list, "virNetServer${type_name}Ptr $2 =3D N= ULL"); @@ -706,7 +729,9 @@ elsif ($mode eq "server") { " if (!($2 =3D get_nonnull_$1(srv, args->$2)))= \n" . " goto cleanup;\n"); push(@args_list, "$2"); - push(@free_list, " virObjectUnref($2);"); + push(@free_list, + " if ($2)\n" . + " $unref_impl($2);"); push(@free_list, " virObjectUnref(srv);"); } elsif ($args_member =3D~ m/^(\/)?\*/) { # ignore comments @@ -815,10 +840,12 @@ elsif ($mode eq "server") { $single_ret_var =3D undef; $single_ret_by_ref =3D 1; } else { + my $unref_impl =3D get_unref_method("vir${type_nam= e}"); push(@vars_list, "vir${type_name}Ptr $2 =3D NULL"); push(@ret_list, "make_nonnull_$1(&ret->$2, $2);\n"= ); push(@free_list, - " virObjectUnref($2);"); + " if ($2)\n" . + " $unref_impl($2);"); $single_ret_var =3D $2; $single_ret_by_ref =3D 0; $single_ret_check =3D " =3D=3D NULL"; @@ -929,18 +956,22 @@ elsif ($mode eq "server") { die "opaque array without insert@ annotation: = $ret_member"; } elsif ($ret_member =3D~ m/^admin_nonnull_(server|client)= (\S+);/) { my $type_name =3D name_to_TypeName($1); + my $unref_impl; =20 if ($1 eq "client") { + $unref_impl =3D get_unref_method("virNetServer${ty= pe_name}"); push(@vars_list, "virNetServer${type_name}Ptr $2 = =3D NULL"); push(@ret_list, "make_nonnull_$1(&ret->$2, $2);\n"= ); push(@ret_list, "make_nonnull_server(&ret->$2.srv,= srv);\n"); } else { + $unref_impl =3D get_unref_method("virNet${type_nam= e}"); push(@vars_list, "virNet${type_name}Ptr $2 =3D NUL= L"); push(@ret_list, "make_nonnull_$1(&ret->$2, $2);"); } =20 push(@free_list, - " virObjectUnref($2);"); + " if ($2)\n" . + " $unref_impl($2);"); $single_ret_var =3D $2; $single_ret_by_ref =3D 0; $single_ret_check =3D " =3D=3D NULL"; @@ -1245,11 +1276,12 @@ elsif ($mode eq "server") { } =20 if ($modern_ret_as_list) { - print " if (result) {\n"; - print " for (i =3D 0; i < nresults; i++)\n"; - print " virObjectUnref(result[i]);\n"; - print " }\n"; - print " VIR_FREE(result);\n"; + if (use_gobject($modern_ret_struct_name)) { + print " virGObjectListFreeCount"; + } else { + print " virObjectListFreeCount"; + } + print "(result, nresults);\n"; } =20 print " return rv;\n"; @@ -2003,12 +2035,12 @@ elsif ($mode eq "client") { print " }\n"; } if ($modern_ret_as_list) { - print " if (tmp_results) {\n"; - print " for (i =3D 0; i < ret.$single_ret_list_name= .${single_ret_list_name}_len; i++)\n"; - print " virObjectUnref(tmp_results[i]);\n"; - print " VIR_FREE(tmp_results);\n"; - print " }\n"; - print "\n"; + if (use_gobject($modern_ret_var_type)) { + print " virGObjectListFreeCount"; + } else { + print " virObjectListFreeCount"; + } + print "(tmp_results, ret.$single_ret_list_name.${single_re= t_list_name}_len);\n"; } print " xdr_free((xdrproc_t)xdr_$call->{ret}, (char *)&ret)= ;\n"; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371121; cv=none; d=zohomail.com; s=zohoarc; b=mRFBZHepgNG3K275/PmP350Jf5wusUPkhrJwS9yC7Zmsnj8BUTGyasnoFYbw9ZLwskhrz01+8nJNs+iFJtmfnoy13IFmjbamV5zOra5fE5Q1xX9oDsLFrDc+VA6hANT7ciGnmbpJtNrSUAyU1Vq6m0U/Oi8NwfqgkfcVSiqckF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371121; 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=FfgcmHA1NAyC67PTOoWa1YdkZKc2j9Nzlv7K5a33utI=; b=BLHGX8geayesAMd73yHdy0ITtmSX1Murn4B7Tk2iwFzvbz1X2dMHnVXBb9YbNWZp5/qWXbe5Ifjiu5sFDzYtWLkv/xnv2qfmdPg+MSsUmxaO+MvckGYJ5ATLw0pj2gUItXuhns0ihZ9WJStrbF0coW48/1BbSqEUjHTXp7RvP1s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371121858435.96659768661596; Wed, 13 May 2020 04:58:41 -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-347-GQG6VN0TPJStkaDyaWSf6g-1; Wed, 13 May 2020 07:58:38 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AEBA8BFD2; Wed, 13 May 2020 11:58:30 +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 8E2375C1BB; Wed, 13 May 2020 11:58:30 +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 58982180530F; Wed, 13 May 2020 11:58:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwSsU016090 for ; Wed, 13 May 2020 07:58:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 96A4C11921B2; Wed, 13 May 2020 11:58:28 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 91D3511921AF for ; Wed, 13 May 2020 11:58:28 +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-mx02.redhat.com (Postfix) with ESMTPS id 7858E800FFA for ; Wed, 13 May 2020 11:58:28 +0000 (UTC) Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-204-ywSYQWzsMHmppvEhLqoVEQ-1; Wed, 13 May 2020 07:58:25 -0400 Received: by mail-wm1-f46.google.com with SMTP id y24so28194844wma.4 for ; Wed, 13 May 2020 04:58:24 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371120; 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=FfgcmHA1NAyC67PTOoWa1YdkZKc2j9Nzlv7K5a33utI=; b=XEsYK+Mz4QlL6Kt1fnyi9v5U245F+nyMpHbH0I/5v56MP+tV8wceaLCiKMYaGVUcJ3CvSm cym70xQnZHxzvaqcqGsAKv9ToQGn9cuUyJCH/vvKxV0G5gSXBrX3tEspXkUcfgXEqhQjx4 Lw/fJDZ7XGWyQXBRSTFffKkvsfsnnY0= X-MC-Unique: GQG6VN0TPJStkaDyaWSf6g-1 X-MC-Unique: ywSYQWzsMHmppvEhLqoVEQ-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=FfgcmHA1NAyC67PTOoWa1YdkZKc2j9Nzlv7K5a33utI=; b=MGj5YQTWcDLXgrLpyg4xV6z1oz4p1+brGKn4/98DpYlVRRVTbNd/QgTTagktBPMhB/ QmefMUV+Ra7nUNIU0GrNHLbd79v94LrBsO0zMJYqjGoUXmc+qI4hZoCaju3CMqbV+oAB 7xrX2Sl0+GN2HO4m3xOgn0IO+tO+tOVQEBftQp9JAK2/GsoevsNIQpCsFF7sFGZGhbsC ss+uTK9uc1WXqd3N/xkH1uKljhFynGq56a0sWB3V+nlrA8GA8HAOg6ryZfHgRrVCXOjV c6VDa4aYJM6Ulz6KgOwElBWejouK7HWXF2LnPKY0g3bxbx1DrSspBh+St4WILdrU33Pp koYA== X-Gm-Message-State: AGi0PuYme0+zqo/w0OxxZkP6l82eg/O02AAtsfJsAbHMVFQsProrlAp8 XQJTzqOdDegA2LQyW9myuwCa+jP/ X-Google-Smtp-Source: APiQypK9YNavU6CqoWaQvZyHM02GxzJ+6YO0DgD5kCBgmkGbsvbodyBnE2Qq5pCpdUZSaGnV0Oy4HQ== X-Received: by 2002:a7b:c651:: with SMTP id q17mr17969579wmk.52.1589371103453; Wed, 13 May 2020 04:58:23 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 15/40] admin: convert virAdmServer to GObject Date: Wed, 13 May 2020 13:56:59 +0200 Message-Id: <20200513115724.157687-16-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.16 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/admin/libvirt-admin.c | 2 +- src/admin/libvirt_admin_private.syms | 2 +- src/datatypes.c | 42 ++++++++++++++++++---------- src/datatypes.h | 20 +++++++------ src/rpc/gendispatch.pl | 1 + 5 files changed, 42 insertions(+), 25 deletions(-) diff --git a/src/admin/libvirt-admin.c b/src/admin/libvirt-admin.c index 835b5560d2..eccad1d0fc 100644 --- a/src/admin/libvirt-admin.c +++ b/src/admin/libvirt-admin.c @@ -586,7 +586,7 @@ int virAdmServerFree(virAdmServerPtr srv) =20 virCheckAdmServerReturn(srv, -1); =20 - virObjectUnref(srv); + g_clear_object(&srv); return 0; } =20 diff --git a/src/admin/libvirt_admin_private.syms b/src/admin/libvirt_admin= _private.syms index 157a45341e..cfdaba330d 100644 --- a/src/admin/libvirt_admin_private.syms +++ b/src/admin/libvirt_admin_private.syms @@ -34,13 +34,13 @@ xdr_admin_server_set_threadpool_parameters_args; xdr_admin_server_update_tls_files_args; =20 # datatypes.h +vir_adm_server_get_type; virAdmClientClass; virAdmConnectClass; virAdmConnectCloseCallbackDataRegister; virAdmConnectCloseCallbackDataReset; virAdmConnectCloseCallbackDataUnregister; virAdmGetServer; -virAdmServerClass; =20 # Let emacs know we want case-insensitive sorting # Local Variables: diff --git a/src/datatypes.c b/src/datatypes.c index 552115c7a3..2fdb5a1b41 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -71,11 +71,25 @@ virClassPtr virAdmConnectCloseCallbackDataClass; static void virAdmConnectDispose(void *obj); static void virAdmConnectCloseCallbackDataDispose(void *obj); =20 -virClassPtr virAdmServerClass; virClassPtr virAdmClientClass; -static void virAdmServerDispose(void *obj); static void virAdmClientDispose(void *obj); =20 +G_DEFINE_TYPE(virAdmServer, vir_adm_server, G_TYPE_OBJECT); +static void virAdmServerFinalize(GObject *obj); + +static void +vir_adm_server_init(virAdmServer *srv G_GNUC_UNUSED) +{ +} + +static void +vir_adm_server_class_init(virAdmServerClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virAdmServerFinalize; +} + static int virDataTypesOnceInit(void) { @@ -105,7 +119,6 @@ virDataTypesOnceInit(void) =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); - DECLARE_CLASS(virAdmServer); DECLARE_CLASS(virAdmClient); =20 #undef DECLARE_CLASS_COMMON @@ -1173,31 +1186,30 @@ virAdmConnectCloseCallbackDataRegister(virAdmConnec= tCloseCallbackDataPtr cbdata, virAdmServerPtr virAdmGetServer(virAdmConnectPtr conn, const char *name) { - virAdmServerPtr ret =3D NULL; + g_autoptr(virAdmServer) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) - goto error; + return NULL; + + ret =3D VIR_ADM_SERVER(g_object_new(VIR_TYPE_ADM_SERVER, NULL)); =20 - if (!(ret =3D virObjectNew(virAdmServerClass))) - goto error; ret->name =3D g_strdup(name); =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 static void -virAdmServerDispose(void *obj) +virAdmServerFinalize(GObject *obj) { - virAdmServerPtr srv =3D obj; + virAdmServerPtr srv =3D VIR_ADM_SERVER(obj); VIR_DEBUG("release server srv=3D%p name=3D%s", srv, srv->name); =20 VIR_FREE(srv->name); virObjectUnref(srv->conn); + + G_OBJECT_CLASS(vir_adm_server_parent_class)->finalize(obj); } =20 virAdmClientPtr @@ -1215,7 +1227,7 @@ virAdmGetClient(virAdmServerPtr srv, const unsigned l= ong long id, ret->id =3D id; ret->timestamp =3D timestamp; ret->transport =3D transport; - ret->srv =3D virObjectRef(srv); + ret->srv =3D g_object_ref(srv); =20 return ret; error: @@ -1229,5 +1241,5 @@ virAdmClientDispose(void *obj) virAdmClientPtr clt =3D obj; VIR_DEBUG("release client clt=3D%p, id=3D%llu", clt, clt->id); =20 - virObjectUnref(clt->srv); + g_clear_object(&clt->srv); } diff --git a/src/datatypes.h b/src/datatypes.h index 2d0407f7ec..dee21068b3 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -28,6 +28,8 @@ #include "virobject.h" #include "viruuid.h" =20 +#include + extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; extern virClassPtr virDomainCheckpointClass; @@ -44,9 +46,11 @@ extern virClassPtr virStorageVolClass; extern virClassPtr virStoragePoolClass; =20 extern virClassPtr virAdmConnectClass; -extern virClassPtr virAdmServerClass; extern virClassPtr virAdmClientClass; =20 +#define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() +G_DECLARE_FINAL_TYPE(virAdmServer, vir_adm_server, VIR, ADM_SERVER, GObjec= t); + #define virCheckConnectReturn(obj, retval) \ do { \ if (!virObjectIsClass(obj, virConnectClass)) { \ @@ -419,8 +423,8 @@ extern virClassPtr virAdmClientClass; =20 #define virCheckAdmServerReturn(obj, retval) \ do { \ - virAdmServerPtr _srv =3D (obj); \ - if (!virObjectIsClass(_srv, virAdmServerClass) || \ + virAdmServerPtr _srv =3D VIR_ADM_SERVER(obj); \ + if (_srv =3D=3D NULL || \ !virObjectIsClass(_srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -431,8 +435,8 @@ extern virClassPtr virAdmClientClass; } while (0) #define virCheckAdmServerGoto(obj, label) \ do { \ - virAdmServerPtr _srv =3D (obj); \ - if (!virObjectIsClass(_srv, virAdmServerClass) || \ + virAdmServerPtr _srv =3D VIR_ADM_SERVER(obj); \ + if (_srv =3D=3D NULL || \ !virObjectIsClass(_srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -445,7 +449,7 @@ extern virClassPtr virAdmClientClass; do { \ virAdmClientPtr _clt =3D (obj); \ if (!virObjectIsClass(_clt, virAdmClientClass) || \ - !virObjectIsClass(_clt->srv, virAdmServerClass) || \ + !VIR_IS_ADM_SERVER(_clt->srv) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -458,7 +462,7 @@ extern virClassPtr virAdmClientClass; do { \ virAdmClientPtr _clt =3D (obj); \ if (!virObjectIsClass(_clt, virAdmClientClass) || \ - !virObjectIsClass(_clt->srv, virAdmServerClass) || \ + !VIR_IS_ADM_SERVER(_clt->srv) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -573,7 +577,7 @@ struct _virAdmConnect { * Internal structure associated to a daemon server */ struct _virAdmServer { - virObject parent; + GObject parent; virAdmConnectPtr conn; /* pointer back to the admin connectio= n */ char *name; /* the server external name */ }; diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index bc32246618..a9152198d7 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -194,6 +194,7 @@ sub get_conn_method { } =20 my %gobject_impl =3D ( + virAdmServer =3D> 1, ); =20 sub use_gobject { --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371130; cv=none; d=zohomail.com; s=zohoarc; b=EJqGjWxNeaAiM+SaDfCrtROOj91InWokvqUdWEb/SgqEpdt2vEQMk4XD5TMoHTqXXuyllvxoidq4HksckjIJlqUgnB/pXcAh6WTIGLBS3EsgZ/7gS+50nkVPtu4i6cDBJbeN83NtLYbIAN7CDf121SxAUXigNuUHDbhAdFglo6Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371130; 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=vyn6/AXE/iQLWQS39ykoNMGqoTSL1rPlPqTn13EvjU0=; b=StnvW+HNKHawmKlRkR3MtmBe15zrtvdGr93LOsexidVIxY3EYxyVVRjW5+lMJWs7Yt/EM+42F5o0Q4BUET0p6vhDFVYo01FyJszxEUTHgJOozhcgpUXMNmmx/g7dJeY9KV9g6SeVkK4ApAry0czrn0d94iiJxcIEyLzR3U1xvOQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371130105314.4180748371457; Wed, 13 May 2020 04:58:50 -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-307-KCV7UddgMACyr3P0q1v14g-1; Wed, 13 May 2020 07:58:43 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 378B281E22C; Wed, 13 May 2020 11:58:37 +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 0D2F92E034; Wed, 13 May 2020 11:58:37 +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 CF3B31805309; Wed, 13 May 2020 11:58:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwZiZ016124 for ; Wed, 13 May 2020 07:58:35 -0400 Received: by smtp.corp.redhat.com (Postfix) id 12802110EB4; Wed, 13 May 2020 11:58:35 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0D7875EDD7 for ; Wed, 13 May 2020 11:58:32 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 23789800280 for ; Wed, 13 May 2020 11:58:32 +0000 (UTC) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-205-SOWtMD2KMfCnCWfw7qeFtA-1; Wed, 13 May 2020 07:58:27 -0400 Received: by mail-wr1-f50.google.com with SMTP id 50so20007048wrc.11 for ; Wed, 13 May 2020 04:58:27 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371128; 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=vyn6/AXE/iQLWQS39ykoNMGqoTSL1rPlPqTn13EvjU0=; b=NmXKuNCUPwo1+nAaUXuXYToATVrL9+eJI2yw/VLLyJT1+EQXCedEMi0Q8YKAvVeczrOl6P HLYdN55V0tcc1vzPegNPoAZmF05kfdEc1HzSQJtqWuav22VQxOeNqoP1QEP5UpXAuryyf3 MMRBWW2t5KYvHziuJFVX0zYkYxeWDC4= X-MC-Unique: KCV7UddgMACyr3P0q1v14g-1 X-MC-Unique: SOWtMD2KMfCnCWfw7qeFtA-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=vyn6/AXE/iQLWQS39ykoNMGqoTSL1rPlPqTn13EvjU0=; b=jYfSnjduAWRgM9E8vKuWlfJ1jCj7LtrzR679UH6uDJeNwVlIe5ww00ibkUz/c5ZCKs nUlpyQdBkROWbZom0r/rwvGrYYvUGAAjbNRsa6cRO8I8k/ldeZ4mse7y3eewK5zcIjof DNT7e9RQKDStXwtp2wErS2biDxorkYl1CUVlpRKppoV9eybf3M3TjAxFQzwrp1s55wk+ B+0aSJErjE6ASPiU+3ntpi39VhLfTFRdLC9Au8fP0UPCH69tnkV86fWx8wqIEXZ0WrI9 68p7VIvKAc2ISmBOBh6a+Zd37k6bnklMJHwlzToVjMi7un1UZhzOMVpU17wI0ApiWfvC HxgA== X-Gm-Message-State: AGi0PuYGfj7TC8RZVCPpPFJ2eTUENxjduIIb25pAbuWnBsBHbEcW1u7y Yij4/6BszxR9X4gZqgOccfqXUr53 X-Google-Smtp-Source: APiQypLkyaWrpjO4jBqhep55zwkbWIl7y6GnE3u2r2lcWKU5qqBtoLizr53fQvzyJD3QHj9LcMTDOg== X-Received: by 2002:a5d:560c:: with SMTP id l12mr30032845wrv.309.1589371106059; Wed, 13 May 2020 04:58:26 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 16/40] admin: convert virAdmClient to GObject Date: Wed, 13 May 2020 13:57:00 +0200 Message-Id: <20200513115724.157687-17-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.84 on 10.5.11.23 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/admin/libvirt-admin.c | 2 +- src/admin/libvirt_admin_private.syms | 2 +- src/datatypes.c | 36 ++++++++++++++++++---------- src/datatypes.h | 13 +++++----- src/rpc/gendispatch.pl | 1 + 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/admin/libvirt-admin.c b/src/admin/libvirt-admin.c index eccad1d0fc..56c63ea6e6 100644 --- a/src/admin/libvirt-admin.c +++ b/src/admin/libvirt-admin.c @@ -676,7 +676,7 @@ int virAdmClientFree(virAdmClientPtr client) =20 virCheckAdmClientReturn(client, -1); =20 - virObjectUnref(client); + g_clear_object(&client); return 0; } =20 diff --git a/src/admin/libvirt_admin_private.syms b/src/admin/libvirt_admin= _private.syms index cfdaba330d..e402635872 100644 --- a/src/admin/libvirt_admin_private.syms +++ b/src/admin/libvirt_admin_private.syms @@ -34,8 +34,8 @@ xdr_admin_server_set_threadpool_parameters_args; xdr_admin_server_update_tls_files_args; =20 # datatypes.h +vir_adm_client_get_type; vir_adm_server_get_type; -virAdmClientClass; virAdmConnectClass; virAdmConnectCloseCallbackDataRegister; virAdmConnectCloseCallbackDataReset; diff --git a/src/datatypes.c b/src/datatypes.c index 2fdb5a1b41..da0a4ed19d 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -71,8 +71,21 @@ virClassPtr virAdmConnectCloseCallbackDataClass; static void virAdmConnectDispose(void *obj); static void virAdmConnectCloseCallbackDataDispose(void *obj); =20 -virClassPtr virAdmClientClass; -static void virAdmClientDispose(void *obj); +G_DEFINE_TYPE(virAdmClient, vir_adm_client, G_TYPE_OBJECT); +static void virAdmClientFinalize(GObject *obj); + +static void +vir_adm_client_init(virAdmClient *clt G_GNUC_UNUSED) +{ +} + +static void +vir_adm_client_class_init(virAdmClientClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virAdmClientFinalize; +} =20 G_DEFINE_TYPE(virAdmServer, vir_adm_server, G_TYPE_OBJECT); static void virAdmServerFinalize(GObject *obj); @@ -119,7 +132,6 @@ virDataTypesOnceInit(void) =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); - DECLARE_CLASS(virAdmClient); =20 #undef DECLARE_CLASS_COMMON #undef DECLARE_CLASS_LOCKABLE @@ -1216,30 +1228,28 @@ virAdmClientPtr virAdmGetClient(virAdmServerPtr srv, const unsigned long long id, unsigned long long timestamp, unsigned int transport) { - virAdmClientPtr ret =3D NULL; + g_autoptr(virAdmClient) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) - goto error; + return NULL; =20 - if (!(ret =3D virObjectNew(virAdmClientClass))) - goto error; + ret =3D VIR_ADM_CLIENT(g_object_new(VIR_TYPE_ADM_CLIENT, NULL)); =20 ret->id =3D id; ret->timestamp =3D timestamp; ret->transport =3D transport; ret->srv =3D g_object_ref(srv); =20 - return ret; - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 static void -virAdmClientDispose(void *obj) +virAdmClientFinalize(GObject *obj) { - virAdmClientPtr clt =3D obj; + virAdmClientPtr clt =3D VIR_ADM_CLIENT(obj); VIR_DEBUG("release client clt=3D%p, id=3D%llu", clt, clt->id); =20 g_clear_object(&clt->srv); + + G_OBJECT_CLASS(vir_adm_client_parent_class)->finalize(obj); } diff --git a/src/datatypes.h b/src/datatypes.h index dee21068b3..482ad0274c 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -46,10 +46,11 @@ extern virClassPtr virStorageVolClass; extern virClassPtr virStoragePoolClass; =20 extern virClassPtr virAdmConnectClass; -extern virClassPtr virAdmClientClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() G_DECLARE_FINAL_TYPE(virAdmServer, vir_adm_server, VIR, ADM_SERVER, GObjec= t); +#define VIR_TYPE_ADM_CLIENT vir_adm_client_get_type() +G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR, ADM_CLIENT, GObjec= t); =20 #define virCheckConnectReturn(obj, retval) \ do { \ @@ -447,8 +448,8 @@ G_DECLARE_FINAL_TYPE(virAdmServer, vir_adm_server, VIR,= ADM_SERVER, GObject); =20 #define virCheckAdmClientReturn(obj, retval) \ do { \ - virAdmClientPtr _clt =3D (obj); \ - if (!virObjectIsClass(_clt, virAdmClientClass) || \ + virAdmClientPtr _clt =3D VIR_ADM_CLIENT(obj); \ + if (_clt =3D=3D NULL || \ !VIR_IS_ADM_SERVER(_clt->srv) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ @@ -460,8 +461,8 @@ G_DECLARE_FINAL_TYPE(virAdmServer, vir_adm_server, VIR,= ADM_SERVER, GObject); } while (0) #define virCheckAdmClientGoto(obj, label) \ do { \ - virAdmClientPtr _clt =3D (obj); \ - if (!virObjectIsClass(_clt, virAdmClientClass) || \ + virAdmClientPtr _clt =3D VIR_ADM_CLIENT(obj); \ + if (_clt =3D=3D NULL || \ !VIR_IS_ADM_SERVER(_clt->srv) || \ !virObjectIsClass(_clt->srv->conn, virAdmConnectClass)) { \ virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INVALID_CONN, \ @@ -588,7 +589,7 @@ struct _virAdmServer { * Internal structure associated to a client connected to daemon */ struct _virAdmClient { - virObject parent; + GObject parent; virAdmServerPtr srv; /* pointer to the server client is * connected to, which also holds a * reference back to the admin connect= ion diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index a9152198d7..fa5340d5e8 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -194,6 +194,7 @@ sub get_conn_method { } =20 my %gobject_impl =3D ( + virAdmClient =3D> 1, virAdmServer =3D> 1, ); =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371123; cv=none; d=zohomail.com; s=zohoarc; b=bhRFwwLw+O1al4PhiiNZq+R1zOpNStxGDY+FyHb0bD1aUtFzLL6ZGP0BKWvSTYnV3F7A05VnJJKVntgqAdkrThIzybnmy/Axys9zsZLFCDwb53DhS7j73XWGTiKsEwki29CUeBcKoTXmdwL140+lPid4mHyWT8m+5HiOZsjsJFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371123; 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=VZnumMPVN3/WgUYX7XIKn7C1kJm5weP3EGcI9cznw0M=; b=a6F0b1lXEeQoeGIoUQB9ZsdEdgA6r1PfJ0dVw/uGsjC0A1HtzI4H1hqlA/L4mtxfaAw0qRtQl5tjI1mKIEC7Xw4BtyHw4Yuj8Ihf+M65umCon8Ynz7wURbto9JuRQqSv4ATXVHU9poUtDACwxvketUTAZ3UVvrVzpcLSINq2IRo= 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 158937112359712.864366057272491; Wed, 13 May 2020 04:58:43 -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-514-sclpAeArM2ydlhZDY1Rpgg-1; Wed, 13 May 2020 07:58:39 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 771D6835BC5; Wed, 13 May 2020 11:58:34 +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 5326A7D952; Wed, 13 May 2020 11:58:34 +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 270C94E995; Wed, 13 May 2020 11:58:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwXCQ016111 for ; Wed, 13 May 2020 07:58:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3B7A72166BA3; Wed, 13 May 2020 11:58:33 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 363452166BA0 for ; Wed, 13 May 2020 11:58:31 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 47DE7101A526 for ; Wed, 13 May 2020 11:58:31 +0000 (UTC) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-9jEnkoK4Nki_HF1DkLPvGQ-1; Wed, 13 May 2020 07:58:29 -0400 Received: by mail-wr1-f51.google.com with SMTP id l18so20523544wrn.6 for ; Wed, 13 May 2020 04:58:28 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371122; 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=VZnumMPVN3/WgUYX7XIKn7C1kJm5weP3EGcI9cznw0M=; b=QEqziU0IEXbg3F9zXz9ztUyCryWIQsWhhWAFfeERoMiRmzIKJ3562uoq86eh25f3iYdY/u yYxbvomliYcmx/NdyZ9a6uCmlHpmttljS2J0z3Ti5cxPuNj9dvq9/8PxkFZRlYx4gJw8uz QfFOjs+O46OAwnXMMfE5giFZSgE52dI= X-MC-Unique: sclpAeArM2ydlhZDY1Rpgg-1 X-MC-Unique: 9jEnkoK4Nki_HF1DkLPvGQ-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=VZnumMPVN3/WgUYX7XIKn7C1kJm5weP3EGcI9cznw0M=; b=oby8MTR7FMTTYHniZ0uOBVZyobKyJZd9DHKFZcAp+6tP6+Krc0Dt1xqd9W+t+0mc4e pg2ZWIYOskLMAQng7L2vev4VQ8TZ7pqPIsScJMEdJ1yYHppkb3JlKfRi5bzK33BKZv0r umSGqAm8gJvVw5SLyR3YjcJrQsx0QSwl2EytfjKx3lNRzGsEQFrp29/Z9Wc5Aj3YnBcm HlRHtaVWSAYhk1QWo7SO47aZXwU6Dak1hH3PZ2c/gIrBha6idvwHdP0DpS/rZkADInIm R9CCReFnOCpve+H+puW+OSgCON0oxq1QhGz/mkKYND+h8ZEyGjMSdCrHdumfDPQJCo7Q 3fhQ== X-Gm-Message-State: AGi0Pubxq8gl165RXVXt1V2jn5kxxax2NrSsRI3QxI/OQAtSUKorbz0O KMZ7qqyloY2xr5X3TMLoYZXe7B7A X-Google-Smtp-Source: APiQypLf3nQLWri10QeEgPaWVQvobdPZzbLKR4ng06l+GbRWbcOwpBuaC2eTWIansqpJzoXfmricPA== X-Received: by 2002:adf:a1cb:: with SMTP id v11mr32918110wrv.39.1589371107399; Wed, 13 May 2020 04:58:27 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 17/40] datatypes: convert virDomainCheckpoint to GObject Date: Wed, 13 May 2020 13:57:01 +0200 Message-Id: <20200513115724.157687-18-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 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/conf/virdomaincheckpointobjlist.c | 7 ++--- src/datatypes.c | 44 ++++++++++++++++----------- src/datatypes.h | 14 ++++++--- src/libvirt-domain-checkpoint.c | 7 ++--- src/libvirt_private.syms | 2 +- src/rpc/gendispatch.pl | 1 + 6 files changed, 44 insertions(+), 31 deletions(-) diff --git a/src/conf/virdomaincheckpointobjlist.c b/src/conf/virdomainchec= kpointobjlist.c index a4942ea706..2c4d484226 100644 --- a/src/conf/virdomaincheckpointobjlist.c +++ b/src/conf/virdomaincheckpointobjlist.c @@ -234,10 +234,7 @@ virDomainListCheckpoints(virDomainCheckpointObjListPtr= checkpoints, for (i =3D 0; i < count; i++) VIR_FREE(names[i]); VIR_FREE(names); - if (ret < 0 && list) { - for (i =3D 0; i < count; i++) - virObjectUnref(list[i]); - VIR_FREE(list); - } + if (ret < 0) + virGObjectListFreeCount(list, count); return ret; } diff --git a/src/datatypes.c b/src/datatypes.c index da0a4ed19d..0f3365a10a 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,7 +36,6 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virDomainCheckpointClass; virClassPtr virDomainSnapshotClass; virClassPtr virInterfaceClass; virClassPtr virNetworkClass; @@ -52,7 +51,6 @@ virClassPtr virStoragePoolClass; static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virDomainCheckpointDispose(void *obj); static void virDomainSnapshotDispose(void *obj); static void virInterfaceDispose(void *obj); static void virNetworkDispose(void *obj); @@ -65,6 +63,22 @@ static void virStreamDispose(void *obj); static void virStorageVolDispose(void *obj); static void virStoragePoolDispose(void *obj); =20 +G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); +static void virDomainCheckpointFinalize(GObject *obj); + +static void +vir_domain_checkpoint_init(virDomainCheckpoint *dc G_GNUC_UNUSED) +{ +} + +static void +vir_domain_checkpoint_class_init(virDomainCheckpointClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virDomainCheckpointFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -117,7 +131,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virDomainCheckpoint); DECLARE_CLASS(virDomainSnapshot); DECLARE_CLASS(virInterface); DECLARE_CLASS(virNetwork); @@ -984,7 +997,7 @@ virNWFilterBindingDispose(void *obj) * @name: pointer to the domain checkpoint name * * Allocates a new domain checkpoint object. When the object is no longer = needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the domain checkpoint object, or NULL on error. */ @@ -992,30 +1005,25 @@ virDomainCheckpointPtr virGetDomainCheckpoint(virDomainPtr domain, const char *name) { - virDomainCheckpointPtr ret =3D NULL; + g_autoptr(virDomainCheckpoint) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckDomainGoto(domain, error); - virCheckNonNullArgGoto(name, error); + virCheckDomainReturn(domain, NULL); + virCheckNonNullArgReturn(name, NULL); =20 - if (!(ret =3D virObjectNew(virDomainCheckpointClass))) - goto error; + ret =3D VIR_DOMAIN_CHECKPOINT(g_object_new(VIR_TYPE_DOMAIN_CHECKPOINT,= NULL)); ret->name =3D g_strdup(name); =20 ret->domain =3D virObjectRef(domain); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virDomainCheckpointDispose: + * virDomainCheckpointFinalize: * @obj: the domain checkpoint to release * * Unconditionally release all memory associated with a checkpoint. @@ -1025,13 +1033,15 @@ virGetDomainCheckpoint(virDomainPtr domain, * which may also be released if its ref count hits zero. */ static void -virDomainCheckpointDispose(void *obj) +virDomainCheckpointFinalize(GObject *obj) { - virDomainCheckpointPtr checkpoint =3D obj; + virDomainCheckpointPtr checkpoint =3D VIR_DOMAIN_CHECKPOINT(obj); VIR_DEBUG("release checkpoint %p %s", checkpoint, checkpoint->name); =20 VIR_FREE(checkpoint->name); virObjectUnref(checkpoint->domain); + + G_OBJECT_CLASS(vir_domain_checkpoint_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 482ad0274c..e6817dc43d 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virDomainCheckpointClass; extern virClassPtr virDomainSnapshotClass; extern virClassPtr virInterfaceClass; extern virClassPtr virNetworkClass; @@ -45,6 +44,13 @@ extern virClassPtr virStreamClass; extern virClassPtr virStorageVolClass; extern virClassPtr virStoragePoolClass; =20 +#define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() +G_DECLARE_FINAL_TYPE(virDomainCheckpoint, + vir_domain_checkpoint, + VIR, + DOMAIN_CHECKPOINT, + GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -327,8 +333,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckDomainCheckpointReturn(obj, retval) \ do { \ - virDomainCheckpointPtr _check =3D (obj); \ - if (!virObjectIsClass(_check, virDomainCheckpointClass) || \ + virDomainCheckpointPtr _check =3D VIR_DOMAIN_CHECKPOINT(obj); \ + if (_check =3D=3D NULL || \ !virObjectIsClass(_check->domain, virDomainClass) || \ !virObjectIsClass(_check->domain->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOMAIN_CHECKPOINT, \ @@ -749,7 +755,7 @@ struct _virStream { * Internal structure associated with a domain checkpoint */ struct _virDomainCheckpoint { - virObject parent; + GObject parent; char *name; virDomainPtr domain; }; diff --git a/src/libvirt-domain-checkpoint.c b/src/libvirt-domain-checkpoin= t.c index 432c2d5a52..77ef434d30 100644 --- a/src/libvirt-domain-checkpoint.c +++ b/src/libvirt-domain-checkpoint.c @@ -535,14 +535,13 @@ virDomainCheckpointDelete(virDomainCheckpointPtr chec= kpoint, int virDomainCheckpointRef(virDomainCheckpointPtr checkpoint) { - VIR_DEBUG("checkpoint=3D%p, refs=3D%d", checkpoint, - checkpoint ? checkpoint->parent.u.s.refs : 0); + VIR_DEBUG("checkpoint=3D%p", checkpoint); =20 virResetLastError(); =20 virCheckDomainCheckpointReturn(checkpoint, -1); =20 - virObjectRef(checkpoint); + g_object_ref(checkpoint); return 0; } =20 @@ -565,6 +564,6 @@ virDomainCheckpointFree(virDomainCheckpointPtr checkpoi= nt) =20 virCheckDomainCheckpointReturn(checkpoint, -1); =20 - virObjectUnref(checkpoint); + g_object_unref(checkpoint); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5a83243d58..d47714f067 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1356,13 +1356,13 @@ virCPUx86FeatureFilterDropMSR; virCPUx86FeatureFilterSelectMSR; =20 # datatypes.h +vir_domain_checkpoint_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; virConnectCloseCallbackDataGetCallback; virConnectCloseCallbackDataRegister; virConnectCloseCallbackDataUnregister; -virDomainCheckpointClass; virDomainClass; virDomainSnapshotClass; virGetConnect; diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index fa5340d5e8..c8fba3dc2b 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -196,6 +196,7 @@ sub get_conn_method { my %gobject_impl =3D ( virAdmClient =3D> 1, virAdmServer =3D> 1, + virDomainCheckpoint =3D> 1, ); =20 sub use_gobject { --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371128; cv=none; d=zohomail.com; s=zohoarc; b=REg2jURYlX7gjU5zyHaL++5cXjsUKUB/576EHGt98dFlkv7vm0B6GCZVj0kn7xIdTBdA2ONeyufQ8Rni0cwxR+mbrWIAqUVYzPW2NsbrKOakl0uyPEhqG3UFKckJyZRZjvLnFYkMXk/Cd4C5bZm2deWYct2MbZmXR9Thpk2aLjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371128; 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=7vmX6PyKWm4yOZCxlnV9PSgYSxx0U51eDhXqCPR+qlA=; b=MdlYiElDBAGOJxcn9vqUjGcbdVxaU/SSAbSliaGiok+PboIQEln5MFbdN8zTc34EjZQ2PEsZykrEWjRDhHaW6bdWl97Q9nREir/c2YbNb4KOMJMyK7M09uBOlgS1EdBIfTnW5ITgcPs55q9LO/sFuKsfM4cIYxnd1AX6dtZTu1I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371128752309.18177914593673; Wed, 13 May 2020 04:58:48 -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-223-cxWrJi3tNUuK3wbSb4Y7oA-1; Wed, 13 May 2020 07:58:45 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id AC5807BAE; Wed, 13 May 2020 11:58:39 +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 8C2D27D928; Wed, 13 May 2020 11:58:39 +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 5F1514E988; Wed, 13 May 2020 11:58:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwZqa016130 for ; Wed, 13 May 2020 07:58:36 -0400 Received: by smtp.corp.redhat.com (Postfix) id C3CAF202696C; Wed, 13 May 2020 11:58:35 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BE7FF2017E80 for ; Wed, 13 May 2020 11:58:33 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3AFD3811E77 for ; Wed, 13 May 2020 11:58:33 +0000 (UTC) Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-105-5NXyOXyNNgaui6YR6he51A-1; Wed, 13 May 2020 07:58:30 -0400 Received: by mail-wm1-f47.google.com with SMTP id m12so21340052wmc.0 for ; Wed, 13 May 2020 04:58:30 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371127; 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=7vmX6PyKWm4yOZCxlnV9PSgYSxx0U51eDhXqCPR+qlA=; b=GKlQMq/Z4+3vhbBCuA2N85a6i48xju5A+MvLt9oDumR2n6qpgWCebBDvvUeD0HA+/oYIR7 i5Tj1SBTu4LhasJJXxAoGXVhVwLviouTDQZfWrR30rXmtV3fMZJJwLsBi6YI85iCw/g1b2 vnNb9/wYPD+YHsz5rM0O9mvDYj4+PBU= X-MC-Unique: cxWrJi3tNUuK3wbSb4Y7oA-1 X-MC-Unique: 5NXyOXyNNgaui6YR6he51A-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=7vmX6PyKWm4yOZCxlnV9PSgYSxx0U51eDhXqCPR+qlA=; b=WjtZZ1CCh49gpcxSVmjELpMIJVQrOEp24N0MTPHjQYrFGOFxuEWQ1QBU5QsVAj86a4 +JdeJw2e61eOfzLNes5naPLYeY2mn2860rvgjFlQpYq2MDDVGJwjyeAcRrgDyl/sbe1y ci4D4DHmQMuw7tg4Y+SDKwlkmPxSCo7DU/a/a72StDhp/n9PhhzN1G20u39t3CpqIxr+ yULzrYFjJo/agH8b3GCAyBDvzBT5I9DaQ32hN+W44tNg8+xxeYwwz3hEGUUWyBD4N4KC +xxqae+FBONl3o2417NTzWlv8lWq4vgoVggEODzpU4pT0xkHZeBGRgZdU3DGRawSRAHV zi6w== X-Gm-Message-State: AGi0Pub1H6EoFazd4g7IG1CYStajNSyVn8Hj+4CE5bFevuEbj7n3PZC/ LRp6V5Dc3+s+XsX8FfBoy0o+kSKB X-Google-Smtp-Source: APiQypK5vXdWzfEoQrOHprm4SpGu4NGtJ3jCEnShjab4K21z6l8kVkeYgVRwXo8OPQpQUFbNe1sEsg== X-Received: by 2002:a05:600c:290d:: with SMTP id i13mr27274199wmd.81.1589371108672; Wed, 13 May 2020 04:58:28 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 18/40] datatypes: convert virDomainSnapshot to GObject Date: Wed, 13 May 2020 13:57:02 +0200 Message-Id: <20200513115724.157687-19-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.13 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/conf/virdomainsnapshotobjlist.c | 7 ++--- src/datatypes.c | 44 ++++++++++++++++++----------- src/datatypes.h | 12 ++++++-- src/libvirt-domain-snapshot.c | 7 ++--- src/libvirt_private.syms | 2 +- src/qemu/qemu_driver.c | 3 +- src/rpc/gendispatch.pl | 1 + 7 files changed, 44 insertions(+), 32 deletions(-) diff --git a/src/conf/virdomainsnapshotobjlist.c b/src/conf/virdomainsnapsh= otobjlist.c index 910b0714c7..54d1892dc4 100644 --- a/src/conf/virdomainsnapshotobjlist.c +++ b/src/conf/virdomainsnapshotobjlist.c @@ -285,10 +285,7 @@ virDomainListSnapshots(virDomainSnapshotObjListPtr sna= pshots, for (i =3D 0; i < count; i++) VIR_FREE(names[i]); VIR_FREE(names); - if (ret < 0 && list) { - for (i =3D 0; i < count; i++) - virObjectUnref(list[i]); - VIR_FREE(list); - } + if (ret < 0) + virGObjectListFreeCount(list, count); return ret; } diff --git a/src/datatypes.c b/src/datatypes.c index 0f3365a10a..504e045bd6 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,7 +36,6 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virDomainSnapshotClass; virClassPtr virInterfaceClass; virClassPtr virNetworkClass; virClassPtr virNetworkPortClass; @@ -51,7 +50,6 @@ virClassPtr virStoragePoolClass; static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virDomainSnapshotDispose(void *obj); static void virInterfaceDispose(void *obj); static void virNetworkDispose(void *obj); static void virNetworkPortDispose(void *obj); @@ -79,6 +77,22 @@ vir_domain_checkpoint_class_init(virDomainCheckpointClas= s *klass) obj->finalize =3D virDomainCheckpointFinalize; } =20 +G_DEFINE_TYPE(virDomainSnapshot, vir_domain_snapshot, G_TYPE_OBJECT); +static void virDomainSnapshotFinalize(GObject *obj); + +static void +vir_domain_snapshot_init(virDomainSnapshot *ds G_GNUC_UNUSED) +{ +} + +static void +vir_domain_snapshot_class_init(virDomainSnapshotClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virDomainSnapshotFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -131,7 +145,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virDomainSnapshot); DECLARE_CLASS(virInterface); DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); @@ -1051,37 +1064,32 @@ virDomainCheckpointFinalize(GObject *obj) * @name: pointer to the domain snapshot name * * Allocates a new domain snapshot object. When the object is no longer ne= eded, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the domain snapshot object, or NULL on error. */ virDomainSnapshotPtr virGetDomainSnapshot(virDomainPtr domain, const char *name) { - virDomainSnapshotPtr ret =3D NULL; + g_autoptr(virDomainSnapshot) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckDomainGoto(domain, error); - virCheckNonNullArgGoto(name, error); + virCheckDomainReturn(domain, NULL); + virCheckNonNullArgReturn(name, NULL); =20 - if (!(ret =3D virObjectNew(virDomainSnapshotClass))) - goto error; + ret =3D VIR_DOMAIN_SNAPSHOT(g_object_new(VIR_TYPE_DOMAIN_SNAPSHOT, NUL= L)); ret->name =3D g_strdup(name); =20 ret->domain =3D virObjectRef(domain); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virDomainSnapshotDispose: + * virDomainSnapshotFinalize: * @obj: the domain snapshot to release * * Unconditionally release all memory associated with a snapshot. @@ -1091,13 +1099,15 @@ virGetDomainSnapshot(virDomainPtr domain, const cha= r *name) * which may also be released if its ref count hits zero. */ static void -virDomainSnapshotDispose(void *obj) +virDomainSnapshotFinalize(GObject *obj) { - virDomainSnapshotPtr snapshot =3D obj; + virDomainSnapshotPtr snapshot =3D VIR_DOMAIN_SNAPSHOT(obj); VIR_DEBUG("release snapshot %p %s", snapshot, snapshot->name); =20 VIR_FREE(snapshot->name); virObjectUnref(snapshot->domain); + + G_OBJECT_CLASS(vir_domain_snapshot_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index e6817dc43d..9dfb18147e 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virDomainSnapshotClass; extern virClassPtr virInterfaceClass; extern virClassPtr virNetworkClass; extern virClassPtr virNetworkPortClass; @@ -51,6 +50,13 @@ G_DECLARE_FINAL_TYPE(virDomainCheckpoint, DOMAIN_CHECKPOINT, GObject); =20 +#define VIR_TYPE_DOMAIN_SNAPSHOT vir_domain_snapshot_get_type() +G_DECLARE_FINAL_TYPE(virDomainSnapshot, + vir_domain_snapshot, + VIR, + DOMAIN_SNAPSHOT, + GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -349,7 +355,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); #define virCheckDomainSnapshotReturn(obj, retval) \ do { \ virDomainSnapshotPtr _snap =3D (obj); \ - if (!virObjectIsClass(_snap, virDomainSnapshotClass) || \ + if (_snap =3D=3D NULL || \ !virObjectIsClass(_snap->domain, virDomainClass) || \ !virObjectIsClass(_snap->domain->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOMAIN_SNAPSHOT, \ @@ -767,7 +773,7 @@ struct _virDomainCheckpoint { * Internal structure associated with a domain snapshot */ struct _virDomainSnapshot { - virObject parent; + GObject parent; char *name; virDomainPtr domain; }; diff --git a/src/libvirt-domain-snapshot.c b/src/libvirt-domain-snapshot.c index 33593e11e9..ce870de712 100644 --- a/src/libvirt-domain-snapshot.c +++ b/src/libvirt-domain-snapshot.c @@ -1080,14 +1080,13 @@ virDomainSnapshotDelete(virDomainSnapshotPtr snapsh= ot, int virDomainSnapshotRef(virDomainSnapshotPtr snapshot) { - VIR_DEBUG("snapshot=3D%p, refs=3D%d", snapshot, - snapshot ? snapshot->parent.u.s.refs : 0); + VIR_DEBUG("snapshot=3D%p", snapshot); =20 virResetLastError(); =20 virCheckDomainSnapshotReturn(snapshot, -1); =20 - virObjectRef(snapshot); + g_object_ref(snapshot); return 0; } =20 @@ -1110,6 +1109,6 @@ virDomainSnapshotFree(virDomainSnapshotPtr snapshot) =20 virCheckDomainSnapshotReturn(snapshot, -1); =20 - virObjectUnref(snapshot); + g_object_unref(snapshot); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d47714f067..be779a2d33 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1357,6 +1357,7 @@ virCPUx86FeatureFilterSelectMSR; =20 # datatypes.h vir_domain_checkpoint_get_type; +vir_domain_snapshot_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1364,7 +1365,6 @@ virConnectCloseCallbackDataGetCallback; virConnectCloseCallbackDataRegister; virConnectCloseCallbackDataUnregister; virDomainClass; -virDomainSnapshotClass; virGetConnect; virGetDomain; virGetDomainCheckpoint; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 13d3948bd6..26b7450e84 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15848,8 +15848,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, cfg->snapshotDir) < 0) { /* if writing of metadata fails, error out rather than trying * to silently carry on without completing the snapshot */ - virObjectUnref(snapshot); - snapshot =3D NULL; + g_clear_object(&snapshot); virReportError(VIR_ERR_INTERNAL_ERROR, _("unable to save metadata for snapshot %s"), snap->def->name); diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index c8fba3dc2b..bca3b33e80 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -197,6 +197,7 @@ my %gobject_impl =3D ( virAdmClient =3D> 1, virAdmServer =3D> 1, virDomainCheckpoint =3D> 1, + virDomainSnapshot =3D> 1, ); =20 sub use_gobject { --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371131; cv=none; d=zohomail.com; s=zohoarc; b=YJZQAvJAg+2j+MnPkr9A0z+LwNoF7LjdqN6wCOVyVyhp/kFWQ2cb3Oobmoxq710H2RwO1d3hqhJvbEOv8C4qjVdahpaCwKgm70yc2Y6iQG6JeTLK5gm3jBNC2KHYe6wg71+7MbI0UlKsHVGkqh7mL3tW6h8UQnE33njj38iJ9IQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371131; 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=0LirmsRg+wStUoKTdAftJGFNZKOuLym3yZ2t2Dr2m3w=; b=jYq3vGHg/6JmZ3nqlRCY5t/F8eHuHMGLeoBlHhasUD7jutczxAuRWS8tC64Fi+9Qeu/Yd4PA5K8ziCa1ITzq0el/CptJe4vKUx28oszsBHs5TZnW++c2xe4WCgRKbGisdwicm20Htw8fTXUS3A7tgZn8DDP9IRTQ1bb5YZU8d5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371131308273.21755489159784; Wed, 13 May 2020 04:58:51 -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-468-QvrW9Jl7MnOp_wy0tjFWug-1; Wed, 13 May 2020 07:58:47 -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 07138BFD8; Wed, 13 May 2020 11:58:42 +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 DC4205D9FC; Wed, 13 May 2020 11:58:41 +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 ADF544E9B7; Wed, 13 May 2020 11:58:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwa5F016143 for ; Wed, 13 May 2020 07:58:36 -0400 Received: by smtp.corp.redhat.com (Postfix) id 75FFA20110C7; Wed, 13 May 2020 11:58:36 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 709FD2029F6F for ; Wed, 13 May 2020 11:58:36 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 52E788007AC for ; Wed, 13 May 2020 11:58:36 +0000 (UTC) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-275-SRzCAXSkM3mc4I280BKoVQ-1; Wed, 13 May 2020 07:58:33 -0400 Received: by mail-wr1-f42.google.com with SMTP id l17so6982098wrr.4 for ; Wed, 13 May 2020 04:58:33 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371129; 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=0LirmsRg+wStUoKTdAftJGFNZKOuLym3yZ2t2Dr2m3w=; b=NatrPnt2VBWuLDSYrZOAv+Cr5nfeSo/mE2mSsZHSWaQCqGL/Qk2P6wb/qyqxnwaWvdTPN6 YsfMld9Nr8N2YBX2lk97JJV4sLn41Rdwse6RTqH5Pl0wlH45tmDnbkIoL384TsikNJbTjq +tZrTji2TmLn5djwI9ELsfBpBSSH3+g= X-MC-Unique: QvrW9Jl7MnOp_wy0tjFWug-1 X-MC-Unique: SRzCAXSkM3mc4I280BKoVQ-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=0LirmsRg+wStUoKTdAftJGFNZKOuLym3yZ2t2Dr2m3w=; b=G+A0P3GfP3mOgQMjGZvESNeFopM9jScoOp0pSjdOK20VMaCKgkrWEh2mLzLrADtjW3 Hc54Hw57sojg/CNxmxxOxErdU38Ocmv4WQsddnB8UoMWFgONWerxd51QIlYoq4dgwX5W IzI7CsBQov35PW0QUe+32sgWDeRHP5aTu1RuZs6aipAOeaAun8aZ4hh6waNSkGdltirU /ZYt4RaU/BpEj8/xcJiLOmf1sxBaPeEU+OdCYW8E1GPcvYKW4IKGF6JukZ24M0E1TEgz tRd4ucAsqq1LryVTry2I4EPlV7xWHacTD24Sow6a9fKuFxg7wdV8nVSavdrbYsYwSfNC Ld6Q== X-Gm-Message-State: AGi0PuYgUJ8hCwfMhLlZ7B8djwjri3Okyb4+3WJvADg1PqPa5JPU3/Uq ot3demItWQZT1k96/2Y0M7seobHL X-Google-Smtp-Source: APiQypLSoLtxy3iqEGtzQgQAlLx2s+0X/+SyR4guF5qmyGnBoTTGQ/ws7ZNAMkZMOVXPS/rVhyqalw== X-Received: by 2002:adf:d4c6:: with SMTP id w6mr31888059wrk.92.1589371112434; Wed, 13 May 2020 04:58:32 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 19/40] datatypes: convert virNWFilter to GObject Date: Wed, 13 May 2020 13:57:03 +0200 Message-Id: <20200513115724.157687-20-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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/conf/virnwfilterobj.c | 7 +----- src/datatypes.c | 46 ++++++++++++++++++++++++--------------- src/datatypes.h | 10 +++++---- src/libvirt-nwfilter.c | 7 +++--- src/libvirt_private.syms | 2 +- src/rpc/gendispatch.pl | 1 + 6 files changed, 40 insertions(+), 33 deletions(-) diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c index c9e224061d..c08dc7a5d6 100644 --- a/src/conf/virnwfilterobj.c +++ b/src/conf/virnwfilterobj.c @@ -472,12 +472,7 @@ virNWFilterObjListExport(virConnectPtr conn, ret =3D nfilters; =20 cleanup: - if (tmp_filters) { - for (i =3D 0; i < nfilters; i ++) - virObjectUnref(tmp_filters[i]); - } - VIR_FREE(tmp_filters); - + virGObjectListFreeCount(tmp_filters, nfilters); return ret; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index 504e045bd6..06a13a724a 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -40,7 +40,6 @@ virClassPtr virInterfaceClass; virClassPtr virNetworkClass; virClassPtr virNetworkPortClass; virClassPtr virNodeDeviceClass; -virClassPtr virNWFilterClass; virClassPtr virNWFilterBindingClass; virClassPtr virSecretClass; virClassPtr virStreamClass; @@ -54,7 +53,6 @@ static void virInterfaceDispose(void *obj); static void virNetworkDispose(void *obj); static void virNetworkPortDispose(void *obj); static void virNodeDeviceDispose(void *obj); -static void virNWFilterDispose(void *obj); static void virNWFilterBindingDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); @@ -93,6 +91,22 @@ vir_domain_snapshot_class_init(virDomainSnapshotClass *k= lass) obj->finalize =3D virDomainSnapshotFinalize; } =20 +G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); +static void virNWFilterFinalize(GObject *obj); + +static void +vir_nw_filter_init(virNWFilter *filter G_GNUC_UNUSED) +{ +} + +static void +vir_nw_filter_class_init(virNWFilterClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virNWFilterFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -149,7 +163,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); - DECLARE_CLASS(virNWFilter); DECLARE_CLASS(virNWFilterBinding); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); @@ -883,7 +896,7 @@ virStreamDispose(void *obj) * @uuid: pointer to the uuid * * Allocates a new network filter object. When the object is no longer nee= ded, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the network filter object, or NULL on error. */ @@ -891,17 +904,16 @@ virNWFilterPtr virGetNWFilter(virConnectPtr conn, const char *name, const unsigned char *uuid) { - virNWFilterPtr ret =3D NULL; + g_autoptr(virNWFilter) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); - virCheckNonNullArgGoto(uuid, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virNWFilterClass))) - goto error; + ret =3D VIR_NW_FILTER(g_object_new(VIR_TYPE_NW_FILTER, NULL)); =20 ret->name =3D g_strdup(name); =20 @@ -909,16 +921,12 @@ virGetNWFilter(virConnectPtr conn, const char *name, =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virNWFilterDispose: + * virNWFilterFinalize: * @obj: the network filter to release * * Unconditionally release all memory associated with a nwfilter. @@ -928,9 +936,9 @@ virGetNWFilter(virConnectPtr conn, const char *name, * which may also be released if its ref count hits zero. */ static void -virNWFilterDispose(void *obj) +virNWFilterFinalize(GObject *obj) { - virNWFilterPtr nwfilter =3D obj; + virNWFilterPtr nwfilter =3D VIR_NW_FILTER(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(nwfilter->uuid, uuidstr); @@ -938,6 +946,8 @@ virNWFilterDispose(void *obj) =20 VIR_FREE(nwfilter->name); virObjectUnref(nwfilter->conn); + + G_OBJECT_CLASS(vir_nw_filter_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 9dfb18147e..b51514d579 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -36,7 +36,6 @@ extern virClassPtr virInterfaceClass; extern virClassPtr virNetworkClass; extern virClassPtr virNetworkPortClass; extern virClassPtr virNodeDeviceClass; -extern virClassPtr virNWFilterClass; extern virClassPtr virNWFilterBindingClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; @@ -57,6 +56,9 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, DOMAIN_SNAPSHOT, GObject); =20 +#define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() +G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -311,8 +313,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNWFilterReturn(obj, retval) \ do { \ - virNWFilterPtr _nw =3D (obj); \ - if (!virObjectIsClass(_nw, virNWFilterClass) || \ + virNWFilterPtr _nw =3D VIR_NW_FILTER(obj); \ + if (_nw =3D=3D NULL || \ !virObjectIsClass(_nw->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NWFILTER, \ VIR_ERR_INVALID_NWFILTER, \ @@ -784,7 +786,7 @@ struct _virDomainSnapshot { * Internal structure associated to a network filter */ struct _virNWFilter { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *name; /* the network filter external na= me */ unsigned char uuid[VIR_UUID_BUFLEN]; /* the network filter unique iden= tifier */ diff --git a/src/libvirt-nwfilter.c b/src/libvirt-nwfilter.c index d28220db8a..cd3f5759b7 100644 --- a/src/libvirt-nwfilter.c +++ b/src/libvirt-nwfilter.c @@ -281,7 +281,7 @@ virNWFilterFree(virNWFilterPtr nwfilter) =20 virCheckNWFilterReturn(nwfilter, -1); =20 - virObjectUnref(nwfilter); + g_object_unref(nwfilter); return 0; } =20 @@ -503,14 +503,13 @@ virNWFilterGetXMLDesc(virNWFilterPtr nwfilter, unsign= ed int flags) int virNWFilterRef(virNWFilterPtr nwfilter) { - VIR_DEBUG("nwfilter=3D%p refs=3D%d", nwfilter, - nwfilter ? nwfilter->parent.u.s.refs : 0); + VIR_DEBUG("nwfilter=3D%p", nwfilter); =20 virResetLastError(); =20 virCheckNWFilterReturn(nwfilter, -1); =20 - virObjectRef(nwfilter); + g_object_ref(nwfilter); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index be779a2d33..3080063199 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1358,6 +1358,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_nw_filter_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1384,7 +1385,6 @@ virNetworkClass; virNetworkPortClass; virNewConnectCloseCallbackData; virNodeDeviceClass; -virNWFilterClass; virSecretClass; virStoragePoolClass; virStorageVolClass; diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index bca3b33e80..b51e2715ee 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -198,6 +198,7 @@ my %gobject_impl =3D ( virAdmServer =3D> 1, virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, + virNWFilter =3D> 1, ); =20 sub use_gobject { --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; 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 207.211.31.81 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=1589371132; cv=none; d=zohomail.com; s=zohoarc; b=fcomL+nZ/IqvkkVwnKzcomtpHp+weB7VzuVszgos6KEl19G9PDP1tYRSXs1J0P0vyymyeh1C/ufuRf25QKnc9jqi9EtsiZih+yzYGlXIcDIZN7SkHdUu1nZnvffv379Wv4bnoxJ8hkpca4qM92Z04cBub60zLhzlPm5STru7X1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371132; 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=5r/KyTzcN3p7lGVyn5OPtYkwcIox+s4gahaqgCmOYF0=; b=jWOXkkQc5A3AJhyF1FYpcmgD5vuoYImHNNQotlhsW9FQQ8qVO7HnXz+eKw48JppCwUrhjFDsCzwQ1HhxDByCr2nKFqZWwaJACHCoJemlNdStZnEr49l0zSuVqDoNiuiqiZEkgUqrm94yBHg99hLnZPOKPqP46+URdAzEXIlX80E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371132937355.55436421565344; Wed, 13 May 2020 04:58:52 -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-7-7qsvIBQfPYqE84cfiGG_8A-1; Wed, 13 May 2020 07:58:49 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4EE65100CCC5; Wed, 13 May 2020 11:58:44 +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 2F015610AF; Wed, 13 May 2020 11:58:44 +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 00C684E9BE; Wed, 13 May 2020 11:58:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBweHf016177 for ; Wed, 13 May 2020 07:58:40 -0400 Received: by smtp.corp.redhat.com (Postfix) id 52C102166BA0; Wed, 13 May 2020 11:58:40 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4D1072166B27 for ; Wed, 13 May 2020 11:58:40 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2BE78916103 for ; Wed, 13 May 2020 11:58:40 +0000 (UTC) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-189-V5R69QGUNdieIuuZ_famYg-1; Wed, 13 May 2020 07:58:35 -0400 Received: by mail-wr1-f42.google.com with SMTP id h17so11643885wrc.8 for ; Wed, 13 May 2020 04:58:35 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371131; 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=5r/KyTzcN3p7lGVyn5OPtYkwcIox+s4gahaqgCmOYF0=; b=au9uGOPNIkDYxkgkbB9G0zyGep27qlTFsgjGCdijtSJWExiyFeHCYMwt13uKqQTgDXvDPU LRvn/3u9hLL3ykHriYhcuxjGA6eWPw2PsVVff5vx6DXDBFrhr1dUt479dknAfa0qRK/Wig mreyMgamVJ6O0NWJlSM/bBNlwa1Dasc= X-MC-Unique: 7qsvIBQfPYqE84cfiGG_8A-1 X-MC-Unique: V5R69QGUNdieIuuZ_famYg-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=5r/KyTzcN3p7lGVyn5OPtYkwcIox+s4gahaqgCmOYF0=; b=seTlU7A2c4NFd0evkKnfxUdMigehc+HZLcfPOnhfoQyrgl+1G9boTOqG2PJJ1UeZsz L6MsgmrJSYCgIOqZx9Z1khCg4AYkB0WnsBfFTjuiIitW5uvsbPVQx22AK1P0yNWagWCU l83iHHkWXJUU+D8gCNJHCet59YTS6540PH+6kZxJZH7Kiallppd/Uip4xWz/sg9XfZh7 QxtfuVTyq9LhEK63roqpTGqP8myfOFWJ9butxQboZxEnZ4GWwwtyximjWPlCjYqkDgLY BdPGpbWRlPdZfr9R9fS8SrtZ6TMs9MvERcwkJuSOemIxTR1RcRAazLPhdbZhRu41nQ78 yN+Q== X-Gm-Message-State: AGi0PuYfvecV+xiGo21T9gr8FvQo06L9YGPrq01W7FsFpIhWm9zf+s+/ pK1LT5OUdEwCDlU4ZwNwkYDBoH7f X-Google-Smtp-Source: APiQypIs6RTwCgBVbxDcVCuBGzGLxwzX/W+DkkOaR3rMnqPZzSBTXIQD0mJWLJ2bg8QcldotLIQBvw== X-Received: by 2002:a5d:6144:: with SMTP id y4mr19903139wrt.185.1589371113929; Wed, 13 May 2020 04:58:33 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 20/40] datatypes: convert virNWFilterBinding to GObject Date: Wed, 13 May 2020 13:57:04 +0200 Message-Id: <20200513115724.157687-21-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.12 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/conf/virnwfilterbindingobjlist.c | 2 +- src/datatypes.c | 44 +++++++++++++++++----------- src/datatypes.h | 14 ++++++--- src/libvirt-nwfilter.c | 7 ++--- src/libvirt_private.syms | 1 + src/nwfilter/nwfilter_driver.c | 3 +- src/rpc/gendispatch.pl | 1 + 7 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/conf/virnwfilterbindingobjlist.c b/src/conf/virnwfilterbin= dingobjlist.c index 97e4d3c49b..4f4f295b92 100644 --- a/src/conf/virnwfilterbindingobjlist.c +++ b/src/conf/virnwfilterbindingobjlist.c @@ -489,7 +489,7 @@ virNWFilterBindingObjListExport(virNWFilterBindingObjLi= stPtr bindings, cleanup: virObjectListFreeCount(bindingobjs, nbindings); if (ret < 0) { - virObjectListFreeCount(*bindinglist, nbindings); + virGObjectListFreeCount(*bindinglist, nbindings); *bindinglist =3D NULL; } return ret; diff --git a/src/datatypes.c b/src/datatypes.c index 06a13a724a..d95e7e5fcc 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -40,7 +40,6 @@ virClassPtr virInterfaceClass; virClassPtr virNetworkClass; virClassPtr virNetworkPortClass; virClassPtr virNodeDeviceClass; -virClassPtr virNWFilterBindingClass; virClassPtr virSecretClass; virClassPtr virStreamClass; virClassPtr virStorageVolClass; @@ -53,7 +52,6 @@ static void virInterfaceDispose(void *obj); static void virNetworkDispose(void *obj); static void virNetworkPortDispose(void *obj); static void virNodeDeviceDispose(void *obj); -static void virNWFilterBindingDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); static void virStorageVolDispose(void *obj); @@ -107,6 +105,22 @@ vir_nw_filter_class_init(virNWFilterClass *klass) obj->finalize =3D virNWFilterFinalize; } =20 +G_DEFINE_TYPE(virNWFilterBinding, vir_nw_filter_binding, G_TYPE_OBJECT); +static void virNWFilterBindingFinalize(GObject *obj); + +static void +vir_nw_filter_binding_init(virNWFilterBinding *bdg G_GNUC_UNUSED) +{ +} + +static void +vir_nw_filter_binding_class_init(virNWFilterBindingClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virNWFilterBindingFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -163,7 +177,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); - DECLARE_CLASS(virNWFilterBinding); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); DECLARE_CLASS(virStorageVol); @@ -958,7 +971,7 @@ virNWFilterFinalize(GObject *obj) * @filtername: name of the network filter * * Allocates a new network filter binding object. When the object is no lo= nger - * needed, virObjectUnref() must be called in order to not leak data. + * needed, g_object_unref() must be called in order to not leak data. * * Returns a pointer to the network filter binding object, or NULL on erro= r. */ @@ -966,16 +979,15 @@ virNWFilterBindingPtr virGetNWFilterBinding(virConnectPtr conn, const char *portdev, const char *filtername) { - virNWFilterBindingPtr ret =3D NULL; + g_autoptr(virNWFilterBinding) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(portdev, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(portdev, NULL); =20 - if (!(ret =3D virObjectNew(virNWFilterBindingClass))) - goto error; + ret =3D VIR_NW_FILTER_BINDING(g_object_new(VIR_TYPE_NW_FILTER_BINDING,= NULL)); =20 ret->portdev =3D g_strdup(portdev); =20 @@ -983,16 +995,12 @@ virGetNWFilterBinding(virConnectPtr conn, const char = *portdev, =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virNWFilterBindingDispose: + * virNWFilterBindingFinalize: * @obj: the network filter binding to release * * Unconditionally release all memory associated with a nwfilter binding. @@ -1002,15 +1010,17 @@ virGetNWFilterBinding(virConnectPtr conn, const cha= r *portdev, * which may also be released if its ref count hits zero. */ static void -virNWFilterBindingDispose(void *obj) +virNWFilterBindingFinalize(GObject *obj) { - virNWFilterBindingPtr binding =3D obj; + virNWFilterBindingPtr binding =3D VIR_NW_FILTER_BINDING(obj); =20 VIR_DEBUG("release binding %p %s", binding, binding->portdev); =20 VIR_FREE(binding->portdev); VIR_FREE(binding->filtername); virObjectUnref(binding->conn); + + G_OBJECT_CLASS(vir_nw_filter_binding_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index b51514d579..5f0ab5c84b 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -36,7 +36,6 @@ extern virClassPtr virInterfaceClass; extern virClassPtr virNetworkClass; extern virClassPtr virNetworkPortClass; extern virClassPtr virNodeDeviceClass; -extern virClassPtr virNWFilterBindingClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; extern virClassPtr virStorageVolClass; @@ -59,6 +58,13 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, #define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); =20 +#define VIR_TYPE_NW_FILTER_BINDING vir_nw_filter_binding_get_type() +G_DECLARE_FINAL_TYPE(virNWFilterBinding, + vir_nw_filter_binding, + VIR, + NW_FILTER_BINDING, + GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -327,8 +333,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNWFilterBindingReturn(obj, retval) \ do { \ - virNWFilterBindingPtr _nw =3D (obj); \ - if (!virObjectIsClass(_nw, virNWFilterBindingClass) || \ + virNWFilterBindingPtr _nw =3D VIR_NW_FILTER_BINDING(obj); \ + if (_nw =3D=3D NULL || \ !virObjectIsClass(_nw->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NWFILTER, \ VIR_ERR_INVALID_NWFILTER_BINDING, \ @@ -799,7 +805,7 @@ struct _virNWFilter { * Internal structure associated to a network filter port binding */ struct _virNWFilterBinding { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *portdev; /* the network filter port device= name */ char *filtername; /* the network filter name */ diff --git a/src/libvirt-nwfilter.c b/src/libvirt-nwfilter.c index cd3f5759b7..ac34d1fea0 100644 --- a/src/libvirt-nwfilter.c +++ b/src/libvirt-nwfilter.c @@ -621,7 +621,7 @@ virNWFilterBindingFree(virNWFilterBindingPtr binding) =20 virCheckNWFilterBindingReturn(binding, -1); =20 - virObjectUnref(binding); + g_object_unref(binding); return 0; } =20 @@ -819,13 +819,12 @@ virNWFilterBindingGetXMLDesc(virNWFilterBindingPtr bi= nding, unsigned int flags) int virNWFilterBindingRef(virNWFilterBindingPtr binding) { - VIR_DEBUG("binding=3D%p refs=3D%d", binding, - binding ? binding->parent.u.s.refs : 0); + VIR_DEBUG("binding=3D%p", binding); =20 virResetLastError(); =20 virCheckNWFilterBindingReturn(binding, -1); =20 - virObjectRef(binding); + g_object_ref(binding); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3080063199..e93d005bba 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1358,6 +1358,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_nw_filter_binding_get_type; vir_nw_filter_get_type; virConnectClass; virConnectCloseCallbackDataCall; diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 1c407727db..cbf396342e 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -785,8 +785,7 @@ nwfilterBindingCreateXML(virConnectPtr conn, =20 if (virNWFilterInstantiateFilter(driver, def) < 0) { virNWFilterBindingObjListRemove(driver->bindings, obj); - virObjectUnref(ret); - ret =3D NULL; + g_clear_object(&ret); goto cleanup; } virNWFilterBindingObjSave(obj, driver->bindingDir); diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index b51e2715ee..553ede5024 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -199,6 +199,7 @@ my %gobject_impl =3D ( virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, virNWFilter =3D> 1, + virNWFilterBinding =3D> 1, ); =20 sub use_gobject { --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371131; cv=none; d=zohomail.com; s=zohoarc; b=kNrULnNsZi72zBnDKvuTkKZ5n8oajSSISoPUgQs1ltYnrzTJdziUZnfJmawM2HvvU0VnoxQSJ6nqKnTp9FNOtkDHm/FsaHr1+iT/rJofympZZ9aV79dAaRLNXSyjugGzzQDZjCKmtrPmHlSbd7dxk+jz7IpwtkS/W4WHH9gVUII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371131; 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=5mIAGiX5lQK2Lhr8yh+JuU4o9QvzVovXre2hS9zLY9c=; b=P3fgMLXg67xu9BhPYjg/Laq3lZFupow9DfOKyON9U/p6QYKTDavVsgkWyxV/e8CLRvamELAWgEhuWF4I1Qu9XSBZ4aoUVvWEh1GM6KPO+fXqvZUG3XturT7n3IC5fvEt+srPDDb4xm4FzDNAz/pn6nq85SI3DRtjQhvCQ7FuO6o= 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 1589371131876635.3421922543449; Wed, 13 May 2020 04:58:51 -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-62-6eJBIiAxO6itiewVv-72Ug-1; Wed, 13 May 2020 07:58:47 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1D3EF80572C; Wed, 13 May 2020 11:58:42 +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 EA78D6E709; Wed, 13 May 2020 11:58:41 +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 BDBC34E9B6; Wed, 13 May 2020 11:58:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwefX016175 for ; Wed, 13 May 2020 07:58:40 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0DA5E20110C7; Wed, 13 May 2020 11:58:40 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 085A9202696C for ; Wed, 13 May 2020 11:58:40 +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-mx02.redhat.com (Postfix) with ESMTPS id DDA3180CDAE for ; Wed, 13 May 2020 11:58:39 +0000 (UTC) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-NlmoxwwCOeqbDDJPqxNweQ-1; Wed, 13 May 2020 07:58:37 -0400 Received: by mail-wm1-f66.google.com with SMTP id g14so11684597wme.1 for ; Wed, 13 May 2020 04:58:37 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371130; 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=5mIAGiX5lQK2Lhr8yh+JuU4o9QvzVovXre2hS9zLY9c=; b=Q9ggc+ktrKlb/9AVKhu7Ffv2cXJN9LJ8G/X6ost5H2oQBRFqE1N6ZuvjY6UloIEUT86nR3 ivLuUUZIaK50qwm8RrN5xbImuDsdv8GuMsEKxJ7c3RV/KitSoQzJlq+LA0Bqa5AzITL+5U KIkCOcgSPVJu2BaxbzYs3P2t/XDumwc= X-MC-Unique: 6eJBIiAxO6itiewVv-72Ug-1 X-MC-Unique: NlmoxwwCOeqbDDJPqxNweQ-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=5mIAGiX5lQK2Lhr8yh+JuU4o9QvzVovXre2hS9zLY9c=; b=OqKAucVrEBCifKnc1kqeFgKZDwWrMeZUDSzsLgf7LhW3b5bDwsiR12xk/ndvbMjefV gW1y2d3nwSZbAcTbMw000MG61m8XRP4GRi4VKbGVv43zdfQD+8YY6XkTd9XGOlmYaM28 QeYTkJ5xAuzsvuO1x718SNRMJG/h2qErKrbKt72U/lsR04OgfI6NZPoJHNKGjB2o8j8/ ef7yusKlFCcoqxNYxuWFAGZmzCNHtXeH9k6iPIC7Ih4BBJnolB0HvkzctX7E8r+JD5H9 7u5bkxLVEZreFdBYlIQnBW5meNGO9o86RdcW1yKkWM+gftzii5vqf2musqbAGSIqllon cM5Q== X-Gm-Message-State: AOAM532x+qYH1BPTCRZJUee/AbJkIwpKBypRWI9/xlHJP5f+pF90OXsX lUYHvHnJvs7oOi8XnqB2LvHMuLsF X-Google-Smtp-Source: ABdhPJxqcU2wg5XQ9L3N1d9cir6vN2hP6YHwXFNbnGYHXAIrF9sQRIM+b/r5bfpYfWLT3ByUVta0rg== X-Received: by 2002:a1c:9d50:: with SMTP id g77mr8693234wme.56.1589371115561; Wed, 13 May 2020 04:58:35 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 21/40] datatypes: convert virNetwork to GObject Date: Wed, 13 May 2020 13:57:05 +0200 Message-Id: <20200513115724.157687-22-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.15 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/conf/domain_conf.c | 6 ++-- src/conf/network_event.c | 7 ++-- src/conf/virnetworkobj.c | 5 +-- src/datatypes.c | 50 +++++++++++++++++------------ src/datatypes.h | 19 +++++------ src/libvirt-network.c | 7 ++-- src/libvirt_private.syms | 2 +- src/libxl/libxl_conf.c | 3 +- src/libxl/xen_common.c | 3 +- src/remote/remote_daemon_dispatch.c | 11 +++---- src/remote/remote_driver.c | 8 ++--- src/rpc/gendispatch.pl | 1 + 12 files changed, 59 insertions(+), 63 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 15d371df6e..5f677d5bb3 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31882,7 +31882,7 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, virDomainDefPtr dom G_GNUC_UNUSED, virDomainNetDefPtr iface) { - virNetworkPtr net =3D NULL; + g_autoptr(virNetwork) net =3D NULL; virNetworkPortPtr port =3D NULL; int ret =3D -1; =20 @@ -31903,7 +31903,6 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, =20 cleanup: virObjectUnref(port); - virObjectUnref(net); return ret; } =20 @@ -31956,7 +31955,7 @@ int virDomainNetBandwidthUpdate(virDomainNetDefPtr iface, virNetDevBandwidthPtr newBandwidth) { - virNetworkPtr net =3D NULL; + g_autoptr(virNetwork) net =3D NULL; virNetworkPortPtr port =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; @@ -31983,7 +31982,6 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr ifac= e, virObjectUnref(conn); virTypedParamsFree(params, nparams); virObjectUnref(port); - virObjectUnref(net); return ret; } =20 diff --git a/src/conf/network_event.c b/src/conf/network_event.c index 41cabe340a..f96f19c5ef 100644 --- a/src/conf/network_event.c +++ b/src/conf/network_event.c @@ -88,7 +88,7 @@ virNetworkEventDispatchDefaultFunc(virConnectPtr conn, virConnectObjectEventGenericCallback cb, void *cbopaque) { - virNetworkPtr net =3D virGetNetwork(conn, event->meta.name, event->met= a.uuid); + g_autoptr(virNetwork) net =3D virGetNetwork(conn, event->meta.name, ev= ent->meta.uuid); if (!net) return; =20 @@ -102,16 +102,13 @@ virNetworkEventDispatchDefaultFunc(virConnectPtr conn, networkLifecycle= Event->type, networkLifecycle= Event->detail, cbopaque); - goto cleanup; + return; } =20 case VIR_NETWORK_EVENT_ID_LAST: break; } VIR_WARN("Unexpected event ID %d", event->eventID); - - cleanup: - virObjectUnref(net); } =20 =20 diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index b2affaacd3..2d375deb47 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -1429,10 +1429,7 @@ virNetworkObjListExport(virConnectPtr conn, ret =3D data.nnets; cleanup: virObjectRWUnlock(netobjs); - while (data.nets && data.nnets) - virObjectUnref(data.nets[--data.nnets]); - - VIR_FREE(data.nets); + virGObjectListFreeCount(data.nets, data.nnets); return ret; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index d95e7e5fcc..3889ece17e 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -37,7 +37,6 @@ virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; virClassPtr virInterfaceClass; -virClassPtr virNetworkClass; virClassPtr virNetworkPortClass; virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; @@ -49,7 +48,6 @@ static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); static void virInterfaceDispose(void *obj); -static void virNetworkDispose(void *obj); static void virNetworkPortDispose(void *obj); static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); @@ -89,6 +87,22 @@ vir_domain_snapshot_class_init(virDomainSnapshotClass *k= lass) obj->finalize =3D virDomainSnapshotFinalize; } =20 +G_DEFINE_TYPE(virNetwork, vir_network, G_TYPE_OBJECT); +static void virNetworkFinalize(GObject *obj); + +static void +vir_network_init(virNetwork *net G_GNUC_UNUSED) +{ +} + +static void +vir_network_class_init(virNetworkClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virNetworkFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterFinalize(GObject *obj); =20 @@ -174,7 +188,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); DECLARE_CLASS(virInterface); - DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); @@ -411,39 +424,34 @@ virDomainDispose(void *obj) * @uuid: pointer to the uuid * * Allocates a new network object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the network object, or NULL on error. */ virNetworkPtr virGetNetwork(virConnectPtr conn, const char *name, const unsigned char *u= uid) { - virNetworkPtr ret =3D NULL; + g_autoptr(virNetwork) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); - virCheckNonNullArgGoto(uuid, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virNetworkClass))) - goto error; + ret =3D VIR_NETWORK(g_object_new(VIR_TYPE_NETWORK, NULL)); =20 ret->name =3D g_strdup(name); =20 ret->conn =3D virObjectRef(conn); memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 /** - * virNetworkDispose: + * virNetworkFinalize: * @obj: the network to release * * Unconditionally release all memory associated with a network. @@ -453,9 +461,9 @@ virGetNetwork(virConnectPtr conn, const char *name, con= st unsigned char *uuid) * which may also be released if its ref count hits zero. */ static void -virNetworkDispose(void *obj) +virNetworkFinalize(GObject *obj) { - virNetworkPtr network =3D obj; + virNetworkPtr network =3D VIR_NETWORK(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(network->uuid, uuidstr); @@ -463,6 +471,8 @@ virNetworkDispose(void *obj) =20 VIR_FREE(network->name); virObjectUnref(network->conn); + + G_OBJECT_CLASS(vir_network_parent_class)->finalize(obj); } =20 =20 @@ -490,7 +500,7 @@ virGetNetworkPort(virNetworkPtr net, const unsigned cha= r *uuid) if (!(ret =3D virObjectNew(virNetworkPortClass))) goto error; =20 - ret->net =3D virObjectRef(net); + ret->net =3D g_object_ref(net); memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN); =20 return ret; @@ -519,7 +529,7 @@ virNetworkPortDispose(void *obj) virUUIDFormat(port->uuid, uuidstr); VIR_DEBUG("release network port %p %s", port, uuidstr); =20 - virObjectUnref(port->net); + g_object_unref(port->net); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 5f0ab5c84b..706cec340f 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -33,7 +33,6 @@ extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; extern virClassPtr virInterfaceClass; -extern virClassPtr virNetworkClass; extern virClassPtr virNetworkPortClass; extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; @@ -55,6 +54,9 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, DOMAIN_SNAPSHOT, GObject); =20 +#define VIR_TYPE_NETWORK vir_network_get_type() +G_DECLARE_FINAL_TYPE(virNetwork, vir_network, VIR, NETWORK, GObject); + #define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); =20 @@ -118,8 +120,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNetworkReturn(obj, retval) \ do { \ - virNetworkPtr _net =3D (obj); \ - if (!virObjectIsClass(_net, virNetworkClass) || \ + virNetworkPtr _net =3D VIR_NETWORK(obj); \ + if (_net =3D=3D NULL || \ !virObjectIsClass(_net->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK, \ @@ -131,8 +133,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); } while (0) #define virCheckNetworkGoto(obj, label) \ do { \ - virNetworkPtr _net =3D (obj); \ - if (!virObjectIsClass(_net, virNetworkClass) || \ + virNetworkPtr _net =3D VIR_NETWORK(obj); \ + if (_net =3D=3D NULL || \ !virObjectIsClass(_net->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK, \ @@ -146,7 +148,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); do { \ virNetworkPortPtr _port =3D (obj); \ if (!virObjectIsClass(_port, virNetworkPortClass) || \ - !virObjectIsClass(_port->net, virNetworkClass)) { \ + !VIR_IS_NETWORK(_port->net)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK_PORT, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -160,7 +162,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); do { \ virNetworkPortPtr _port =3D (obj); \ if (!virObjectIsClass(_port, virNetworkPortClass) || \ - !virObjectIsClass(_port->net, virNetworkClass)) { \ + !VIR_IS_NETWORK(_port->net)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK_PORT, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -638,13 +640,12 @@ struct _virDomain { * Internal structure associated to a network */ struct _virNetwork { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *name; /* the network external name */ unsigned char uuid[VIR_UUID_BUFLEN]; /* the network unique identifier = */ }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetwork, virObjectUnref); =20 =20 /** diff --git a/src/libvirt-network.c b/src/libvirt-network.c index 09e24fb0a8..3847617d4d 100644 --- a/src/libvirt-network.c +++ b/src/libvirt-network.c @@ -654,7 +654,7 @@ virNetworkFree(virNetworkPtr network) =20 virCheckNetworkReturn(network, -1); =20 - virObjectUnref(network); + g_object_unref(network); return 0; } =20 @@ -679,14 +679,13 @@ virNetworkFree(virNetworkPtr network) int virNetworkRef(virNetworkPtr network) { - VIR_DEBUG("network=3D%p refs=3D%d", network, - network ? network->parent.u.s.refs : 0); + VIR_DEBUG("network=3D%p", network); =20 virResetLastError(); =20 virCheckNetworkReturn(network, -1); =20 - virObjectRef(network); + g_object_ref(network); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index e93d005bba..a7255d6f18 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1358,6 +1358,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_network_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; virConnectClass; @@ -1382,7 +1383,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virInterfaceClass; -virNetworkClass; virNetworkPortClass; virNewConnectCloseCallbackData; virNodeDeviceClass; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index a41f22386f..2a719486fa 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -1236,7 +1236,7 @@ libxlMakeNic(virDomainDefPtr def, bool attach) { virDomainNetType actual_type =3D virDomainNetGetActualType(l_nic); - virNetworkPtr network =3D NULL; + g_autoptr(virNetwork) network =3D NULL; virConnectPtr conn =3D NULL; const virNetDevBandwidth *actual_bw; const virNetDevVPortProfile *port_profile; @@ -1435,7 +1435,6 @@ libxlMakeNic(virDomainDefPtr def, =20 cleanup: virBufferFreeAndReset(&buf); - virObjectUnref(network); virObjectUnref(conn); =20 return ret; diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c index 5c37e431eb..631c9fe8d5 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -1750,7 +1750,7 @@ xenFormatNet(virConnectPtr conn, =20 case VIR_DOMAIN_NET_TYPE_NETWORK: { - virNetworkPtr network =3D virNetworkLookupByName(conn, net->data.n= etwork.name); + g_autoptr(virNetwork) network =3D virNetworkLookupByName(conn, net= ->data.network.name); char *bridge; if (!network) { virReportError(VIR_ERR_NO_NETWORK, "%s", @@ -1758,7 +1758,6 @@ xenFormatNet(virConnectPtr conn, return -1; } bridge =3D virNetworkGetBridgeName(network); - virObjectUnref(network); if (!bridge) { virReportError(VIR_ERR_INTERNAL_ERROR, _("network %s is not active"), diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 3b016636e0..4add62bb86 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -6014,7 +6014,7 @@ remoteDispatchConnectNetworkEventRegisterAny(virNetSe= rverPtr server G_GNUC_UNUSE int rv =3D -1; daemonClientEventCallbackPtr callback =3D NULL; daemonClientEventCallbackPtr ref; - virNetworkPtr net =3D NULL; + g_autoptr(virNetwork) net =3D NULL; struct daemonClientPrivate *priv =3D virNetServerClientGetPrivateData(client); virConnectPtr conn =3D remoteGetNetworkConn(client); @@ -6074,7 +6074,6 @@ remoteDispatchConnectNetworkEventRegisterAny(virNetSe= rverPtr server G_GNUC_UNUSE remoteEventCallbackFree(callback); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(net); return rv; } =20 @@ -6756,7 +6755,7 @@ remoteDispatchNetworkGetDHCPLeases(virNetServerPtr se= rver G_GNUC_UNUSED, int rv =3D -1; size_t i; virNetworkDHCPLeasePtr *leases =3D NULL; - virNetworkPtr net =3D NULL; + g_autoptr(virNetwork) net =3D NULL; int nleases =3D 0; virConnectPtr conn =3D remoteGetNetworkConn(client); =20 @@ -6806,7 +6805,6 @@ remoteDispatchNetworkGetDHCPLeases(virNetServerPtr se= rver G_GNUC_UNUSED, for (i =3D 0; i < nleases; i++) virNetworkDHCPLeaseFree(leases[i]); VIR_FREE(leases); - virObjectUnref(net); return rv; } =20 @@ -7228,12 +7226,11 @@ static virNetworkPortPtr get_nonnull_network_port(virConnectPtr conn, remote_nonnull_network_port p= ort) { virNetworkPortPtr ret; - virNetworkPtr net; - net =3D virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); + g_autoptr(virNetwork) net =3D + virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); if (!net) return NULL; ret =3D virGetNetworkPort(net, BAD_CAST port.uuid); - virObjectUnref(net); return ret; } =20 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 961f8f78d9..283a0e9c12 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5456,7 +5456,7 @@ remoteNetworkBuildEventLifecycle(virNetClientProgramP= tr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_network_event_lifecycle_msg *msg =3D evdata; - virNetworkPtr net; + g_autoptr(virNetwork) net =3D NULL; virObjectEventPtr event =3D NULL; =20 net =3D get_nonnull_network(conn, msg->net); @@ -5465,7 +5465,6 @@ remoteNetworkBuildEventLifecycle(virNetClientProgramP= tr prog G_GNUC_UNUSED, =20 event =3D virNetworkEventLifecycleNew(net->name, net->uuid, msg->event, msg->detail); - virObjectUnref(net); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } @@ -8270,12 +8269,11 @@ static virNetworkPortPtr get_nonnull_network_port(virConnectPtr conn, remote_nonnull_network_port p= ort) { virNetworkPortPtr ret; - virNetworkPtr net; - net =3D virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); + g_autoptr(virNetwork) net =3D + virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); if (!net) return NULL; ret =3D virGetNetworkPort(net, BAD_CAST port.uuid); - virObjectUnref(net); return ret; } =20 diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 553ede5024..2c101fab6d 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -198,6 +198,7 @@ my %gobject_impl =3D ( virAdmServer =3D> 1, virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, + virNetwork =3D> 1, virNWFilter =3D> 1, virNWFilterBinding =3D> 1, ); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371133; cv=none; d=zohomail.com; s=zohoarc; b=azVUiJJdZI6PdX5bn9F6D5gq+9tjitYfYHVZ/PUvWJSZecoGEI+ydtg4lRIyKHO5kCte8uQephyMTzuC69td2AJT5fEKHorvqCNGwSsGCK+QReCfORVO8lxPFbY52Y38LcE649H5DpUZ8XAH/xfk2Oe3iy9r3Kz31TaTP9Toxro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371133; 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=XMpE6b2PY97NLWcPwqOiftu9RuNKNT8+bDythFvFkeo=; b=fKiOqB3hpdPjm5sdMvNTZpBmkzjLso/usrlGGE3eUi660/1/cB+8W7OOK/QOoHpcT/U96HTMbftSMnStbhm1f6BlDUBI4TCTsqN+IERP6z3BJkenSjzJ7u+14utLEos1OI5/6KTJHbln9zMjEmpBIxIiHjdw9WQBYFskzFON/Tk= 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 1589371133283942.4797304773862; Wed, 13 May 2020 04:58:53 -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-418-RB3_kPsvOJWwEMw2WnF3rg-1; Wed, 13 May 2020 07:58:49 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 59146876E05; Wed, 13 May 2020 11:58:44 +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 3773A6E6F9; Wed, 13 May 2020 11:58:44 +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 0780F1809547; Wed, 13 May 2020 11:58:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwgV4016196 for ; Wed, 13 May 2020 07:58:42 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1A08A110EB4; Wed, 13 May 2020 11:58:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 13E215EDD7 for ; Wed, 13 May 2020 11:58:42 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EACA0101A526 for ; Wed, 13 May 2020 11:58:41 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-90-3X3LYrTVMhqPcn4WfAC72A-1; Wed, 13 May 2020 07:58:38 -0400 Received: by mail-wr1-f66.google.com with SMTP id j5so20559141wrq.2 for ; Wed, 13 May 2020 04:58:38 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371131; 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=XMpE6b2PY97NLWcPwqOiftu9RuNKNT8+bDythFvFkeo=; b=PtzIfK0lWjtx7RgMBzInrEYxtio0X6nGM2ignPz95v7voidD7XYASOWn1AI8oSsaBJq/Z0 USq6LRFkEM8X2ZotJQZnCIt0fScUVKm/pnAt4Sr1/XmhgBMHUq7CyGTGSbD9IyVeeWbwDs 4Eo5qfj9dIhfSzV48fbMU8GMquZoFm8= X-MC-Unique: RB3_kPsvOJWwEMw2WnF3rg-1 X-MC-Unique: 3X3LYrTVMhqPcn4WfAC72A-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=XMpE6b2PY97NLWcPwqOiftu9RuNKNT8+bDythFvFkeo=; b=lnZ5xfD2GPHpRStTUG+f86Cbr573J15O6PNJPtQrZqZMqiI2K3FgKcrnRf88E6h82x L9A1Y+nOhzFascv+63PyUdFz+d7mmblBcJlFvNdbXOBU+QAdb0iYWBLtNyo2osIolEPW iv4YJhW5cTEzsZhzS+6gXRimoWeU+yW93EEGoH+1pmdowRC/TNbeorzRCmWL34GNqpzR oDtH6gpz9n4t/A/94tXjzX4x6YpyDrDX+/DXxLMJxryn1X3dRu7z/ope+aU6EdZTcOEq +BDFl+m6Z6CHPbtx3V9vF1ITMTLTNTJwwQ16XmngwbfZQzXnkhqvcQcS7Q8H/V0UWY+e 3Huw== X-Gm-Message-State: AGi0PubZQWzJ84UKquc7rY0drZsR+GZSZTCHxHbWru29vhaRZSehSz4M OtTmwuA1GXmOgaTPkuuQBJFrpY1I X-Google-Smtp-Source: APiQypLSbIScx0jv6VJfdfxGC7JC6ibpvTQioZ1BacoYzfIpOKeJ/hLb1cD4iVBg0Wdt4ixTeXTm3w== X-Received: by 2002:adf:e788:: with SMTP id n8mr29504692wrm.317.1589371116916; Wed, 13 May 2020 04:58:36 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 22/40] datatypes: convert virNetworkPort to GObject Date: Wed, 13 May 2020 13:57:06 +0200 Message-Id: <20200513115724.157687-23-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.15 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/conf/domain_conf.c | 6 ++-- src/conf/virnetworkobj.c | 5 +--- src/datatypes.c | 46 ++++++++++++++++++----------- src/datatypes.h | 15 +++++----- src/libvirt-network.c | 7 ++--- src/libvirt_private.syms | 2 +- src/remote/remote_daemon_dispatch.c | 7 ++--- src/remote/remote_driver.c | 4 +-- src/rpc/gendispatch.pl | 1 + 9 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5f677d5bb3..f7392fce05 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31883,7 +31883,7 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, virDomainNetDefPtr iface) { g_autoptr(virNetwork) net =3D NULL; - virNetworkPortPtr port =3D NULL; + g_autoptr(virNetworkPort) port =3D NULL; int ret =3D -1; =20 /* Port might not exist if a failure occurred during VM startup */ @@ -31902,7 +31902,6 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, goto cleanup; =20 cleanup: - virObjectUnref(port); return ret; } =20 @@ -31956,7 +31955,7 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr ifac= e, virNetDevBandwidthPtr newBandwidth) { g_autoptr(virNetwork) net =3D NULL; - virNetworkPortPtr port =3D NULL; + g_autoptr(virNetworkPort) port =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; virConnectPtr conn =3D NULL; @@ -31981,7 +31980,6 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr ifac= e, cleanup: virObjectUnref(conn); virTypedParamsFree(params, nparams); - virObjectUnref(port); return ret; } =20 diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 2d375deb47..946008cb5e 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -1821,10 +1821,7 @@ virNetworkObjPortListExport(virNetworkPtr net, =20 ret =3D data.nports; cleanup: - while (data.ports && data.nports) - virObjectUnref(data.ports[--data.nports]); - - VIR_FREE(data.ports); + virGObjectListFreeCount(data.ports, data.nports); return ret; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index 3889ece17e..3cad8f2bc6 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -37,7 +37,6 @@ virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; virClassPtr virInterfaceClass; -virClassPtr virNetworkPortClass; virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; virClassPtr virStreamClass; @@ -48,7 +47,6 @@ static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); static void virInterfaceDispose(void *obj); -static void virNetworkPortDispose(void *obj); static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); @@ -103,6 +101,22 @@ vir_network_class_init(virNetworkClass *klass) obj->finalize =3D virNetworkFinalize; } =20 +G_DEFINE_TYPE(virNetworkPort, vir_network_port, G_TYPE_OBJECT); +static void virNetworkPortFinalize(GObject *obj); + +static void +vir_network_port_init(virNetworkPort *np G_GNUC_UNUSED) +{ +} + +static void +vir_network_port_class_init(virNetworkPortClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virNetworkPortFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterFinalize(GObject *obj); =20 @@ -188,7 +202,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); DECLARE_CLASS(virInterface); - DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); @@ -482,36 +495,31 @@ virNetworkFinalize(GObject *obj) * @uuid: pointer to the uuid * * Allocates a new network port object. When the object is no longer neede= d, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the network port object, or NULL on error. */ virNetworkPortPtr virGetNetworkPort(virNetworkPtr net, const unsigned char *uuid) { - virNetworkPortPtr ret =3D NULL; + g_autoptr(virNetworkPort) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckNetworkGoto(net, error); - virCheckNonNullArgGoto(uuid, error); + virCheckNetworkReturn(net, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virNetworkPortClass))) - goto error; + ret =3D VIR_NETWORK_PORT(g_object_new(VIR_TYPE_NETWORK_PORT, NULL)); =20 ret->net =3D g_object_ref(net); memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 /** - * virNetworkPortDispose: + * virNetworkPortFinalize: * @obj: the network port to release * * Unconditionally release all memory associated with a network port. @@ -521,15 +529,17 @@ virGetNetworkPort(virNetworkPtr net, const unsigned c= har *uuid) * which may also be released if its ref count hits zero. */ static void -virNetworkPortDispose(void *obj) +virNetworkPortFinalize(GObject *obj) { - virNetworkPortPtr port =3D obj; + virNetworkPortPtr port =3D VIR_NETWORK_PORT(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(port->uuid, uuidstr); VIR_DEBUG("release network port %p %s", port, uuidstr); =20 - g_object_unref(port->net); + g_clear_object(&port->net); + + G_OBJECT_CLASS(vir_network_port_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 706cec340f..41f366d21a 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -33,7 +33,6 @@ extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; extern virClassPtr virInterfaceClass; -extern virClassPtr virNetworkPortClass; extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; @@ -57,6 +56,9 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, #define VIR_TYPE_NETWORK vir_network_get_type() G_DECLARE_FINAL_TYPE(virNetwork, vir_network, VIR, NETWORK, GObject); =20 +#define VIR_TYPE_NETWORK_PORT vir_network_port_get_type() +G_DECLARE_FINAL_TYPE(virNetworkPort, vir_network_port, VIR, NETWORK_PORT, = GObject); + #define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); =20 @@ -146,8 +148,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNetworkPortReturn(obj, retval) \ do { \ - virNetworkPortPtr _port =3D (obj); \ - if (!virObjectIsClass(_port, virNetworkPortClass) || \ + virNetworkPortPtr _port =3D VIR_NETWORK_PORT(obj); \ + if (_port =3D=3D NULL || \ !VIR_IS_NETWORK(_port->net)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK_PORT, \ @@ -160,8 +162,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNetworkPortGoto(obj, label) \ do { \ - virNetworkPortPtr _port =3D (obj); \ - if (!virObjectIsClass(_port, virNetworkPortClass) || \ + virNetworkPortPtr _port =3D VIR_NETWORK_PORT(obj); \ + if (_port =3D=3D NULL || \ !VIR_IS_NETWORK(_port->net)) { \ virReportErrorHelper(VIR_FROM_NETWORK, \ VIR_ERR_INVALID_NETWORK_PORT, \ @@ -654,12 +656,11 @@ struct _virNetwork { * Internal structure associated to a network port */ struct _virNetworkPort { - virObject parent; + GObject parent; virNetworkPtr net; /* pointer back to the connection= */ unsigned char uuid[VIR_UUID_BUFLEN]; /* the network unique identifier = */ }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetworkPort, virObjectUnref); =20 =20 /** diff --git a/src/libvirt-network.c b/src/libvirt-network.c index 3847617d4d..1ab499fb18 100644 --- a/src/libvirt-network.c +++ b/src/libvirt-network.c @@ -1688,7 +1688,7 @@ virNetworkPortFree(virNetworkPortPtr port) =20 virCheckNetworkPortReturn(port, -1); =20 - virObjectUnref(port); + g_object_unref(port); return 0; } =20 @@ -1713,13 +1713,12 @@ virNetworkPortFree(virNetworkPortPtr port) int virNetworkPortRef(virNetworkPortPtr port) { - VIR_DEBUG("port=3D%p refs=3D%d", port, - port ? port->parent.u.s.refs : 0); + VIR_DEBUG("port=3D%p", port); =20 virResetLastError(); =20 virCheckNetworkPortReturn(port, -1); =20 - virObjectRef(port); + g_object_ref(port); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index a7255d6f18..782d9c1eac 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1359,6 +1359,7 @@ virCPUx86FeatureFilterSelectMSR; vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; vir_network_get_type; +vir_network_port_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; virConnectClass; @@ -1383,7 +1384,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virInterfaceClass; -virNetworkPortClass; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 4add62bb86..d5c5ab9aab 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -7170,7 +7170,7 @@ remoteDispatchNetworkPortGetParameters(virNetServerPt= r server G_GNUC_UNUSED, remote_network_port_get_parameters_= ret *ret) { int rv =3D -1; - virNetworkPortPtr port =3D NULL; + g_autoptr(virNetworkPort) port =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; virConnectPtr conn =3D remoteGetNetworkConn(client); @@ -7196,7 +7196,6 @@ remoteDispatchNetworkPortGetParameters(virNetServerPt= r server G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(port); virTypedParamsFree(params, nparams); return rv; } @@ -7225,13 +7224,11 @@ get_nonnull_network(virConnectPtr conn, remote_nonn= ull_network network) static virNetworkPortPtr get_nonnull_network_port(virConnectPtr conn, remote_nonnull_network_port p= ort) { - virNetworkPortPtr ret; g_autoptr(virNetwork) net =3D virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); if (!net) return NULL; - ret =3D virGetNetworkPort(net, BAD_CAST port.uuid); - return ret; + return virGetNetworkPort(net, BAD_CAST port.uuid); } =20 static virInterfacePtr diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 283a0e9c12..48d83d5fc4 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8268,13 +8268,11 @@ get_nonnull_network(virConnectPtr conn, remote_nonn= ull_network network) static virNetworkPortPtr get_nonnull_network_port(virConnectPtr conn, remote_nonnull_network_port p= ort) { - virNetworkPortPtr ret; g_autoptr(virNetwork) net =3D virGetNetwork(conn, port.net.name, BAD_CAST port.net.uuid); if (!net) return NULL; - ret =3D virGetNetworkPort(net, BAD_CAST port.uuid); - return ret; + return virGetNetworkPort(net, BAD_CAST port.uuid); } =20 static virInterfacePtr diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 2c101fab6d..5c14038428 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -199,6 +199,7 @@ my %gobject_impl =3D ( virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, virNetwork =3D> 1, + virNetworkPort =3D> 1, virNWFilter =3D> 1, virNWFilterBinding =3D> 1, ); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371138; cv=none; d=zohomail.com; s=zohoarc; b=UsB+feJN78TFh4E5N/NIYFFwE+vpPDzaZB02Vz8rLSP6iygQRCU49mQiHriZHb6PSqS+5dnUGyuSpWLo07T0wMaBRxSe0OeMFePcDUZjW0H/ZflQVuwrTklOYLdNxBcRwvNQE3D4aMU6Pyhp1FRxJ1HlM3m7RdoWXdU/mJMlbjE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371138; 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=H9n9C2kohOeV5oPa+Cw6jolY2mPtQDeuxbLJ82fe40c=; b=iEP0YRlb2HvISihj8Env6JYLcVNcyfA6sU47eaQRG/xq7yd1yCeQo35j4FF2m6ACAl15T3+vIz1efUHeA5Z5vSUIbtH6Dx0qXYN6O9fsgQtyz23gfzomKglOEWX5Wnu+1qRpX7RXuyRpmdS/nNpNNHBauCKgAfB3OYORUFVNr30= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371138230843.532928286699; Wed, 13 May 2020 04:58:58 -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-94-ecXKht5PNEOr7yyEWDf6DA-1; Wed, 13 May 2020 07:58:52 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B2C3580B71B; Wed, 13 May 2020 11:58:46 +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 925666E6FC; Wed, 13 May 2020 11:58:46 +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 65A994E9E1; Wed, 13 May 2020 11:58:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwg1V016203 for ; Wed, 13 May 2020 07:58:42 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7F517202696C; Wed, 13 May 2020 11:58:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7A2E02029F6F for ; Wed, 13 May 2020 11:58:42 +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-mx02.redhat.com (Postfix) with ESMTPS id 5C29C8007C8 for ; Wed, 13 May 2020 11:58:42 +0000 (UTC) Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-86-Y0kcvBEZP2GQg0O6zPwAOg-1; Wed, 13 May 2020 07:58:39 -0400 Received: by mail-wm1-f65.google.com with SMTP id d207so8748410wmd.0 for ; Wed, 13 May 2020 04:58:39 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371136; 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=H9n9C2kohOeV5oPa+Cw6jolY2mPtQDeuxbLJ82fe40c=; b=HJBHHAAsaKCCn8Dq/hg2KYU4aoY0xTimIGo3vaMZJui6UZdw62eDi6gHCZXgka6AMBlbWw 4aqqxsVIE26t7YbmqsL82xQEeFCnnz3wL6xuD/QwnsTgoEcxzMMJSedovMVNA0MkXQxpnm xAQ4Hao2z4OMjTjYWIBTXSJns77tTyM= X-MC-Unique: ecXKht5PNEOr7yyEWDf6DA-1 X-MC-Unique: Y0kcvBEZP2GQg0O6zPwAOg-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=H9n9C2kohOeV5oPa+Cw6jolY2mPtQDeuxbLJ82fe40c=; b=CBO+wp81GnRASHenUV1Uaaqd0AQtxluxkQy+U/rpxbQ5cd/4OrdkU1kRJXf4x8RdAq 4zfv5zDCW9nEIWj6xMDgMqhYb/o183kCJiFh5CQJ4tvMlbdBylwGoWCeOQDb0fUwF4rS OVKJiG5pf9qlL/R6SvM5M3yZgd0UxurCZbmIqRiEfRXDtIC/GIx4c1xGsEFVowUCFJ8w wFz1BTiIXFtxAZn07Q895kRSm+u2siLUtXIsNEA1Kg/NYWZWA+J2mIFzDlo1XB3s/68/ 6oMwEaAppPPFs9P1WpdyEsSxiYe/GbIEVAnkGCB3DxtzfIHBEuZC0oGccTRSRcvN3WKv I6VA== X-Gm-Message-State: AGi0PuZhzpA/f+E/dXyMmrYlNYuY3CJtRNQee+kNm8kz2cpnrZ1jt/3T u6/MzQz+T7THIyLNIXMBT1YZyog1 X-Google-Smtp-Source: APiQypIT36j5RnMpr/wQHpePEqE6rQEdUmiN/dxIgya/lp2HtCIdjuyr50jbyf4qd+3K6fiysnojJQ== X-Received: by 2002:a05:600c:201:: with SMTP id 1mr28022489wmi.155.1589371118111; Wed, 13 May 2020 04:58:38 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 23/40] datatypes: convert virInterface to GObject Date: Wed, 13 May 2020 13:57:07 +0200 Message-Id: <20200513115724.157687-24-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.15 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/conf/virinterfaceobj.c | 5 +-- src/datatypes.c | 44 +++++++++++++++---------- src/datatypes.h | 10 +++--- src/interface/interface_backend_netcf.c | 7 +--- src/interface/interface_backend_udev.c | 8 +---- src/libvirt-interface.c | 6 ++-- src/libvirt_private.syms | 2 +- src/rpc/gendispatch.pl | 1 + 8 files changed, 41 insertions(+), 42 deletions(-) diff --git a/src/conf/virinterfaceobj.c b/src/conf/virinterfaceobj.c index 43ba395d2b..e1f825723a 100644 --- a/src/conf/virinterfaceobj.c +++ b/src/conf/virinterfaceobj.c @@ -338,10 +338,7 @@ virInterfaceObjListExport(virConnectPtr conn, ret =3D data.nifaces; cleanup: virObjectRWUnlock(ifaceobjs); - while (data.ifaces && data.nifaces) - virObjectUnref(data.ifaces[--data.nifaces]); - - VIR_FREE(data.ifaces); + virGObjectListFreeCount(data.ifaces, data.nifaces); return ret; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index 3cad8f2bc6..00931bf403 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,7 +36,6 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virInterfaceClass; virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; virClassPtr virStreamClass; @@ -46,7 +45,6 @@ virClassPtr virStoragePoolClass; static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virInterfaceDispose(void *obj); static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); @@ -85,6 +83,22 @@ vir_domain_snapshot_class_init(virDomainSnapshotClass *k= lass) obj->finalize =3D virDomainSnapshotFinalize; } =20 +G_DEFINE_TYPE(virInterface, vir_interface, G_TYPE_OBJECT); +static void virInterfaceFinalize(GObject *obj); + +static void +vir_interface_init(virInterface *iface G_GNUC_UNUSED) +{ +} + +static void +vir_interface_class_init(virInterfaceClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virInterfaceFinalize; +} + G_DEFINE_TYPE(virNetwork, vir_network, G_TYPE_OBJECT); static void virNetworkFinalize(GObject *obj); =20 @@ -201,7 +215,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virInterface); DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); @@ -550,42 +563,37 @@ virNetworkPortFinalize(GObject *obj) * @mac: pointer to the mac * * Allocates a new interface object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the interface object, or NULL on error. */ virInterfacePtr virGetInterface(virConnectPtr conn, const char *name, const char *mac) { - virInterfacePtr ret =3D NULL; + g_autoptr(virInterface) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); =20 /* a NULL mac from caller is okay. Treat it as blank */ if (mac =3D=3D NULL) mac =3D ""; =20 - if (!(ret =3D virObjectNew(virInterfaceClass))) - goto error; + ret =3D VIR_INTERFACE(g_object_new(VIR_TYPE_INTERFACE, NULL)); =20 ret->name =3D g_strdup(name); ret->mac =3D g_strdup(mac); =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 /** - * virInterfaceDispose: + * virInterfaceFinalize: * @obj: the interface to release * * Unconditionally release all memory associated with an interface. @@ -595,14 +603,16 @@ virGetInterface(virConnectPtr conn, const char *name,= const char *mac) * which may also be released if its ref count hits zero. */ static void -virInterfaceDispose(void *obj) +virInterfaceFinalize(GObject *obj) { - virInterfacePtr iface =3D obj; + virInterfacePtr iface =3D VIR_INTERFACE(obj); VIR_DEBUG("release interface %p %s", iface, iface->name); =20 VIR_FREE(iface->name); VIR_FREE(iface->mac); virObjectUnref(iface->conn); + + G_OBJECT_CLASS(vir_interface_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 41f366d21a..e9bc1574e7 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virInterfaceClass; extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; @@ -53,6 +52,9 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, DOMAIN_SNAPSHOT, GObject); =20 +#define VIR_TYPE_INTERFACE vir_interface_get_type() +G_DECLARE_FINAL_TYPE(virInterface, vir_interface, VIR, INTERFACE, GObject); + #define VIR_TYPE_NETWORK vir_network_get_type() G_DECLARE_FINAL_TYPE(virNetwork, vir_network, VIR, NETWORK, GObject); =20 @@ -175,8 +177,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckInterfaceReturn(obj, retval) \ do { \ - virInterfacePtr _iface =3D (obj); \ - if (!virObjectIsClass(_iface, virInterfaceClass) || \ + virInterfacePtr _iface =3D VIR_INTERFACE(obj); \ + if (_iface =3D=3D NULL || \ !virObjectIsClass(_iface->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_INTERFACE, \ VIR_ERR_INVALID_INTERFACE, \ @@ -669,7 +671,7 @@ struct _virNetworkPort { * Internal structure associated to a physical host interface */ struct _virInterface { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *name; /* the network external name */ char *mac; /* the interface MAC address */ diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interf= ace_backend_netcf.c index dd0c1481d9..c09685dfad 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -738,12 +738,7 @@ netcfConnectListAllInterfaces(virConnectPtr conn, VIR_FREE(names[i]); VIR_FREE(names); =20 - if (tmp_iface_objs) { - for (i =3D 0; i < niface_objs; i++) - virObjectUnref(tmp_iface_objs[i]); - VIR_FREE(tmp_iface_objs); - } - + virGObjectListFreeCount(tmp_iface_objs, niface_objs); virObjectUnlock(driver); return ret; } diff --git a/src/interface/interface_backend_udev.c b/src/interface/interfa= ce_backend_udev.c index e388f98536..00ade59d02 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -310,7 +310,6 @@ udevConnectListAllInterfaces(virConnectPtr conn, struct udev_list_entry *dev_entry; virInterfacePtr *ifaces_list =3D NULL; virInterfacePtr iface_obj; - int tmp_count; int count =3D 0; int status =3D 0; int ret; @@ -419,12 +418,7 @@ udevConnectListAllInterfaces(virConnectPtr conn, udev_enumerate_unref(enumerate); udev_unref(udev); =20 - if (ifaces) { - for (tmp_count =3D 0; tmp_count < count; tmp_count++) - virObjectUnref(ifaces_list[tmp_count]); - } - - VIR_FREE(ifaces_list); + virGObjectListFreeCount(ifaces_list, count); =20 return ret; =20 diff --git a/src/libvirt-interface.c b/src/libvirt-interface.c index 2d2df68131..0fd0ce7154 100644 --- a/src/libvirt-interface.c +++ b/src/libvirt-interface.c @@ -642,13 +642,13 @@ virInterfaceDestroy(virInterfacePtr iface, unsigned i= nt flags) int virInterfaceRef(virInterfacePtr iface) { - VIR_DEBUG("iface=3D%p refs=3D%d", iface, iface ? iface->parent.u.s.ref= s : 0); + VIR_DEBUG("iface=3D%p", iface); =20 virResetLastError(); =20 virCheckInterfaceReturn(iface, -1); =20 - virObjectRef(iface); + g_object_ref(iface); return 0; } =20 @@ -671,7 +671,7 @@ virInterfaceFree(virInterfacePtr iface) =20 virCheckInterfaceReturn(iface, -1); =20 - virObjectUnref(iface); + g_object_unref(iface); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 782d9c1eac..ddb2552c1a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1358,6 +1358,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_interface_get_type; vir_network_get_type; vir_network_port_get_type; vir_nw_filter_binding_get_type; @@ -1383,7 +1384,6 @@ virGetSecret; virGetStoragePool; virGetStorageVol; virGetStream; -virInterfaceClass; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 5c14038428..0f16ca89c2 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -198,6 +198,7 @@ my %gobject_impl =3D ( virAdmServer =3D> 1, virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, + virInterface =3D> 1, virNetwork =3D> 1, virNetworkPort =3D> 1, virNWFilter =3D> 1, --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371138; cv=none; d=zohomail.com; s=zohoarc; b=VcMkLxazrxnThrwhWC2i890gI+dryeEfwVHIvTS7HNitIo06VlG8p/WRci/vnnbNue+4F1E7RieAe6ISvRXbMlqAVmjhOxf0Zjf5bpBPZOWwVkvnsMWXsdfmb/i1t+Ri/R0Ddul2ChZZkD2yS4zOqX8qVABj5FSwlGzFO13Z+3U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371138; 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=Om/5cZXvIlIJ/Wbs7q+g2NvwYQG/eVkkibvvrU4elNA=; b=lRPBE+unaQ31LERO0bsVqu1Zmtn6VoJg9OiqDfd+T+g+nehIiDmFWiYA32Rg9/+NZRHlkIewuH+N6mcgzvWo3WFKqMgXHiLtDk4ZRYlgmRoRF5xkqNmpXnebXGNFcW292RhxKg06GxASiNC1FM1rzy9geyAPiqTw+QAdkzYZGbA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371138724737.7096779875651; Wed, 13 May 2020 04:58:58 -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-301-Qa4PKro9PZup58y2B3FUVA-1; Wed, 13 May 2020 07:58:55 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F12D97BBF; Wed, 13 May 2020 11:58:48 +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 CC09C341FC; Wed, 13 May 2020 11:58:48 +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 9D0861800430; Wed, 13 May 2020 11:58:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwjkQ016234 for ; Wed, 13 May 2020 07:58:45 -0400 Received: by smtp.corp.redhat.com (Postfix) id 457A52029F70; Wed, 13 May 2020 11:58:45 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 401C42017E80 for ; Wed, 13 May 2020 11:58:45 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0F43081C88E for ; Wed, 13 May 2020 11:58:45 +0000 (UTC) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-183-H9I7jIh5NVOhKkEa8saHOw-1; Wed, 13 May 2020 07:58:41 -0400 Received: by mail-wm1-f67.google.com with SMTP id z72so18554553wmc.2 for ; Wed, 13 May 2020 04:58:41 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371137; 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=Om/5cZXvIlIJ/Wbs7q+g2NvwYQG/eVkkibvvrU4elNA=; b=ZcJdK3eCA8fPhNRe9Bz5Gz/LjqICtCUroR9H1TF5VpGWPOmD96sF+9hJLw5daah+X5pYYn 6bCcHGu4YloWR8S3JK/LZqvimbhhbmmbQey/O//wg5WU9VLSYS7XCsGjlNK1oSqWVw8ZS6 vC3J+F+hiHFvzq6fCKeMYmuq9yHMlZ4= X-MC-Unique: Qa4PKro9PZup58y2B3FUVA-1 X-MC-Unique: H9I7jIh5NVOhKkEa8saHOw-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=Om/5cZXvIlIJ/Wbs7q+g2NvwYQG/eVkkibvvrU4elNA=; b=aoTQP49rNtfKitaDULK1zdo+MAIsum6SYmDE1LXLn0KwDa8hgXTLNTS//7iUtDvi2q hzQ+4qhJZWAGx3S53lZ1OkRvhSa2JKiwefbR2Hhea89pTSb8j68CI39yfIoEstz74BHh 0pkjxABtAtM1phznghAbG7AXGJHL6LLESSiB7PeSuAj4vBcMxXvWbnxx2K5i/3XIK+3y r3NknkWe3k9wzo4hW1Jz4HLTm/WC0nEPnoUrYJ6OSqzWGW+NYZPSGUf3bksvtFf9EpJk OgXuDrGDMzatUstUF8RwivoUATxcttzaqtCa3Ah/tcQKzB0or5Nb4wsPivCtYGTINIZj yWFw== X-Gm-Message-State: AOAM532M3fz3Qm1EIZqJJ0EUCRp2JyHTsBm495NayQ55tm1SlFOtFy26 AhJLW9vj3+KoXf0Y+UhAzGcDVxLP X-Google-Smtp-Source: ABdhPJwSIk6WeLlQoe1/QmU6HUn2X2RvZWDtagkqKR8qyEv71pipAQMJRPI+OWKM+DIsxMuuo2noPw== X-Received: by 2002:a05:600c:34c:: with SMTP id u12mr7879522wmd.4.1589371119713; Wed, 13 May 2020 04:58:39 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 24/40] datatypes: convert virStoragePool to GObject Date: Wed, 13 May 2020 13:57:08 +0200 Message-Id: <20200513115724.157687-25-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.84 on 10.5.11.23 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/conf/storage_event.c | 15 ++++------ src/conf/virstorageobj.c | 2 +- src/datatypes.c | 46 ++++++++++++++++++----------- src/datatypes.h | 15 +++++----- src/libvirt-storage.c | 6 ++-- src/libvirt_private.syms | 2 +- src/qemu/qemu_migration.c | 3 +- src/remote/remote_daemon_dispatch.c | 3 +- src/remote/remote_driver.c | 6 ++-- src/rpc/gendispatch.pl | 1 + src/vz/vz_sdk.c | 3 +- 11 files changed, 53 insertions(+), 49 deletions(-) diff --git a/src/conf/storage_event.c b/src/conf/storage_event.c index de36ec3af9..e18069f718 100644 --- a/src/conf/storage_event.c +++ b/src/conf/storage_event.c @@ -110,10 +110,10 @@ virStoragePoolEventDispatchDefaultFunc(virConnectPtr = conn, virConnectObjectEventGenericCallbac= k cb, void *cbopaque) { - virStoragePoolPtr pool =3D virGetStoragePool(conn, - event->meta.name, - event->meta.uuid, - NULL, NULL); + g_autoptr(virStoragePool) pool =3D virGetStoragePool(conn, + event->meta.name, + event->meta.uuid, + NULL, NULL); if (!pool) return; =20 @@ -127,23 +127,20 @@ virStoragePoolEventDispatchDefaultFunc(virConnectPtr = conn, storagePoolL= ifecycleEvent->type, storagePoolL= ifecycleEvent->detail, cbopaque); - goto cleanup; + return; } =20 case VIR_STORAGE_POOL_EVENT_ID_REFRESH: { ((virConnectStoragePoolEventGenericCallback)cb)(conn, pool, cbopaque); - goto cleanup; + return; } =20 case VIR_STORAGE_POOL_EVENT_ID_LAST: break; } VIR_WARN("Unexpected event ID %d", event->eventID); - - cleanup: - virObjectUnref(pool); } =20 =20 diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 13b75b648d..2ee74cae8e 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -2095,6 +2095,6 @@ virStoragePoolObjListExport(virConnectPtr conn, return data.nPools; =20 error: - virObjectListFree(data.pools); + virGObjectListFreeCount(data.pools, data.nPools); return -1; } diff --git a/src/datatypes.c b/src/datatypes.c index 00931bf403..e434cc31f5 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -40,7 +40,6 @@ virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; virClassPtr virStreamClass; virClassPtr virStorageVolClass; -virClassPtr virStoragePoolClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); @@ -49,7 +48,6 @@ static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); static void virStorageVolDispose(void *obj); -static void virStoragePoolDispose(void *obj); =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); static void virDomainCheckpointFinalize(GObject *obj); @@ -163,6 +161,22 @@ vir_nw_filter_binding_class_init(virNWFilterBindingCla= ss *klass) obj->finalize =3D virNWFilterBindingFinalize; } =20 +G_DEFINE_TYPE(virStoragePool, vir_storage_pool, G_TYPE_OBJECT); +static void virStoragePoolFinalize(GObject *obj); + +static void +vir_storage_pool_init(virStoragePool *pool G_GNUC_UNUSED) +{ +} + +static void +vir_storage_pool_class_init(virStoragePoolClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virStoragePoolFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -219,7 +233,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); DECLARE_CLASS(virStorageVol); - DECLARE_CLASS(virStoragePool); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -625,7 +638,7 @@ virInterfaceFinalize(GObject *obj) * @freeFunc: private data cleanup function pointer specific to driver * * Allocates a new storage pool object. When the object is no longer neede= d, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the storage pool object, or NULL on error. */ @@ -634,17 +647,16 @@ virGetStoragePool(virConnectPtr conn, const char *nam= e, const unsigned char *uuid, void *privateData, virFreeCallback freeFunc) { - virStoragePoolPtr ret =3D NULL; + g_autoptr(virStoragePool) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); - virCheckNonNullArgGoto(uuid, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virStoragePoolClass))) - goto error; + ret =3D VIR_STORAGE_POOL(g_object_new(VIR_TYPE_STORAGE_POOL, NULL)); =20 ret->name =3D g_strdup(name); =20 @@ -655,16 +667,12 @@ virGetStoragePool(virConnectPtr conn, const char *nam= e, ret->privateData =3D privateData; ret->privateDataFreeFunc =3D freeFunc; =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virStoragePoolDispose: + * virStoragePoolFinalize: * @obj: the storage pool to release * * Unconditionally release all memory associated with a pool. @@ -674,9 +682,9 @@ virGetStoragePool(virConnectPtr conn, const char *name, * which may also be released if its ref count hits zero. */ static void -virStoragePoolDispose(void *obj) +virStoragePoolFinalize(GObject *obj) { - virStoragePoolPtr pool =3D obj; + virStoragePoolPtr pool =3D VIR_STORAGE_POOL(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(pool->uuid, uuidstr); @@ -687,6 +695,8 @@ virStoragePoolDispose(void *obj) =20 VIR_FREE(pool->name); virObjectUnref(pool->conn); + + G_OBJECT_CLASS(vir_storage_pool_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index e9bc1574e7..2c8256388c 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -36,7 +36,6 @@ extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; extern virClassPtr virStorageVolClass; -extern virClassPtr virStoragePoolClass; =20 #define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() G_DECLARE_FINAL_TYPE(virDomainCheckpoint, @@ -71,6 +70,9 @@ G_DECLARE_FINAL_TYPE(virNWFilterBinding, NW_FILTER_BINDING, GObject); =20 +#define VIR_TYPE_STORAGE_POOL vir_storage_pool_get_type() +G_DECLARE_FINAL_TYPE(virStoragePool, vir_storage_pool, VIR, STORAGE_POOL, = GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -191,8 +193,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckStoragePoolReturn(obj, retval) \ do { \ - virStoragePoolPtr _pool =3D (obj); \ - if (!virObjectIsClass(_pool, virStoragePoolClass) || \ + virStoragePoolPtr _pool =3D VIR_STORAGE_POOL(obj); \ + if (_pool =3D=3D NULL || \ !virObjectIsClass(_pool->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_POOL, \ @@ -205,8 +207,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckStoragePoolGoto(obj, label) \ do { \ - virStoragePoolPtr _pool=3D (obj); \ - if (!virObjectIsClass(_pool, virStoragePoolClass) || \ + virStoragePoolPtr _pool=3D VIR_STORAGE_POOL(obj); \ + if (_pool =3D=3D NULL || \ !virObjectIsClass(_pool->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_POOL, \ @@ -683,7 +685,7 @@ struct _virInterface { * Internal structure associated to a storage pool */ struct _virStoragePool { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *name; /* the storage pool external name= */ unsigned char uuid[VIR_UUID_BUFLEN]; /* the storage pool unique identi= fier */ @@ -696,7 +698,6 @@ struct _virStoragePool { virFreeCallback privateDataFreeFunc; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStoragePool, virObjectUnref); =20 =20 /** diff --git a/src/libvirt-storage.c b/src/libvirt-storage.c index 0406fe84d3..b88b2162de 100644 --- a/src/libvirt-storage.c +++ b/src/libvirt-storage.c @@ -846,7 +846,7 @@ virStoragePoolFree(virStoragePoolPtr pool) =20 virCheckStoragePoolReturn(pool, -1); =20 - virObjectUnref(pool); + g_object_unref(pool); return 0; =20 } @@ -872,13 +872,13 @@ virStoragePoolFree(virStoragePoolPtr pool) int virStoragePoolRef(virStoragePoolPtr pool) { - VIR_DEBUG("pool=3D%p refs=3D%d", pool, pool ? pool->parent.u.s.refs : = 0); + VIR_DEBUG("pool=3D%p", pool); =20 virResetLastError(); =20 virCheckStoragePoolReturn(pool, -1); =20 - virObjectRef(pool); + g_object_ref(pool); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ddb2552c1a..7548baa3f2 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1363,6 +1363,7 @@ vir_network_get_type; vir_network_port_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; +vir_storage_pool_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1387,7 +1388,6 @@ virGetStream; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; -virStoragePoolClass; virStorageVolClass; virStreamClass; =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 02e8271e42..3fd3d570de 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -174,7 +174,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, unsigned long long capacity) { int ret =3D -1; - virStoragePoolPtr pool =3D NULL; + g_autoptr(virStoragePool) pool =3D NULL; virStorageVolPtr vol =3D NULL; char *volName =3D NULL, *basePath =3D NULL; char *volStr =3D NULL; @@ -269,7 +269,6 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, VIR_FREE(basePath); VIR_FREE(volStr); virObjectUnref(vol); - virObjectUnref(pool); return ret; } =20 diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index d5c5ab9aab..f259909533 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -6136,7 +6136,7 @@ remoteDispatchConnectStoragePoolEventRegisterAny(virN= etServerPtr server G_GNUC_U daemonClientEventCallbackPtr ref; struct daemonClientPrivate *priv =3D virNetServerClientGetPrivateData(client); - virStoragePoolPtr pool =3D NULL; + g_autoptr(virStoragePool) pool =3D NULL; virConnectPtr conn =3D remoteGetStorageConn(client); =20 virMutexLock(&priv->lock); @@ -6194,7 +6194,6 @@ remoteDispatchConnectStoragePoolEventRegisterAny(virN= etServerPtr server G_GNUC_U remoteEventCallbackFree(callback); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(pool); return rv; } =20 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 48d83d5fc4..ce5c0b94b5 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5477,7 +5477,7 @@ remoteStoragePoolBuildEventLifecycle(virNetClientProg= ramPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_storage_pool_event_lifecycle_msg *msg =3D evdata; - virStoragePoolPtr pool; + g_autoptr(virStoragePool) pool =3D NULL; virObjectEventPtr event =3D NULL; =20 pool =3D get_nonnull_storage_pool(conn, msg->pool); @@ -5486,7 +5486,6 @@ remoteStoragePoolBuildEventLifecycle(virNetClientProg= ramPtr prog G_GNUC_UNUSED, =20 event =3D virStoragePoolEventLifecycleNew(pool->name, pool->uuid, msg-= >event, msg->detail); - virObjectUnref(pool); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } @@ -5499,7 +5498,7 @@ remoteStoragePoolBuildEventRefresh(virNetClientProgra= mPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_storage_pool_event_refresh_msg *msg =3D evdata; - virStoragePoolPtr pool; + g_autoptr(virStoragePool) pool =3D NULL; virObjectEventPtr event =3D NULL; =20 pool =3D get_nonnull_storage_pool(conn, msg->pool); @@ -5507,7 +5506,6 @@ remoteStoragePoolBuildEventRefresh(virNetClientProgra= mPtr prog G_GNUC_UNUSED, return; =20 event =3D virStoragePoolEventRefreshNew(pool->name, pool->uuid); - virObjectUnref(pool); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 0f16ca89c2..8d19651367 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -203,6 +203,7 @@ my %gobject_impl =3D ( virNetworkPort =3D> 1, virNWFilter =3D> 1, virNWFilterBinding =3D> 1, + virStoragePool =3D> 1, ); =20 sub use_gobject { diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 9cee6f1fde..ed3d5ee2c0 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -4081,7 +4081,7 @@ prlsdkCreateVm(vzDriverPtr driver, virDomainDefPtr de= f) static int virStorageTranslatePoolLocal(virConnectPtr conn, virStorageSourcePtr src) { - virStoragePoolPtr pool =3D NULL; + g_autoptr(virStoragePool) pool =3D NULL; virStorageVolPtr vol =3D NULL; virStorageVolInfo info; int ret =3D -1; @@ -4115,7 +4115,6 @@ virStorageTranslatePoolLocal(virConnectPtr conn, virS= torageSourcePtr src) ret =3D 0; =20 cleanup: - virObjectUnref(pool); virObjectUnref(vol); return ret; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371140; cv=none; d=zohomail.com; s=zohoarc; b=BDYA1b+wWNdwC42eDdMZ5M27zeWMcIcu7JGv5FMJIA2WoaIliYHwo6NnrobybDVs+iPxY6hDyb5SRzebLe6HZptIkfpNxzuHD6DL9l4PJOmXdwhsKhKRX3r6GKIwMKkPkjZ7cwrPaPS5oGB8fTHvIpdQl67fq9hSo/3hHnxiQ54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371140; 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=rM5C7UB6/IKZF9BxIXcvkatE+QFp0pvuqR+s5pRIfxk=; b=Be/FIwqH5OmpqCzu1qtLxWpbds74EIPanxQ8Rfk+28PIw54/dUD9ujSKOD2cT9BRP1NdvSoTvepIYZuHs8rKvhiubV8RPcsgn3d/OTLQS3ya0cn4DOu9KGWSioB0Cu2bveW11E4JlyIxdPwhgu4+NqeZ3g5el4pbzLUJhKh+9jw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371140438735.253759756612; Wed, 13 May 2020 04:59:00 -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-77-ajfAhlifM-KUOhZW0KIdpA-1; Wed, 13 May 2020 07:58:56 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 60B901005510; Wed, 13 May 2020 11:58:51 +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 3B764619C0; Wed, 13 May 2020 11:58:51 +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 06F684E9FB; Wed, 13 May 2020 11:58:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwksL016239 for ; Wed, 13 May 2020 07:58:46 -0400 Received: by smtp.corp.redhat.com (Postfix) id 04D2120110C7; Wed, 13 May 2020 11:58:46 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F39222017E9B for ; Wed, 13 May 2020 11:58:45 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D5BB4916108 for ; Wed, 13 May 2020 11:58:45 +0000 (UTC) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-498-JDOw5xIbMxC6SU7mvNcD5w-1; Wed, 13 May 2020 07:58:43 -0400 Received: by mail-wr1-f47.google.com with SMTP id 50so20008116wrc.11 for ; Wed, 13 May 2020 04:58:42 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371139; 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=rM5C7UB6/IKZF9BxIXcvkatE+QFp0pvuqR+s5pRIfxk=; b=cU4Jg5ctN75wyeJegO3lpqcBYlj0qs+tTxx8iYVLI9eN30rx9RlcE19mt5oePU82qOZ9VP q82yTSXmdkHbRD8+0XUe4voiBUUiZSADaFC0Ng2aArkquFRXbshlcwzNhjKirm2eZ82euo Rwzv5q0ogcT+NlKBwYZYZkXQybKLk+A= X-MC-Unique: ajfAhlifM-KUOhZW0KIdpA-1 X-MC-Unique: JDOw5xIbMxC6SU7mvNcD5w-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=rM5C7UB6/IKZF9BxIXcvkatE+QFp0pvuqR+s5pRIfxk=; b=VqmXPV/WsrwvlwK877VmuKZ4Xe+G5aovkHcbp2x2zzKXJY+0gT1wD1RPnGGnzXySpK umngSuUJaZ81kZzce3YABGEQlX2YytHp0qGdyTzTGmDCDrZ16GVWDFqoGQm3JKFOakGI lHwVwmq9eYRhyGWhejWtcD1MofqMvX5H7jyTcFxKBFkBgukca3L2FkHEGMf13PfWQNOg yCG29huztFtgFsvuPJgE1nIUdzec8JuERUnz5Xja2awY6cB0hCqb0TUuhIUDdV1syR07 qbO3HHB8+wuBQF/u/lblyj8BaAY/46ZvQHBQgCFIuORE1sqJMQNIClZQvnHiCwq0Uzfn +buw== X-Gm-Message-State: AGi0PubkTJurIjbMnu/sZ804PurpJfYs0D++Y725LmZX39CmMGE2ojS3 7hnTB9OdciCSvq7qnGJ0nrCMrU9n X-Google-Smtp-Source: APiQypLWSlRjDkmhOaUSwKhgkeX3Mw+2Er/rxveR6gROnhezwWXVPIoy0+3eADxd+8oFuZbHPIiksg== X-Received: by 2002:adf:f651:: with SMTP id x17mr32067234wrp.277.1589371120957; Wed, 13 May 2020 04:58:40 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 25/40] datatypes: convert virStorageVol to GObject Date: Wed, 13 May 2020 13:57:09 +0200 Message-Id: <20200513115724.157687-26-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.12 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/conf/virstorageobj.c | 2 +- src/datatypes.c | 48 ++++++++++++++++++++++-------------- src/datatypes.h | 15 +++++------ src/libvirt-storage.c | 6 ++--- src/libvirt_private.syms | 2 +- src/qemu/qemu_migration.c | 3 +-- src/rpc/gendispatch.pl | 1 + src/storage/storage_driver.c | 7 +++--- src/vz/vz_sdk.c | 19 ++++++-------- 9 files changed, 54 insertions(+), 49 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 2ee74cae8e..815413418b 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -1052,7 +1052,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn, return data.nvols; =20 error: - virObjectListFree(data.vols); + virGObjectListFreeCount(data.vols, data.nvols); return -1; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index e434cc31f5..489c489761 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -39,7 +39,6 @@ virClassPtr virDomainClass; virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; virClassPtr virStreamClass; -virClassPtr virStorageVolClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); @@ -47,7 +46,6 @@ static void virDomainDispose(void *obj); static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); -static void virStorageVolDispose(void *obj); =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); static void virDomainCheckpointFinalize(GObject *obj); @@ -177,6 +175,22 @@ vir_storage_pool_class_init(virStoragePoolClass *klass) obj->finalize =3D virStoragePoolFinalize; } =20 +G_DEFINE_TYPE(virStorageVol, vir_storage_vol, G_TYPE_OBJECT); +static void virStorageVolFinalize(GObject *obj); + +static void +vir_storage_vol_init(virStorageVol *vol G_GNUC_UNUSED) +{ +} + +static void +vir_storage_vol_class_init(virStorageVolClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virStorageVolFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -232,7 +246,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); - DECLARE_CLASS(virStorageVol); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -710,7 +723,7 @@ virStoragePoolFinalize(GObject *obj) * @freeFunc: private data cleanup function pointer specific to driver * * Allocates a new storage volume object. When the object is no longer nee= ded, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the storage volume object, or NULL on error. */ @@ -718,18 +731,17 @@ virStorageVolPtr virGetStorageVol(virConnectPtr conn, const char *pool, const char *name, const char *key, void *privateData, virFreeCallback freeF= unc) { - virStorageVolPtr ret =3D NULL; + g_autoptr(virStorageVol) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(pool, error); - virCheckNonNullArgGoto(name, error); - virCheckNonNullArgGoto(key, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(pool, NULL); + virCheckNonNullArgReturn(name, NULL); + virCheckNonNullArgReturn(key, NULL); =20 - if (!(ret =3D virObjectNew(virStorageVolClass))) - goto error; + ret =3D VIR_STORAGE_VOL(g_object_new(VIR_TYPE_STORAGE_VOL, NULL)); =20 ret->pool =3D g_strdup(pool); ret->name =3D g_strdup(name); @@ -741,16 +753,12 @@ virGetStorageVol(virConnectPtr conn, const char *pool= , const char *name, ret->privateData =3D privateData; ret->privateDataFreeFunc =3D freeFunc; =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virStorageVolDispose: + * virStorageVolFinalize: * @obj: the storage volume to release * * Unconditionally release all memory associated with a volume. @@ -760,9 +768,9 @@ virGetStorageVol(virConnectPtr conn, const char *pool, = const char *name, * which may also be released if its ref count hits zero. */ static void -virStorageVolDispose(void *obj) +virStorageVolFinalize(GObject *obj) { - virStorageVolPtr vol =3D obj; + virStorageVolPtr vol =3D VIR_STORAGE_VOL(obj); VIR_DEBUG("release vol %p %s", vol, vol->name); =20 if (vol->privateDataFreeFunc) @@ -772,6 +780,8 @@ virStorageVolDispose(void *obj) VIR_FREE(vol->name); VIR_FREE(vol->pool); virObjectUnref(vol->conn); + + G_OBJECT_CLASS(vir_storage_vol_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 2c8256388c..5492c2ac8a 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -35,7 +35,6 @@ extern virClassPtr virDomainClass; extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; -extern virClassPtr virStorageVolClass; =20 #define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() G_DECLARE_FINAL_TYPE(virDomainCheckpoint, @@ -73,6 +72,9 @@ G_DECLARE_FINAL_TYPE(virNWFilterBinding, #define VIR_TYPE_STORAGE_POOL vir_storage_pool_get_type() G_DECLARE_FINAL_TYPE(virStoragePool, vir_storage_pool, VIR, STORAGE_POOL, = GObject); =20 +#define VIR_TYPE_STORAGE_VOL vir_storage_vol_get_type() +G_DECLARE_FINAL_TYPE(virStorageVol, vir_storage_vol, VIR, STORAGE_VOL, GOb= ject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -220,8 +222,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckStorageVolReturn(obj, retval) \ do { \ - virStorageVolPtr _vol =3D (obj); \ - if (!virObjectIsClass(_vol, virStorageVolClass) || \ + virStorageVolPtr _vol =3D VIR_STORAGE_VOL(obj); \ + if (_vol =3D=3D NULL || \ !virObjectIsClass(_vol->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_VOL, \ @@ -233,8 +235,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); } while (0) #define virCheckStorageVolGoto(obj, label) \ do { \ - virStorageVolPtr _vol =3D (obj); \ - if (!virObjectIsClass(_vol, virStorageVolClass) || \ + virStorageVolPtr _vol =3D VIR_STORAGE_VOL(obj); \ + if (_vol =3D=3D NULL || \ !virObjectIsClass(_vol->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STORAGE, \ VIR_ERR_INVALID_STORAGE_VOL, \ @@ -706,7 +708,7 @@ struct _virStoragePool { * Internal structure associated to a storage volume */ struct _virStorageVol { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *pool; /* Pool name of owner */ char *name; /* the storage vol external name = */ @@ -720,7 +722,6 @@ struct _virStorageVol { virFreeCallback privateDataFreeFunc; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageVol, virObjectUnref); =20 =20 /** diff --git a/src/libvirt-storage.c b/src/libvirt-storage.c index b88b2162de..53ad9eeec6 100644 --- a/src/libvirt-storage.c +++ b/src/libvirt-storage.c @@ -1884,7 +1884,7 @@ virStorageVolFree(virStorageVolPtr vol) =20 virCheckStorageVolReturn(vol, -1); =20 - virObjectUnref(vol); + g_object_unref(vol); return 0; } =20 @@ -1909,13 +1909,13 @@ virStorageVolFree(virStorageVolPtr vol) int virStorageVolRef(virStorageVolPtr vol) { - VIR_DEBUG("vol=3D%p refs=3D%d", vol, vol ? vol->parent.u.s.refs : 0); + VIR_DEBUG("vol=3D%p", vol); =20 virResetLastError(); =20 virCheckStorageVolReturn(vol, -1); =20 - virObjectRef(vol); + g_object_ref(vol); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 7548baa3f2..43dcd49786 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1364,6 +1364,7 @@ vir_network_port_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; vir_storage_pool_get_type; +vir_storage_vol_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1388,7 +1389,6 @@ virGetStream; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; -virStorageVolClass; virStreamClass; =20 =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3fd3d570de..f1ad2806e8 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -175,7 +175,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, { int ret =3D -1; g_autoptr(virStoragePool) pool =3D NULL; - virStorageVolPtr vol =3D NULL; + g_autoptr(virStorageVol) vol =3D NULL; char *volName =3D NULL, *basePath =3D NULL; char *volStr =3D NULL; virBuffer buf =3D VIR_BUFFER_INITIALIZER; @@ -268,7 +268,6 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, cleanup: VIR_FREE(basePath); VIR_FREE(volStr); - virObjectUnref(vol); return ret; } =20 diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 8d19651367..1cfafe3742 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -204,6 +204,7 @@ my %gobject_impl =3D ( virNWFilter =3D> 1, virNWFilterBinding =3D> 1, virStoragePool =3D> 1, + virStorageVol =3D> 1, ); =20 sub use_gobject { diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 7e82c09be5..55c70af104 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1892,7 +1892,8 @@ storageVolCreateXML(virStoragePoolPtr pool, virStoragePoolObjPtr obj; virStoragePoolDefPtr def; virStorageBackendPtr backend; - virStorageVolPtr vol =3D NULL, newvol =3D NULL; + virStorageVolPtr vol =3D NULL; + g_autoptr(virStorageVol) newvol =3D NULL; g_autoptr(virStorageVolDef) voldef =3D NULL; =20 virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL); @@ -2012,7 +2013,6 @@ storageVolCreateXML(virStoragePoolPtr pool, voldef =3D NULL; =20 cleanup: - virObjectUnref(newvol); virStoragePoolObjEndAPI(&obj); return vol; } @@ -2029,7 +2029,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, virStorageBackendPtr backend; virStorageVolDefPtr voldefsrc =3D NULL; virStorageVolDefPtr shadowvol =3D NULL; - virStorageVolPtr newvol =3D NULL; + g_autoptr(virStorageVol) newvol =3D NULL; virStorageVolPtr vol =3D NULL; int buildret; g_autoptr(virStorageVolDef) voldef =3D NULL; @@ -2204,7 +2204,6 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool, voldef =3D NULL; =20 cleanup: - virObjectUnref(newvol); VIR_FREE(shadowvol); virStoragePoolObjEndAPI(&obj); virStoragePoolObjEndAPI(&objsrc); diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index ed3d5ee2c0..17d8f9d94b 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -4082,9 +4082,8 @@ static int virStorageTranslatePoolLocal(virConnectPtr conn, virStorageSourcePtr src) { g_autoptr(virStoragePool) pool =3D NULL; - virStorageVolPtr vol =3D NULL; + g_autoptr(virStorageVol) vol =3D NULL; virStorageVolInfo info; - int ret =3D -1; =20 if (!(pool =3D virStoragePoolLookupByName(conn, src->srcpool->pool))) return -1; @@ -4093,30 +4092,26 @@ virStorageTranslatePoolLocal(virConnectPtr conn, vi= rStorageSourcePtr src) _("storage pool '%s' containing volume '%s' " "is not active"), src->srcpool->pool, src->srcpool->volume); - goto cleanup; + return -1; } =20 if (!(vol =3D virStorageVolLookupByName(pool, src->srcpool->volume))) - goto cleanup; + return -1; =20 if (virStorageVolGetInfo(vol, &info) < 0) - goto cleanup; + return -1; =20 if (info.type !=3D VIR_STORAGE_VOL_PLOOP) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported volume format '%s'"), virStorageVolTypeToString(info.type)); - goto cleanup; + return -1; } =20 if (!(src->path =3D virStorageVolGetPath(vol))) - goto cleanup; - - ret =3D 0; + return -1; =20 - cleanup: - virObjectUnref(vol); - return ret; + return 0; } =20 =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371145; cv=none; d=zohomail.com; s=zohoarc; b=fwBPPLmWpV5BBJZ4THbDtffvPzBNQjqXoPCsnjtIFPlea7mNcPE+vSS7opvKj15+2Nkp940P/F6LkzR4fZ/CpkVnNx34H5hRN5pCyNgIN/G5RLtOwiT0LJBSzJjMlTBNjYQrPiyqkXrLrR0SXoCE8PW+OJk2VlcUVlp7eZJ/ynE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371145; 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=DoF+N1fjUpZX9nw5vXhJmRKrURm8TWeth0S8WmHI6g0=; b=PXUTlAc9Nlg8V5o2y7+J6VbcNI5JDWfxvK4m9AksMJdXmeqiK0FmTqdaMWEAlycuIluBwgKK6ckQjAjnIvgyPl5Q04eXpojKtLF9PWrxYd2RQkHuH/BHv6IeWEO5Nx0fBKNaz/2LZPhKlhsJJU+0F5lxsQHA/l9FudW4jtpE4ts= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371145545464.37137171413235; Wed, 13 May 2020 04:59:05 -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-344-oysP8YvFPny-P4iRET7qOg-1; Wed, 13 May 2020 07:58:59 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0C43E18FF683; Wed, 13 May 2020 11:58:54 +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 DA1AC1000079; Wed, 13 May 2020 11:58:53 +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 A85301806B0A; Wed, 13 May 2020 11:58:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwnVa016262 for ; Wed, 13 May 2020 07:58:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7494011921B2; Wed, 13 May 2020 11:58:49 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6F7B911921AF for ; Wed, 13 May 2020 11:58:46 +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-mx02.redhat.com (Postfix) with ESMTPS id 90DEA1019CA9 for ; Wed, 13 May 2020 11:58:46 +0000 (UTC) Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-146-VN6ztHkiP0-oq3-tN88oLw-1; Wed, 13 May 2020 07:58:44 -0400 Received: by mail-wm1-f46.google.com with SMTP id m12so21340764wmc.0 for ; Wed, 13 May 2020 04:58:43 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371144; 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=DoF+N1fjUpZX9nw5vXhJmRKrURm8TWeth0S8WmHI6g0=; b=EC5ZPWmb8DQhnCdoE20D2MceU/joT+Z1S4HOB8GiXDsASxtF3md91VhGdK+47BYhdRy5Jy G9M/NkwFPtpUfvfB2LPjr3kknthZ11jIGBTsKQAr15XDZyQG4V/VZyTFEMrNLoeGKi+koo +o/DS4pq+NgKoAl+QT66cvGwoSWG63c= X-MC-Unique: oysP8YvFPny-P4iRET7qOg-1 X-MC-Unique: VN6ztHkiP0-oq3-tN88oLw-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=DoF+N1fjUpZX9nw5vXhJmRKrURm8TWeth0S8WmHI6g0=; b=KoII3SjbtHGtfqR0VXYNWq+kfLs6AiOj4Uk23BlETWqgcuaxhPmLXuG1YiIZ972ti8 lj7DcmZ3NmstanJM3PoZwFjCxpGjB5hcfvSHSnXQKSKCcsNwDaWZiTPz4nSbdUzefgLz HmIO8F47s7gXk/p+AuxZjKBGX6NvAP0kjAICAi/Iw41vjkvXYX0dO4oXSRthPmYJ8BtL 9bQiV0HXYYbWMwPEZiErLTz7u/M/Zun3bVzEoYCk5yTz5MIU3elGAP2n3zrgaXa61Jx9 87Xe62LdX56PdX5Go8Zj+7eWzxnAiAcd0bnMpqwEp2gHFKE4Mz4X/BTaaC+h0xj3wvIo eXzA== X-Gm-Message-State: AGi0PuadpkdXmLhZu8UePVPf8+AzLAu7+wzefOu8npU35UyHefT2+lty GxXXvqpTDEqZWYTfGhF9ENaj5W4m X-Google-Smtp-Source: APiQypKpdH8vJTeDE4PEsJP8B8anbDOnnXsB/lEdjimaADwFm8sivWxLYOCja1B6+E3Go6TFcb/qlQ== X-Received: by 2002:a7b:cb0c:: with SMTP id u12mr46093628wmj.137.1589371122296; Wed, 13 May 2020 04:58:42 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 26/40] datatypes: convert virNodeDevice to GObject Date: Wed, 13 May 2020 13:57:10 +0200 Message-Id: <20200513115724.157687-27-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.84 on 10.5.11.22 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/conf/node_device_event.c | 11 ++++----- src/conf/node_device_util.c | 4 ++-- src/conf/virnodedeviceobj.c | 3 +-- src/datatypes.c | 44 ++++++++++++++++++++++-------------- src/datatypes.h | 14 +++++++----- src/libvirt-nodedev.c | 6 ++--- src/libvirt_private.syms | 2 +- src/libxl/libxl_driver.c | 9 +++----- src/qemu/qemu_driver.c | 9 +++----- src/remote/remote_driver.c | 6 ++--- src/rpc/gendispatch.pl | 5 ++-- src/test/test_driver.c | 4 ++-- 12 files changed, 58 insertions(+), 59 deletions(-) diff --git a/src/conf/node_device_event.c b/src/conf/node_device_event.c index c6915be593..e4037f5ae0 100644 --- a/src/conf/node_device_event.c +++ b/src/conf/node_device_event.c @@ -110,8 +110,8 @@ virNodeDeviceEventDispatchDefaultFunc(virConnectPtr con= n, virConnectObjectEventGenericCallback= cb, void *cbopaque) { - virNodeDevicePtr dev =3D virGetNodeDevice(conn, - event->meta.name); + g_autoptr(virNodeDevice) dev =3D virGetNodeDevice(conn, + event->meta.name); =20 if (!dev) return; @@ -126,23 +126,20 @@ virNodeDeviceEventDispatchDefaultFunc(virConnectPtr c= onn, nodeDeviceLif= ecycleEvent->type, nodeDeviceLif= ecycleEvent->detail, cbopaque); - goto cleanup; + return; } =20 case VIR_NODE_DEVICE_EVENT_ID_UPDATE: { ((virConnectNodeDeviceEventGenericCallback)cb)(conn, dev, cbopaque); - goto cleanup; + return; } =20 case VIR_NODE_DEVICE_EVENT_ID_LAST: break; } VIR_WARN("Unexpected event ID %d", event->eventID); - - cleanup: - virObjectUnref(dev); } =20 =20 diff --git a/src/conf/node_device_util.c b/src/conf/node_device_util.c index 5e80422d7f..0b9292ffd3 100644 --- a/src/conf/node_device_util.c +++ b/src/conf/node_device_util.c @@ -20,6 +20,7 @@ =20 #include "internal.h" =20 +#include "datatypes.h" #include "node_device_util.h" #include "virlog.h" #include "virscsihost.h" @@ -45,7 +46,7 @@ char * virNodeDeviceGetParentName(virConnectPtr conn, const char *nodedev_name) { - virNodeDevicePtr device =3D NULL; + g_autoptr(virNodeDevice) device =3D NULL; char *parent; =20 if (!(device =3D virNodeDeviceLookupByName(conn, nodedev_name))) { @@ -56,7 +57,6 @@ virNodeDeviceGetParentName(virConnectPtr conn, } =20 parent =3D g_strdup(virNodeDeviceGetParent(device)); - virObjectUnref(device); =20 return parent; } diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index 3a34a324ca..9b1133f96b 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -866,7 +866,6 @@ virNodeDeviceObjListExportCallback(void *payload, virNodeDeviceObjMatch(obj, data->flags)) { if (data->devices) { if (!(device =3D virGetNodeDevice(data->conn, def->name))) { - virObjectUnref(device); data->error =3D true; goto cleanup; } @@ -914,7 +913,7 @@ virNodeDeviceObjListExport(virConnectPtr conn, return data.ndevices; =20 cleanup: - virObjectListFree(data.devices); + virGObjectListFreeCount(data.devices, data.ndevices); return -1; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index 489c489761..29a7177780 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,14 +36,12 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virNodeDeviceClass; virClassPtr virSecretClass; virClassPtr virStreamClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virNodeDeviceDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); =20 @@ -127,6 +125,22 @@ vir_network_port_class_init(virNetworkPortClass *klass) obj->finalize =3D virNetworkPortFinalize; } =20 +G_DEFINE_TYPE(virNodeDevice, vir_node_device, G_TYPE_OBJECT); +static void virNodeDeviceFinalize(GObject *obj); + +static void +vir_node_device_init(virNodeDevice *dev G_GNUC_UNUSED) +{ +} + +static void +vir_node_device_class_init(virNodeDeviceClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virNodeDeviceFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterFinalize(GObject *obj); =20 @@ -243,7 +257,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); =20 @@ -791,37 +804,32 @@ virStorageVolFinalize(GObject *obj) * @name: device name (unique on node) * * Allocates a new node device object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the node device object, or NULL on error. */ virNodeDevicePtr virGetNodeDevice(virConnectPtr conn, const char *name) { - virNodeDevicePtr ret =3D NULL; + g_autoptr(virNodeDevice) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); =20 - if (!(ret =3D virObjectNew(virNodeDeviceClass))) - goto error; + ret =3D VIR_NODE_DEVICE(g_object_new(VIR_TYPE_NODE_DEVICE, NULL)); =20 ret->name =3D g_strdup(name); =20 ret->conn =3D virObjectRef(conn); - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 /** - * virNodeDeviceDispose: + * virNodeDeviceFinalize: * @obj: the node device to release * * Unconditionally release all memory associated with a device. @@ -831,15 +839,17 @@ virGetNodeDevice(virConnectPtr conn, const char *name) * which may also be released if its ref count hits zero. */ static void -virNodeDeviceDispose(void *obj) +virNodeDeviceFinalize(GObject *obj) { - virNodeDevicePtr dev =3D obj; + virNodeDevicePtr dev =3D VIR_NODE_DEVICE(obj); VIR_DEBUG("release dev %p %s", dev, dev->name); =20 VIR_FREE(dev->name); VIR_FREE(dev->parentName); =20 virObjectUnref(dev->conn); + + G_OBJECT_CLASS(vir_node_device_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 5492c2ac8a..cbf565097f 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virNodeDeviceClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; =20 @@ -59,6 +58,9 @@ G_DECLARE_FINAL_TYPE(virNetwork, vir_network, VIR, NETWOR= K, GObject); #define VIR_TYPE_NETWORK_PORT vir_network_port_get_type() G_DECLARE_FINAL_TYPE(virNetworkPort, vir_network_port, VIR, NETWORK_PORT, = GObject); =20 +#define VIR_TYPE_NODE_DEVICE vir_node_device_get_type() +G_DECLARE_FINAL_TYPE(virNodeDevice, vir_node_device, VIR, NODE_DEVICE, GOb= ject); + #define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); =20 @@ -248,8 +250,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNodeDeviceReturn(obj, retval) \ do { \ - virNodeDevicePtr _node =3D (obj); \ - if (!virObjectIsClass(_node, virNodeDeviceClass) || \ + virNodeDevicePtr _node =3D VIR_NODE_DEVICE(obj); \ + if (_node =3D=3D NULL || \ !virObjectIsClass(_node->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NODEDEV, \ VIR_ERR_INVALID_NODE_DEVICE, \ @@ -262,8 +264,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNodeDeviceGoto(obj, label) \ do { \ - virNodeDevicePtr _dev=3D (obj); \ - if (!virObjectIsClass(_dev, virNodeDeviceClass) || \ + virNodeDevicePtr _dev=3D VIR_NODE_DEVICE(obj); \ + if (_dev =3D=3D NULL || \ !virObjectIsClass(_dev->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NODEDEV, \ VIR_ERR_INVALID_NODE_DEVICE, \ @@ -730,7 +732,7 @@ struct _virStorageVol { * Internal structure associated with a node device */ struct _virNodeDevice { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection = */ char *name; /* device name (unique on node) */ char *parentName; /* parent device name */ diff --git a/src/libvirt-nodedev.c b/src/libvirt-nodedev.c index dce46b7181..98db5e9813 100644 --- a/src/libvirt-nodedev.c +++ b/src/libvirt-nodedev.c @@ -452,7 +452,7 @@ virNodeDeviceFree(virNodeDevicePtr dev) =20 virCheckNodeDeviceReturn(dev, -1); =20 - virObjectUnref(dev); + g_object_unref(dev); return 0; } =20 @@ -477,13 +477,13 @@ virNodeDeviceFree(virNodeDevicePtr dev) int virNodeDeviceRef(virNodeDevicePtr dev) { - VIR_DEBUG("dev=3D%p refs=3D%d", dev, dev ? dev->parent.u.s.refs : 0); + VIR_DEBUG("dev=3D%p", dev); =20 virResetLastError(); =20 virCheckNodeDeviceReturn(dev, -1); =20 - virObjectRef(dev); + g_object_ref(dev); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 43dcd49786..fc0a23508b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1361,6 +1361,7 @@ vir_domain_snapshot_get_type; vir_interface_get_type; vir_network_get_type; vir_network_port_get_type; +vir_node_device_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; vir_storage_pool_get_type; @@ -1387,7 +1388,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virNewConnectCloseCallbackData; -virNodeDeviceClass; virSecretClass; virStreamClass; =20 diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 0e465f7d05..202b1d73c5 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -5787,7 +5787,7 @@ libxlNodeDeviceDetachFlags(virNodeDevicePtr dev, libxlDriverPrivatePtr driver =3D dev->conn->privateData; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -5837,7 +5837,6 @@ libxlNodeDeviceDetachFlags(virNodeDevicePtr dev, cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); VIR_FREE(xml); return ret; @@ -5860,7 +5859,7 @@ libxlNodeDeviceReAttach(virNodeDevicePtr dev) libxlDriverPrivatePtr driver =3D dev->conn->privateData; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 if (!(nodeconn =3D virGetConnectNodeDev())) goto cleanup; @@ -5901,7 +5900,6 @@ libxlNodeDeviceReAttach(virNodeDevicePtr dev) cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); VIR_FREE(xml); return ret; @@ -5918,7 +5916,7 @@ libxlNodeDeviceReset(virNodeDevicePtr dev) libxlDriverPrivatePtr driver =3D dev->conn->privateData; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 if (!(nodeconn =3D virGetConnectNodeDev())) goto cleanup; @@ -5959,7 +5957,6 @@ libxlNodeDeviceReset(virNodeDevicePtr dev) cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); VIR_FREE(xml); return ret; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 26b7450e84..7a9fdfa453 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12953,7 +12953,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, bool vfio =3D qemuHostdevHostSupportsPassthroughVFIO(); virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -13014,7 +13014,6 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); return ret; } @@ -13036,7 +13035,7 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) g_autofree char *xml =3D NULL; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 if (!(nodeconn =3D virGetConnectNodeDev())) goto cleanup; @@ -13074,7 +13073,6 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) virPCIDeviceFree(pci); cleanup: virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); return ret; } @@ -13090,7 +13088,7 @@ qemuNodeDeviceReset(virNodeDevicePtr dev) g_autofree char *xml =3D NULL; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; virConnectPtr nodeconn =3D NULL; - virNodeDevicePtr nodedev =3D NULL; + g_autoptr(virNodeDevice) nodedev =3D NULL; =20 if (!(nodeconn =3D virGetConnectNodeDev())) goto cleanup; @@ -13128,7 +13126,6 @@ qemuNodeDeviceReset(virNodeDevicePtr dev) virPCIDeviceFree(pci); cleanup: virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); return ret; } diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index ce5c0b94b5..9b22953061 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5518,7 +5518,7 @@ remoteNodeDeviceBuildEventLifecycle(virNetClientProgr= amPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_node_device_event_lifecycle_msg *msg =3D evdata; - virNodeDevicePtr dev; + g_autoptr(virNodeDevice) dev =3D NULL; virObjectEventPtr event =3D NULL; =20 dev =3D get_nonnull_node_device(conn, msg->dev); @@ -5527,7 +5527,6 @@ remoteNodeDeviceBuildEventLifecycle(virNetClientProgr= amPtr prog G_GNUC_UNUSED, =20 event =3D virNodeDeviceEventLifecycleNew(dev->name, msg->event, msg->detail); - virObjectUnref(dev); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } @@ -5540,7 +5539,7 @@ remoteNodeDeviceBuildEventUpdate(virNetClientProgramP= tr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_node_device_event_update_msg *msg =3D evdata; - virNodeDevicePtr dev; + g_autoptr(virNodeDevice) dev =3D NULL; virObjectEventPtr event =3D NULL; =20 dev =3D get_nonnull_node_device(conn, msg->dev); @@ -5548,7 +5547,6 @@ remoteNodeDeviceBuildEventUpdate(virNetClientProgramP= tr prog G_GNUC_UNUSED, return; =20 event =3D virNodeDeviceEventUpdateNew(dev->name); - virObjectUnref(dev); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 1cfafe3742..6869311f06 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -201,6 +201,7 @@ my %gobject_impl =3D ( virInterface =3D> 1, virNetwork =3D> 1, virNetworkPort =3D> 1, + virNodeDevice =3D> 1, virNWFilter =3D> 1, virNWFilterBinding =3D> 1, virStoragePool =3D> 1, @@ -596,13 +597,11 @@ elsif ($mode eq "server") { !($argtype =3D~ m/^remote_node_device_create_xml_/) and !($argtype =3D~ m/^remote_node_device_lookup_scsi_host_by_= wwn_/)) { $has_node_device =3D 1; - push(@vars_list, "virNodeDevicePtr dev =3D NULL"); + push(@vars_list, "g_autoptr(virNodeDevice) dev =3D NULL"); push(@getters_list, " if (!(dev =3D get_nonnull_node_device_name($conn= _var, args->name)))\n" . " goto cleanup;\n"); push(@args_list, "dev"); - push(@free_list, - " virObjectUnref(dev);"); } =20 foreach my $args_member (@{$call->{args_members}}) { diff --git a/src/test/test_driver.c b/src/test/test_driver.c index d1e9b6cd49..b9238a174e 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -7451,7 +7451,8 @@ testNodeDeviceCreateXML(virConnectPtr conn, { testDriverPtr driver =3D conn->privateData; virNodeDeviceDefPtr def =3D NULL; - virNodeDevicePtr dev =3D NULL, ret =3D NULL; + g_autoptr(virNodeDevice) dev =3D NULL; + virNodeDevicePtr ret =3D NULL; virNodeDeviceObjPtr obj =3D NULL; virNodeDeviceDefPtr objdef; g_autofree char *wwnn =3D NULL; @@ -7494,7 +7495,6 @@ testNodeDeviceCreateXML(virConnectPtr conn, cleanup: virNodeDeviceObjEndAPI(&obj); virNodeDeviceDefFree(def); - virObjectUnref(dev); return ret; } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371141; cv=none; d=zohomail.com; s=zohoarc; b=i1v+ZRZzVGXsHXK2cBqssBwQrvSJMzzMu8nQ0s40uYXjnpxwfgat4elXDO3IZp6qLPGIVIklYZy+GOo+rp9I0VGDvlVLzS/2yjJeh7FXgP3XuiLmzu7aAkpDm1RGS+Mo2TdPZycW6yBvkUWtn1N3KbCofjTeXq8H4yxAml3QQ8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371141; 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=OoZx/W+qn6Y7U32gTkzAlIW4vAlpRiPE6xMGiDy9BDo=; b=aDPRWs7rifHHFoJ8//GdPnmY82gUo2Rj/pR7BNM1/zslpid9vgB98xs4HzQrrF04LGGO63XfsPm8u0mAO3G52zU20r8hpxxF7kg7FvWOhjlHKoy6QjnCZnNXfstA+y62pWWLujWYS5389o+TZg6H04zQzyWvEg0XMFVblnaZ0Ec= 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 1589371141046942.2587676035835; Wed, 13 May 2020 04:59:01 -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-284-cXzGpcLENreYLhP0RhuqLA-1; Wed, 13 May 2020 07:58:56 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1A92784E279; Wed, 13 May 2020 11:58:51 +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 E6EA560CD3; Wed, 13 May 2020 11:58:50 +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 B444D4E9F9; Wed, 13 May 2020 11:58:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwllL016251 for ; Wed, 13 May 2020 07:58:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id CFDDC2156A2D; Wed, 13 May 2020 11:58:47 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CA75C2166B27 for ; Wed, 13 May 2020 11:58:47 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A0CFC1859163 for ; Wed, 13 May 2020 11:58:47 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-223-4NymmTrDNvGocP6c9p3PjA-1; Wed, 13 May 2020 07:58:45 -0400 Received: by mail-wr1-f53.google.com with SMTP id l17so6982915wrr.4 for ; Wed, 13 May 2020 04:58:45 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371139; 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=OoZx/W+qn6Y7U32gTkzAlIW4vAlpRiPE6xMGiDy9BDo=; b=IyDJ4l9KdJR+7tm4mlAotrxKRnMCQJXcr7psK3Idh38+N7hGlRCvAc8xEPKqman3IwxzIp 5h8i4CnHml3WUvGf1Zk0D5rQLepUEUhnT7FNlej+ds6DAFzoK2nDDkaZSW7HPJuaWipC/7 IKUdKCUB/LHLbQNmokvv2Zqz7zuSntY= X-MC-Unique: cXzGpcLENreYLhP0RhuqLA-1 X-MC-Unique: 4NymmTrDNvGocP6c9p3PjA-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=OoZx/W+qn6Y7U32gTkzAlIW4vAlpRiPE6xMGiDy9BDo=; b=Ol3cITQ23m1PwytM68RjfbanoiMRKM7YBLg+kCIqx+noIK1gNPVf2GrqrRglfrhUop OHb6CIDMwyYxbYoJ159OOJvBUHDJugOc+OHzGp2F+49RaeGfBKNQANoczyQUE2TvPxMa y2dV5rNt3u1rijrNvQAXVao2Ogd7EDrn0OXCMpgrYmkvVZpgAUTvoWuMlCl2RUzDr0zK OvrFKWa+jGYBWyohFUqKkIHzlE7UofrHWl0fsMj9E0RELCltC7WqhDb89amrMhn4crSk ugNH3DsLHPpJBv1bct744zABtcIIvDdCwGai0RBDaK5Mkh1YFnskM0KNya+hvUtAbr7Z fiag== X-Gm-Message-State: AGi0Puam3KarfZQcMTlXls9yon6BXXUZaTznbDq7iw72+fW252vBzml1 Jcdzw/XGypm6jhVs7+SVgwTPeeuy X-Google-Smtp-Source: APiQypJzqebJxCNdO9JrBH85RyON9L5D+aaRorhn9Qlosq2ZiZSjzLihdsNk+8MCoyJP2L5V93b32w== X-Received: by 2002:a5d:54c4:: with SMTP id x4mr32571579wrv.73.1589371123620; Wed, 13 May 2020 04:58:43 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 27/40] datatypes: convert virSecret to GObject Date: Wed, 13 May 2020 13:57:11 +0200 Message-Id: <20200513115724.157687-28-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.12 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/conf/secret_event.c | 15 ++++------ src/conf/virsecretobj.c | 2 +- src/datatypes.c | 44 ++++++++++++++++++----------- src/datatypes.h | 14 +++++---- src/libvirt-secret.c | 7 ++--- src/libvirt_private.syms | 2 +- src/remote/remote_daemon_dispatch.c | 6 ++-- src/remote/remote_driver.c | 6 ++-- src/rpc/gendispatch.pl | 1 + src/storage/storage_util.c | 4 +-- src/util/virsecret.c | 3 +- 11 files changed, 53 insertions(+), 51 deletions(-) diff --git a/src/conf/secret_event.c b/src/conf/secret_event.c index 1c34dcfbc9..96fdcc3577 100644 --- a/src/conf/secret_event.c +++ b/src/conf/secret_event.c @@ -109,10 +109,10 @@ virSecretEventDispatchDefaultFunc(virConnectPtr conn, virConnectObjectEventGenericCallback cb, void *cbopaque) { - virSecretPtr secret =3D virGetSecret(conn, - event->meta.uuid, - event->meta.id, - event->meta.name); + g_autoptr(virSecret) secret =3D virGetSecret(conn, + event->meta.uuid, + event->meta.id, + event->meta.name); =20 if (!secret) return; @@ -127,23 +127,20 @@ virSecretEventDispatchDefaultFunc(virConnectPtr conn, secretLifecycleEv= ent->type, secretLifecycleEv= ent->detail, cbopaque); - goto cleanup; + return; } =20 case VIR_SECRET_EVENT_ID_VALUE_CHANGED: { ((virConnectSecretEventGenericCallback)cb)(conn, secret, cbopaque); - goto cleanup; + return; } =20 case VIR_SECRET_EVENT_ID_LAST: break; } VIR_WARN("Unexpected event ID %d", event->eventID); - - cleanup: - virObjectUnref(secret); } =20 =20 diff --git a/src/conf/virsecretobj.c b/src/conf/virsecretobj.c index 81c9f2c346..3905fc0f9b 100644 --- a/src/conf/virsecretobj.c +++ b/src/conf/virsecretobj.c @@ -611,7 +611,7 @@ virSecretObjListExport(virConnectPtr conn, return data.nsecrets; =20 error: - virObjectListFree(data.secrets); + virGObjectListFreeCount(data.secrets, data.nsecrets); return -1; } =20 diff --git a/src/datatypes.c b/src/datatypes.c index 29a7177780..b98db8721f 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,13 +36,11 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virSecretClass; virClassPtr virStreamClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); @@ -173,6 +171,22 @@ vir_nw_filter_binding_class_init(virNWFilterBindingCla= ss *klass) obj->finalize =3D virNWFilterBindingFinalize; } =20 +G_DEFINE_TYPE(virSecret, vir_secret, G_TYPE_OBJECT); +static void virSecretFinalize(GObject *obj); + +static void +vir_secret_init(virSecret *sec G_GNUC_UNUSED) +{ +} + +static void +vir_secret_class_init(virSecretClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virSecretFinalize; +} + G_DEFINE_TYPE(virStoragePool, vir_storage_pool, G_TYPE_OBJECT); static void virStoragePoolFinalize(GObject *obj); =20 @@ -257,7 +271,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); @@ -859,7 +872,7 @@ virNodeDeviceFinalize(GObject *obj) * @uuid: secret UUID * * Allocates a new secret object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the secret object, or NULL on error. */ @@ -867,16 +880,15 @@ virSecretPtr virGetSecret(virConnectPtr conn, const unsigned char *uuid, int usageType, const char *usageID) { - virSecretPtr ret =3D NULL; + g_autoptr(virSecret) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(uuid, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virSecretClass))) - return NULL; + ret =3D VIR_SECRET(g_object_new(VIR_TYPE_SECRET, NULL)); =20 memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN); ret->usageType =3D usageType; @@ -884,15 +896,11 @@ virGetSecret(virConnectPtr conn, const unsigned char = *uuid, =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 /** - * virSecretDispose: + * virSecretFinalize: * @obj: the secret to release * * Unconditionally release all memory associated with a secret. @@ -902,9 +910,9 @@ virGetSecret(virConnectPtr conn, const unsigned char *u= uid, * which may also be released if its ref count hits zero. */ static void -virSecretDispose(void *obj) +virSecretFinalize(GObject *obj) { - virSecretPtr secret =3D obj; + virSecretPtr secret =3D VIR_SECRET(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(secret->uuid, uuidstr); @@ -912,6 +920,8 @@ virSecretDispose(void *obj) =20 VIR_FREE(secret->usageID); virObjectUnref(secret->conn); + + G_OBJECT_CLASS(vir_secret_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index cbf565097f..2f97268691 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; =20 #define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() @@ -71,6 +70,9 @@ G_DECLARE_FINAL_TYPE(virNWFilterBinding, NW_FILTER_BINDING, GObject); =20 +#define VIR_TYPE_SECRET vir_secret_get_type() +G_DECLARE_FINAL_TYPE(virSecret, vir_secret, VIR, SECRET, GObject); + #define VIR_TYPE_STORAGE_POOL vir_storage_pool_get_type() G_DECLARE_FINAL_TYPE(virStoragePool, vir_storage_pool, VIR, STORAGE_POOL, = GObject); =20 @@ -277,8 +279,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckSecretReturn(obj, retval) \ do { \ - virSecretPtr _secret =3D (obj); \ - if (!virObjectIsClass(_secret, virSecretClass) || \ + virSecretPtr _secret =3D VIR_SECRET(obj); \ + if (_secret =3D=3D NULL || \ !virObjectIsClass(_secret->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_SECRET, \ VIR_ERR_INVALID_SECRET, \ @@ -291,8 +293,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckSecretGoto(obj, label) \ do { \ - virSecretPtr _secret =3D (obj); \ - if (!virObjectIsClass(_secret, virSecretClass) || \ + virSecretPtr _secret =3D VIR_SECRET(obj); \ + if (_secret =3D=3D NULL || \ !virObjectIsClass(_secret->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_SECRET, \ VIR_ERR_INVALID_SECRET, \ @@ -744,7 +746,7 @@ struct _virNodeDevice { * Internal structure associated with a secret */ struct _virSecret { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ unsigned char uuid[VIR_UUID_BUFLEN]; /* the secret unique identifier */ int usageType; /* the type of usage */ diff --git a/src/libvirt-secret.c b/src/libvirt-secret.c index 33cbdd7b0b..4248536a5b 100644 --- a/src/libvirt-secret.c +++ b/src/libvirt-secret.c @@ -658,14 +658,13 @@ virSecretUndefine(virSecretPtr secret) int virSecretRef(virSecretPtr secret) { - VIR_DEBUG("secret=3D%p refs=3D%d", secret, - secret ? secret->parent.u.s.refs : 0); + VIR_DEBUG("secret=3D%p", secret); =20 virResetLastError(); =20 virCheckSecretReturn(secret, -1); =20 - virObjectRef(secret); + g_object_ref(secret); return 0; } =20 @@ -687,7 +686,7 @@ virSecretFree(virSecretPtr secret) =20 virCheckSecretReturn(secret, -1); =20 - virObjectUnref(secret); + g_object_unref(secret); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fc0a23508b..7a1e7b60dc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1364,6 +1364,7 @@ vir_network_port_get_type; vir_node_device_get_type; vir_nw_filter_binding_get_type; vir_nw_filter_get_type; +vir_secret_get_type; vir_storage_pool_get_type; vir_storage_vol_get_type; virConnectClass; @@ -1388,7 +1389,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virNewConnectCloseCallbackData; -virSecretClass; virStreamClass; =20 =20 diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index f259909533..427cede17e 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -4382,7 +4382,7 @@ remoteDispatchSecretGetValue(virNetServerPtr server G= _GNUC_UNUSED, remote_secret_get_value_args *args, remote_secret_get_value_ret *ret) { - virSecretPtr secret =3D NULL; + g_autoptr(virSecret) secret =3D NULL; size_t value_size; unsigned char *value; int rv =3D -1; @@ -4405,7 +4405,6 @@ remoteDispatchSecretGetValue(virNetServerPtr server G= _GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(secret); return rv; } =20 @@ -6375,7 +6374,7 @@ remoteDispatchConnectSecretEventRegisterAny(virNetSer= verPtr server G_GNUC_UNUSED daemonClientEventCallbackPtr ref; struct daemonClientPrivate *priv =3D virNetServerClientGetPrivateData(client); - virSecretPtr secret =3D NULL; + g_autoptr(virSecret) secret =3D NULL; virConnectPtr conn =3D remoteGetSecretConn(client); =20 virMutexLock(&priv->lock); @@ -6433,7 +6432,6 @@ remoteDispatchConnectSecretEventRegisterAny(virNetSer= verPtr server G_GNUC_UNUSED remoteEventCallbackFree(callback); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(secret); return rv; } =20 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 9b22953061..c108b56c34 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5559,7 +5559,7 @@ remoteSecretBuildEventLifecycle(virNetClientProgramPt= r prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_secret_event_lifecycle_msg *msg =3D evdata; - virSecretPtr secret; + g_autoptr(virSecret) secret =3D NULL; virObjectEventPtr event =3D NULL; =20 secret =3D get_nonnull_secret(conn, msg->secret); @@ -5568,7 +5568,6 @@ remoteSecretBuildEventLifecycle(virNetClientProgramPt= r prog G_GNUC_UNUSED, =20 event =3D virSecretEventLifecycleNew(secret->uuid, secret->usageType, = secret->usageID, msg->event, msg->detail); - virObjectUnref(secret); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } @@ -5581,7 +5580,7 @@ remoteSecretBuildEventValueChanged(virNetClientProgra= mPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; remote_secret_event_value_changed_msg *msg =3D evdata; - virSecretPtr secret; + g_autoptr(virSecret) secret =3D NULL; virObjectEventPtr event =3D NULL; =20 secret =3D get_nonnull_secret(conn, msg->secret); @@ -5589,7 +5588,6 @@ remoteSecretBuildEventValueChanged(virNetClientProgra= mPtr prog G_GNUC_UNUSED, return; =20 event =3D virSecretEventValueChangedNew(secret->uuid, secret->usageTyp= e, secret->usageID); - virObjectUnref(secret); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 6869311f06..902ff091a5 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -204,6 +204,7 @@ my %gobject_impl =3D ( virNodeDevice =3D> 1, virNWFilter =3D> 1, virNWFilterBinding =3D> 1, + virSecret =3D> 1, virStoragePool =3D> 1, virStorageVol =3D> 1, ); diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 1ec1d13625..7e3bfd1393 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2172,7 +2172,7 @@ virStorageBackendVolDeleteLocal(virStoragePoolObjPtr = pool G_GNUC_UNUSED, static int storageBackendLoadDefaultSecrets(virStorageVolDefPtr vol) { - virSecretPtr sec; + g_autoptr(virSecret) sec =3D NULL; virStorageEncryptionSecretPtr encsec =3D NULL; virConnectPtr conn =3D NULL; =20 @@ -2199,7 +2199,6 @@ storageBackendLoadDefaultSecrets(virStorageVolDefPtr = vol) if (VIR_ALLOC_N(vol->target.encryption->secrets, 1) < 0 || VIR_ALLOC(encsec) < 0) { VIR_FREE(vol->target.encryption->secrets); - virObjectUnref(sec); return -1; } =20 @@ -2209,7 +2208,6 @@ storageBackendLoadDefaultSecrets(virStorageVolDefPtr = vol) encsec->type =3D VIR_STORAGE_ENCRYPTION_SECRET_TYPE_PASSPHRASE; encsec->seclookupdef.type =3D VIR_SECRET_LOOKUP_TYPE_UUID; virSecretGetUUID(sec, encsec->seclookupdef.u.uuid); - virObjectUnref(sec); =20 return 0; } diff --git a/src/util/virsecret.c b/src/util/virsecret.c index 54d6bbcb7c..7279d22683 100644 --- a/src/util/virsecret.c +++ b/src/util/virsecret.c @@ -147,7 +147,7 @@ virSecretGetSecretString(virConnectPtr conn, uint8_t **secret, size_t *secret_size) { - virSecretPtr sec =3D NULL; + g_autoptr(virSecret) sec =3D NULL; int ret =3D -1; =20 switch (seclookupdef->type) { @@ -190,6 +190,5 @@ virSecretGetSecretString(virConnectPtr conn, ret =3D 0; =20 cleanup: - virObjectUnref(sec); return ret; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371145; cv=none; d=zohomail.com; s=zohoarc; b=fzT0Ji1PJw3Tfl0Owt1josXg+Ym3oQl3YC1N2/DT37ciu99+P3Rntbg6bfXgnGOxxdDpBSz2Ro2M6ycXOcnuoB60ZsxcmhVeo68x5k2psvsbgOeQzxSwFWitsI61jx5Ll3cVhwfQaFJeVsK5ZZT2On1C7YZejZqNJpKScUSY4eE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371145; 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=Ym7tWbQOX55Z1dXVa3Sv/gKEIN9S4jnpP+vEGSBdAC4=; b=LUVihC1DBqz4rd0vxLFQ5vDNmw18NJ53CMMQeB0+ZuSLhCWSnTzlj1ycIjVYMM3sVK5zoCmp3KEbCrh4j2MRaJDPR4nbp25nAGezSW3EKq1AdNpSrc8BCJ1mh9aNy1dduGEKJnRFbwxwF3UE2tGdphu36o/EMb0STaoLIbCpH4Q= 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 1589371145934781.5332982843303; Wed, 13 May 2020 04:59:05 -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-328-6bMLJhI9Ple8gWHmuJzOdA-1; Wed, 13 May 2020 07:59:02 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6DC1C8018AC; Wed, 13 May 2020 11:58:56 +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 493FF7D94C; Wed, 13 May 2020 11:58:56 +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 1A4E54E9FF; Wed, 13 May 2020 11:58:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwqAs016290 for ; Wed, 13 May 2020 07:58:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id 44A3F2166B27; Wed, 13 May 2020 11:58:52 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3F8A62156A49 for ; Wed, 13 May 2020 11:58:50 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 41A6A1019CB0 for ; Wed, 13 May 2020 11:58:50 +0000 (UTC) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-409-Wf7nJQfEO2i_2Yy6wIzfZg-1; Wed, 13 May 2020 07:58:46 -0400 Received: by mail-wr1-f41.google.com with SMTP id v12so20500302wrp.12 for ; Wed, 13 May 2020 04:58:46 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371144; 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=Ym7tWbQOX55Z1dXVa3Sv/gKEIN9S4jnpP+vEGSBdAC4=; b=JZDisYHFahr3BfhAgjtPCfShShWJ0D6ocPpP01PyIue6asCaw7Oe8Bdz8ud8O7GJR6iKdl zATLdbYrKUmu+jCj/w5g68ZzRfgfKE0a4WB2Wkvb+VMsVbav0TxhyPMJGrOJOC2tscNuwo NF4NTEpHFcXPR8rMeiojgMoxQmJer50= X-MC-Unique: 6bMLJhI9Ple8gWHmuJzOdA-1 X-MC-Unique: Wf7nJQfEO2i_2Yy6wIzfZg-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=Ym7tWbQOX55Z1dXVa3Sv/gKEIN9S4jnpP+vEGSBdAC4=; b=XT3Gj6UvYVHs7VX4iIvp7JhUf4ODJKyJ7lKtAvD7saevKEXo+4PJZteb0gpOcN6rZa vmIpnZ7Y7Gf/1BGWFYS6OA1neXZBff/x6dg3gLaf+RVmGfAkOmX/b8N4ru8pdZAnqFPC SPQSr30txZevIg4qCAsKWsAVhQKY1gIa96f9Y505uucIjSldqb18SFFCqUrismIVVFyY /1Ps//vZYg5e9TY7Pb7Jtr0bFiaa6dgG55nsWB6ObWYn/DTabYWn60O7lZssORbyvW9n 7gLpg06smZse8txYenM57qvBR6C8H6k9+Mc4Ung+vKK+pyxe/GEeuV5EjRDuTZqj+2iz 23NQ== X-Gm-Message-State: AOAM5313iw3JGGaNb9SNEL/BNcp9Q7rvMsnZsAHXfNixG9qEIt5Pldbg 5zHQUoAb/yqsWDXShalLFjD1Tnt8 X-Google-Smtp-Source: ABdhPJzqe0zQdhjfcIipj+yG/ddZKyFn9sHD6KHoRCmB6PXKLChPXqROHs38xhUikYg8e3n3F/6ENQ== X-Received: by 2002:a5d:490e:: with SMTP id x14mr7327545wrq.375.1589371125221; Wed, 13 May 2020 04:58:45 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 28/40] datatypes: convert virStream to GObject Date: Wed, 13 May 2020 13:57:12 +0200 Message-Id: <20200513115724.157687-29-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 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/conf/virchrdev.c | 4 ++-- src/datatypes.c | 32 +++++++++++++++++++++-------- src/datatypes.h | 14 +++++++------ src/libvirt-stream.c | 7 +++---- src/libvirt_private.syms | 2 +- src/libxl/libxl_migration.c | 3 +-- src/qemu/qemu_migration.c | 6 ++---- src/remote/remote_daemon_dispatch.c | 4 ++-- src/remote/remote_daemon_stream.c | 2 +- src/remote/remote_driver.c | 2 +- src/rpc/gendispatch.pl | 3 ++- src/util/virfdstream.c | 4 ++-- 12 files changed, 48 insertions(+), 35 deletions(-) diff --git a/src/conf/virchrdev.c b/src/conf/virchrdev.c index 800e82869e..8a60ac4dad 100644 --- a/src/conf/virchrdev.c +++ b/src/conf/virchrdev.c @@ -205,7 +205,7 @@ static void virChrdevHashEntryFree(void *data) return; =20 /* free stream reference */ - virObjectUnref(ent->st); + g_clear_object(&ent->st); =20 /* delete lock file */ virChrdevLockFileRemove(ent->dev); @@ -435,7 +435,7 @@ int virChrdevOpen(virChrdevsPtr devs, if (added) virHashRemoveEntry(devs->hash, path); else - virObjectUnref(st); + g_clear_object(&st); =20 if (cbdata) VIR_FREE(cbdata->path); diff --git a/src/datatypes.c b/src/datatypes.c index b98db8721f..1c8eff9685 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -36,12 +36,10 @@ VIR_LOG_INIT("datatypes"); virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; virClassPtr virDomainClass; -virClassPtr virStreamClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); static void virDomainDispose(void *obj); -static void virStreamDispose(void *obj); =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); static void virDomainCheckpointFinalize(GObject *obj); @@ -219,6 +217,22 @@ vir_storage_vol_class_init(virStorageVolClass *klass) obj->finalize =3D virStorageVolFinalize; } =20 +G_DEFINE_TYPE(virStream, vir_stream, G_TYPE_OBJECT); +static void virStreamFinalize(GObject *obj); + +static void +vir_stream_init(virStream *strm G_GNUC_UNUSED) +{ +} + +static void +vir_stream_class_init(virStreamClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virStreamFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -271,7 +285,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virStream); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -930,7 +943,7 @@ virSecretFinalize(GObject *obj) * @conn: the hypervisor connection * * Allocates a new stream object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the stream object, or NULL on error. */ @@ -942,8 +955,7 @@ virGetStream(virConnectPtr conn) if (virDataTypesInitialize() < 0) return NULL; =20 - if (!(ret =3D virObjectNew(virStreamClass))) - return NULL; + ret =3D VIR_STREAM(g_object_new(VIR_TYPE_STREAM, NULL)); =20 ret->conn =3D virObjectRef(conn); =20 @@ -951,7 +963,7 @@ virGetStream(virConnectPtr conn) } =20 /** - * virStreamDispose: + * virStreamFinalize: * @obj: the stream to release * * Unconditionally release all memory associated with a stream. @@ -961,14 +973,16 @@ virGetStream(virConnectPtr conn) * which may also be released if its ref count hits zero. */ static void -virStreamDispose(void *obj) +virStreamFinalize(GObject *obj) { - virStreamPtr st =3D obj; + virStreamPtr st =3D VIR_STREAM(obj); VIR_DEBUG("release dev %p", st); =20 if (st->ff) st->ff(st->privateData); virObjectUnref(st->conn); + + G_OBJECT_CLASS(vir_stream_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index 2f97268691..e96654cac1 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -32,7 +32,6 @@ =20 extern virClassPtr virConnectClass; extern virClassPtr virDomainClass; -extern virClassPtr virStreamClass; =20 #define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() G_DECLARE_FINAL_TYPE(virDomainCheckpoint, @@ -79,6 +78,9 @@ G_DECLARE_FINAL_TYPE(virStoragePool, vir_storage_pool, VI= R, STORAGE_POOL, GObjec #define VIR_TYPE_STORAGE_VOL vir_storage_vol_get_type() G_DECLARE_FINAL_TYPE(virStorageVol, vir_storage_vol, VIR, STORAGE_VOL, GOb= ject); =20 +#define VIR_TYPE_STREAM vir_stream_get_type() +G_DECLARE_FINAL_TYPE(virStream, vir_stream, VIR, STREAM, GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -307,8 +309,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckStreamReturn(obj, retval) \ do { \ - virStreamPtr _st =3D (obj); \ - if (!virObjectIsClass(_st, virStreamClass) || \ + virStreamPtr _st =3D VIR_STREAM(obj); \ + if (_st =3D=3D NULL || \ !virObjectIsClass(_st->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STREAMS, \ VIR_ERR_INVALID_STREAM, \ @@ -320,8 +322,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); } while (0) #define virCheckStreamGoto(obj, label) \ do { \ - virStreamPtr _st =3D (obj); \ - if (!virObjectIsClass(_st, virStreamClass) || \ + virStreamPtr _st =3D VIR_STREAM(obj); \ + if (_st =3D=3D NULL || \ !virObjectIsClass(_st->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_STREAMS, \ VIR_ERR_INVALID_STREAM, \ @@ -763,7 +765,7 @@ typedef int (*virStreamFinishFunc)(virStreamPtr, void *= opaque); * Internal structure associated with an input stream */ struct _virStream { - virObject parent; + GObject parent; virConnectPtr conn; unsigned int flags; =20 diff --git a/src/libvirt-stream.c b/src/libvirt-stream.c index 41b9cc1445..d1e2fde3b4 100644 --- a/src/libvirt-stream.c +++ b/src/libvirt-stream.c @@ -85,14 +85,13 @@ virStreamNew(virConnectPtr conn, int virStreamRef(virStreamPtr stream) { - VIR_DEBUG("stream=3D%p refs=3D%d", stream, - stream ? stream->parent.u.s.refs : 0); + VIR_DEBUG("stream=3D%p", stream); =20 virResetLastError(); =20 virCheckStreamReturn(stream, -1); =20 - virObjectRef(stream); + g_object_ref(stream); return 0; } =20 @@ -1265,6 +1264,6 @@ virStreamFree(virStreamPtr stream) =20 /* XXX Enforce shutdown before free'ing resources ? */ =20 - virObjectUnref(stream); + g_object_unref(stream); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 7a1e7b60dc..fc3fe83b14 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1367,6 +1367,7 @@ vir_nw_filter_get_type; vir_secret_get_type; vir_storage_pool_get_type; vir_storage_vol_get_type; +vir_stream_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1389,7 +1390,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virNewConnectCloseCallbackData; -virStreamClass; =20 =20 # driver.h diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index defdda5ed6..50804ca8b8 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -999,7 +999,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivatePtr driver, virErrorPtr orig_err =3D NULL; int ret =3D -1; /* For tunnel migration */ - virStreamPtr st =3D NULL; + g_autoptr(virStream) st =3D NULL; struct libxlTunnelControl *tc =3D NULL; =20 if (dname && @@ -1110,7 +1110,6 @@ libxlDoMigrateSrcP2P(libxlDriverPrivatePtr driver, cleanup: if (flags & VIR_MIGRATE_TUNNELLED) { libxlMigrationSrcStopTunnel(tc); - virObjectUnref(st); } =20 if (ddomain) { diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index f1ad2806e8..1f5afbe0a4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3998,7 +3998,7 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, int cookielen =3D 0, ret; virErrorPtr orig_err =3D NULL; bool cancelled; - virStreamPtr st =3D NULL; + g_autoptr(virStream) st =3D NULL; unsigned long destflags; =20 VIR_DEBUG("driver=3D%p, sconn=3D%p, dconn=3D%p, vm=3D%p, dconnuri=3D%s= , " @@ -4107,7 +4107,6 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, ret =3D -1; } =20 - virObjectUnref(st); =20 virErrorRestore(&orig_err); VIR_FREE(uri_out); @@ -4151,7 +4150,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr= iver, int ret =3D -1; virErrorPtr orig_err =3D NULL; bool cancelled =3D true; - virStreamPtr st =3D NULL; + g_autoptr(virStream) st =3D NULL; unsigned long destflags; virTypedParameterPtr params =3D NULL; int nparams =3D 0; @@ -4444,7 +4443,6 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr= iver, ret =3D -1; } =20 - virObjectUnref(st); =20 virErrorRestore(&orig_err); VIR_FREE(uri_out); diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 427cede17e..70c1dd3cbb 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -5641,7 +5641,7 @@ remoteDispatchDomainMigratePrepareTunnel3Params(virNe= tServerPtr server G_GNUC_UN char *cookieout =3D NULL; int cookieoutlen =3D 0; int rv =3D -1; - virStreamPtr st =3D NULL; + g_autoptr(virStream) st =3D NULL; daemonClientStreamPtr stream =3D NULL; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -5688,7 +5688,7 @@ remoteDispatchDomainMigratePrepareTunnel3Params(virNe= tServerPtr server G_GNUC_UN virStreamAbort(st); daemonFreeClientStream(client, stream); } else { - virObjectUnref(st); + g_clear_object(&st); } } return rv; diff --git a/src/remote/remote_daemon_stream.c b/src/remote/remote_daemon_s= tream.c index 62bc9e0f5b..6e1dba3bc0 100644 --- a/src/remote/remote_daemon_stream.c +++ b/src/remote/remote_daemon_stream.c @@ -419,7 +419,7 @@ int daemonFreeClientStream(virNetServerClientPtr client, msg =3D tmp; } =20 - virObjectUnref(stream->st); + g_clear_object(&stream->st); VIR_FREE(stream); =20 return ret; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index c108b56c34..b9337967af 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -5823,7 +5823,7 @@ static void remoteStreamCallbackFree(void *opaque) if (!cbdata->cb && cbdata->ff) (cbdata->ff)(cbdata->opaque); =20 - virObjectUnref(cbdata->st); + g_clear_object(&cbdata->st); VIR_FREE(opaque); } =20 diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 902ff091a5..29b3feb17c 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -207,6 +207,7 @@ my %gobject_impl =3D ( virSecret =3D> 1, virStoragePool =3D> 1, virStorageVol =3D> 1, + virStream =3D> 1, ); =20 sub use_gobject { @@ -1068,7 +1069,7 @@ elsif ($mode eq "server") { push(@free_list_on_error, " virStreamAbort(st);"); push(@free_list_on_error, " daemonFreeClientStream(client, = stream);"); push(@free_list_on_error, "} else {"); - push(@free_list_on_error, " virObjectUnref(st);"); + push(@free_list_on_error, " g_clear_object(&st);"); push(@free_list_on_error, "}"); } =20 diff --git a/src/util/virfdstream.c b/src/util/virfdstream.c index 111e451f8c..e6271b860c 100644 --- a/src/util/virfdstream.c +++ b/src/util/virfdstream.c @@ -407,7 +407,7 @@ virFDStreamThreadDataFree(virFDStreamThreadDataPtr data) if (!data) return; =20 - virObjectUnref(data->st); + g_clear_object(&data->st); VIR_FREE(data->fdinname); VIR_FREE(data->fdoutname); VIR_FREE(data); @@ -1282,7 +1282,7 @@ virFDStreamOpenFileInternal(virStreamPtr st, if (VIR_ALLOC(threadData) < 0) goto error; =20 - threadData->st =3D virObjectRef(st); + threadData->st =3D g_object_ref(st); threadData->length =3D length; threadData->sparse =3D sparse; =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371150; cv=none; d=zohomail.com; s=zohoarc; b=J+d9tEmsoK8o4kasqB+k2DZsXYIfSXHdfc51SjXR6sx2turhkGXOsI7n0wwkwgTcst+BqBcmC+fNWjYNJ6zemR9RqXCbj3CZXKcX1PCrgMymksMY7/+3NTcK7FvYBbRZSJxFKBuL9jeTm658Yn6L8aQKwJXvZLZh0r6/wetBGZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371150; 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=7qtW4+vNdMmxPlMRM1jW5xUmR+V72PRXVjoGgZETYJk=; b=OBzb2cyZ0Y/6jw+7TSUcEow8a0YBCxG/20a3KA4Q6awPp/sOeBI4vvna+UHcll6S125tC6lXREN6sSEMEUZkYPfnvmRD3NSrNOJBEtOX4KIMI5LESeKO1ZtEOtSmrjDyeyTLCKLdg5aIpJvMuR1yYoipygIYGUM4cVm2bMzX9sQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371150462726.9450406393111; Wed, 13 May 2020 04:59:10 -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-98-GVzvG5yDNSakNUjrbufj5A-1; Wed, 13 May 2020 07:59:06 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BB02384638F; Wed, 13 May 2020 11:58:59 +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 9ACB15C1D3; Wed, 13 May 2020 11:58:59 +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 6456B1805319; Wed, 13 May 2020 11:58:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwtHI016319 for ; Wed, 13 May 2020 07:58:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7434B110EB4; Wed, 13 May 2020 11:58:55 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6C6DB5EDD7 for ; Wed, 13 May 2020 11:58:52 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5F17C1019CAF for ; Wed, 13 May 2020 11:58:52 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-97-uOZ59J2aM9WDzZ_ZQs4GWQ-1; Wed, 13 May 2020 07:58:50 -0400 Received: by mail-wr1-f65.google.com with SMTP id w7so20551908wre.13 for ; Wed, 13 May 2020 04:58:49 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371148; 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=7qtW4+vNdMmxPlMRM1jW5xUmR+V72PRXVjoGgZETYJk=; b=FpzQwbhp3npzd5B1iDLm4neAHIEhJT7uSqi/MZ8W1IxukEhKSFtp9Bs6Ss59m8ud3kjP9C 1l7uYtfX+tiBKiGFHI2k0i3/dma6CnM6y9r5lqbDMl7SC2+S5yTHNVMjIggKpXWlnOiy4v MW4pZI6PcJmHcyIOo8dVX85F6b8tOAw= X-MC-Unique: GVzvG5yDNSakNUjrbufj5A-1 X-MC-Unique: uOZ59J2aM9WDzZ_ZQs4GWQ-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=7qtW4+vNdMmxPlMRM1jW5xUmR+V72PRXVjoGgZETYJk=; b=CNXgJ6AKvBavsaaqnDYsGeWbHIr6IZhJ+1hyTvIdJgGWeYjfcLdK/+OeBZSsbPl9cx AzvpqHBFQGjh+gYe/dqtKrEpJIppHDq3PPwmVzJXp/2XMhwldvWtLx5bHCoyDJ+xO+Jn d8Mr1/X4HzPWg728907MgcsgI1/yq2AA383fLXYfLvATK7qJZC3jdzIr9YVpsqVvtchb xK0E/9X9Sir2a9mb+tWKNfkVx/FlSJ2Ofn0T5YqGA3NwW/8AlFxG60zx7FC9WD1bO4ej b+BUL7PNwVmcKg1PlPdFnyK+G5iCUU1U5aL0ff0/6JwDDCYFAi09OaKP3R7x6gngYyjA OEvw== X-Gm-Message-State: AGi0PuZZf6SN6/TnmnKYPCjLLse+9Z6yc4vtcP9XxOPg5z+nC2oU8jdd du6164am2tuMAjr37ZHC4wn0S/88 X-Google-Smtp-Source: APiQypIro2xhFHlWHNpfRfWbjhWJu50vRvWSPpr9MosZOFk13jbhmt39MY250AbT1XWSKVr266Wnxg== X-Received: by 2002:a05:6000:1ca:: with SMTP id t10mr30462917wrx.230.1589371126959; Wed, 13 May 2020 04:58:46 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 29/40] datatypes: convert virDomain to GObject Date: Wed, 13 May 2020 13:57:13 +0200 Message-Id: <20200513115724.157687-30-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.16 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/conf/domain_event.c | 58 ++++++------ src/datatypes.c | 50 ++++++---- src/datatypes.h | 20 ++-- src/esx/esx_driver.c | 7 +- src/hyperv/hyperv_driver.c | 8 +- src/libvirt-domain.c | 6 +- src/libvirt_private.syms | 2 +- src/libxl/libxl_migration.c | 3 +- src/locking/sanlock_helper.c | 5 +- src/qemu/qemu_driver.c | 6 +- src/qemu/qemu_migration.c | 6 +- src/remote/remote_daemon_dispatch.c | 139 +++++++++------------------- src/remote/remote_driver.c | 100 ++++++-------------- src/rpc/gendispatch.pl | 6 +- src/vbox/vbox_common.c | 11 +-- src/vz/vz_driver.c | 5 +- 16 files changed, 161 insertions(+), 271 deletions(-) diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c index 33fbf10406..d1a4953686 100644 --- a/src/conf/domain_event.c +++ b/src/conf/domain_event.c @@ -1625,8 +1625,8 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, virConnectObjectEventGenericCallback cb, void *cbopaque) { - virDomainPtr dom =3D virGetDomain(conn, event->meta.name, - event->meta.uuid, event->meta.id); + g_autoptr(virDomain) dom =3D virGetDomain(conn, event->meta.name, + event->meta.uuid, event->meta.= id); =20 if (!dom) return; @@ -1641,13 +1641,13 @@ virDomainEventDispatchDefaultFunc(virConnectPtr con= n, lifecycleEvent->type, lifecycleEvent->detail, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_REBOOT: (cb)(conn, dom, cbopaque); - goto cleanup; + return; =20 case VIR_DOMAIN_EVENT_ID_RTC_CHANGE: { @@ -1657,7 +1657,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventRTCChangeCallback)cb)(conn, dom, rtcChangeEvent->o= ffset, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_WATCHDOG: @@ -1668,7 +1668,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventWatchdogCallback)cb)(conn, dom, watchdogEvent->act= ion, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_IO_ERROR: @@ -1681,7 +1681,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ioErrorEvent->devAl= ias, ioErrorEvent->actio= n, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON: @@ -1695,7 +1695,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ioErrorEvent-= >action, ioErrorEvent-= >reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_GRAPHICS: @@ -1710,13 +1710,13 @@ virDomainEventDispatchDefaultFunc(virConnectPtr con= n, graphicsEvent->aut= hScheme, graphicsEvent->sub= ject, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_CONTROL_ERROR: (cb)(conn, dom, cbopaque); - goto cleanup; + return; =20 case VIR_DOMAIN_EVENT_ID_BLOCK_JOB: case VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2: @@ -1729,7 +1729,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, blockJobEvent->typ= e, blockJobEvent->sta= tus, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_DISK_CHANGE: @@ -1743,7 +1743,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, diskChangeEvent-= >devAlias, diskChangeEvent-= >reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_TRAY_CHANGE: @@ -1755,7 +1755,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, trayChangeEvent-= >devAlias, trayChangeEvent-= >reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_PMWAKEUP: @@ -1765,7 +1765,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventPMWakeupCallback)cb)(conn, dom, pmEvent->reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_PMSUSPEND: @@ -1775,7 +1775,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventPMSuspendCallback)cb)(conn, dom, pmEvent->reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE: @@ -1786,7 +1786,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventBalloonChangeCallback)cb)(conn, dom, balloonChange= Event->actual, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK: @@ -1796,7 +1796,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventPMSuspendDiskCallback)cb)(conn, dom, pmEvent->reas= on, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED: @@ -1807,7 +1807,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventDeviceRemovedCallback)cb)(conn, dom, deviceRemoved= Event->devAlias, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_TUNABLE: @@ -1818,7 +1818,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, tunableEvent->param= s, tunableEvent->npara= ms, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE: @@ -1829,7 +1829,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, agentLifecyc= leEvent->state, agentLifecyc= leEvent->reason, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_DEVICE_ADDED: @@ -1840,7 +1840,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventDeviceAddedCallback)cb)(conn, dom, deviceAddedEven= t->devAlias, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION: @@ -1851,7 +1851,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventMigrationIterationCallback)cb)(conn, do= m, ev->iter= ation, cbopaque= ); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_JOB_COMPLETED: @@ -1863,7 +1863,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ev->params, ev->nparams, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED: @@ -1874,7 +1874,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, ((virConnectDomainEventDeviceRemovalFailedCallback)cb)(conn, d= om, deviceR= emovalFailedEvent->devAlias, cbopaqu= e); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_METADATA_CHANGE: @@ -1886,7 +1886,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, metadataChan= geEvent->type, metadataChan= geEvent->nsuri, cbopaque); - goto cleanup; + return; } =20 case VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD: @@ -1900,16 +1900,13 @@ virDomainEventDispatchDefaultFunc(virConnectPtr con= n, blockThresho= ldEvent->threshold, blockThresho= ldEvent->excess, cbopaque); - goto cleanup; + return; } case VIR_DOMAIN_EVENT_ID_LAST: break; } =20 VIR_WARN("Unexpected event ID %d", event->eventID); - - cleanup: - virObjectUnref(dom); } =20 =20 @@ -1963,7 +1960,7 @@ virDomainQemuMonitorEventDispatchFunc(virConnectPtr c= onn, virConnectObjectEventGenericCallback= cb, void *cbopaque) { - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virDomainQemuMonitorEventPtr qemuMonitorEvent; virDomainQemuMonitorEventData *data =3D cbopaque; =20 @@ -1978,7 +1975,6 @@ virDomainQemuMonitorEventDispatchFunc(virConnectPtr c= onn, qemuMonitorEvent->micro= s, qemuMonitorEvent->detai= ls, data->opaque); - virObjectUnref(dom); } =20 =20 diff --git a/src/datatypes.c b/src/datatypes.c index 1c8eff9685..0af5c326a1 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -35,11 +35,25 @@ VIR_LOG_INIT("datatypes"); =20 virClassPtr virConnectClass; virClassPtr virConnectCloseCallbackDataClass; -virClassPtr virDomainClass; =20 static void virConnectDispose(void *obj); static void virConnectCloseCallbackDataDispose(void *obj); -static void virDomainDispose(void *obj); + +G_DEFINE_TYPE(virDomain, vir_domain, G_TYPE_OBJECT); +static void virDomainFinalize(GObject *obj); + +static void +vir_domain_init(virDomain *dom G_GNUC_UNUSED) +{ +} + +static void +vir_domain_class_init(virDomainClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virDomainFinalize; +} =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); static void virDomainCheckpointFinalize(GObject *obj); @@ -284,7 +298,6 @@ virDataTypesOnceInit(void) =20 DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); - DECLARE_CLASS(virDomain); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -449,7 +462,7 @@ virConnectCloseCallbackDataGetCallback(virConnectCloseC= allbackDataPtr closeData) * @id: domain ID * * Allocates a new domain object. When the object is no longer needed, - * virObjectUnref() must be called in order to not leak data. + * g_object_unref() must be called in order to not leak data. * * Returns a pointer to the domain object, or NULL on error. */ @@ -459,17 +472,16 @@ virGetDomain(virConnectPtr conn, const unsigned char *uuid, int id) { - virDomainPtr ret =3D NULL; + g_autoptr(virDomain) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(name, error); - virCheckNonNullArgGoto(uuid, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(name, NULL); + virCheckNonNullArgReturn(uuid, NULL); =20 - if (!(ret =3D virObjectNew(virDomainClass))) - goto error; + ret =3D VIR_DOMAIN(g_object_new(VIR_TYPE_DOMAIN, NULL)); =20 ret->name =3D g_strdup(name); =20 @@ -477,15 +489,11 @@ virGetDomain(virConnectPtr conn, ret->id =3D id; memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 /** - * virDomainDispose: + * virDomainFinalize: * @obj: the domain to release * * Unconditionally release all memory associated with a domain. @@ -495,9 +503,9 @@ virGetDomain(virConnectPtr conn, * which may also be released if its ref count hits zero. */ static void -virDomainDispose(void *obj) +virDomainFinalize(GObject *obj) { - virDomainPtr domain =3D obj; + virDomainPtr domain =3D VIR_DOMAIN(obj); char uuidstr[VIR_UUID_STRING_BUFLEN]; =20 virUUIDFormat(domain->uuid, uuidstr); @@ -505,6 +513,8 @@ virDomainDispose(void *obj) =20 VIR_FREE(domain->name); virObjectUnref(domain->conn); + + G_OBJECT_CLASS(vir_domain_parent_class)->finalize(obj); } =20 =20 @@ -1133,7 +1143,7 @@ virGetDomainCheckpoint(virDomainPtr domain, ret =3D VIR_DOMAIN_CHECKPOINT(g_object_new(VIR_TYPE_DOMAIN_CHECKPOINT,= NULL)); ret->name =3D g_strdup(name); =20 - ret->domain =3D virObjectRef(domain); + ret->domain =3D g_object_ref(domain); =20 return g_steal_pointer(&ret); } @@ -1186,7 +1196,7 @@ virGetDomainSnapshot(virDomainPtr domain, const char = *name) ret =3D VIR_DOMAIN_SNAPSHOT(g_object_new(VIR_TYPE_DOMAIN_SNAPSHOT, NUL= L)); ret->name =3D g_strdup(name); =20 - ret->domain =3D virObjectRef(domain); + ret->domain =3D g_object_ref(domain); =20 return g_steal_pointer(&ret); } diff --git a/src/datatypes.h b/src/datatypes.h index e96654cac1..f647096938 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -31,7 +31,9 @@ #include =20 extern virClassPtr virConnectClass; -extern virClassPtr virDomainClass; + +#define VIR_TYPE_DOMAIN vir_domain_get_type() +G_DECLARE_FINAL_TYPE(virDomain, vir_domain, VIR, DOMAIN, GObject); =20 #define VIR_TYPE_DOMAIN_CHECKPOINT vir_domain_checkpoint_get_type() G_DECLARE_FINAL_TYPE(virDomainCheckpoint, @@ -110,8 +112,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckDomainReturn(obj, retval) \ do { \ - virDomainPtr _dom =3D (obj); \ - if (!virObjectIsClass(_dom, virDomainClass) || \ + virDomainPtr _dom =3D VIR_DOMAIN(obj); \ + if (_dom =3D=3D NULL || \ !virObjectIsClass(_dom->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -122,8 +124,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); } while (0) #define virCheckDomainGoto(obj, label) \ do { \ - virDomainPtr _dom =3D (obj); \ - if (!virObjectIsClass(_dom, virDomainClass) || \ + virDomainPtr _dom =3D VIR_DOMAIN(obj); \ + if (_dom =3D=3D NULL || \ !virObjectIsClass(_dom->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOM, VIR_ERR_INVALID_DOMAIN, \ __FILE__, __FUNCTION__, __LINE__, \ @@ -365,7 +367,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); do { \ virDomainCheckpointPtr _check =3D VIR_DOMAIN_CHECKPOINT(obj); \ if (_check =3D=3D NULL || \ - !virObjectIsClass(_check->domain, virDomainClass) || \ + !VIR_IS_DOMAIN(_check->domain) || \ !virObjectIsClass(_check->domain->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOMAIN_CHECKPOINT, \ VIR_ERR_INVALID_DOMAIN_CHECKPOINT, \ @@ -380,7 +382,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); do { \ virDomainSnapshotPtr _snap =3D (obj); \ if (_snap =3D=3D NULL || \ - !virObjectIsClass(_snap->domain, virDomainClass) || \ + !VIR_IS_DOMAIN(_snap->domain) || \ !virObjectIsClass(_snap->domain->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_DOMAIN_SNAPSHOT, \ VIR_ERR_INVALID_DOMAIN_SNAPSHOT, \ @@ -427,7 +429,7 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); char _uuidstr[VIR_UUID_STRING_BUFLEN]; \ const char *_domname =3D NULL; \ \ - if (!virObjectIsClass(dom, virDomainClass)) { \ + if (!VIR_IS_DOMAIN(dom)) { \ memset(_uuidstr, 0, sizeof(_uuidstr)); \ } else { \ virUUIDFormat((dom)->uuid, _uuidstr); \ @@ -641,7 +643,7 @@ struct _virAdmClient { * Internal structure associated to a domain */ struct _virDomain { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *name; /* the domain external name */ int id; /* the domain ID */ diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 42f6ab9392..fc3a58c3de 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -5006,12 +5006,7 @@ esxConnectListAllDomains(virConnectPtr conn, ret =3D count; =20 cleanup: - if (doms) { - for (id =3D 0; id < count; id++) - virObjectUnref(doms[id]); - - VIR_FREE(doms); - } + virGObjectListFreeCount(doms, count); =20 VIR_FREE(name); esxVI_AutoStartDefaults_Free(&autoStartDefaults); diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 4677a25ff8..a0eb14a947 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -1206,7 +1206,6 @@ hypervConnectListAllDomains(virConnectPtr conn, virDomainPtr *doms =3D NULL; int count =3D 0; int ret =3D -1; - size_t i; =20 virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1); =20 @@ -1308,12 +1307,7 @@ hypervConnectListAllDomains(virConnectPtr conn, ret =3D count; =20 cleanup: - if (doms) { - for (i =3D 0; i < count; ++i) - virObjectUnref(doms[i]); - - VIR_FREE(doms); - } + virGObjectListFreeCount(doms, count); =20 hypervFreeObject(priv, (hypervObject *)computerSystemList); =20 diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index a12809c2d5..6f889f0c3b 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -565,7 +565,7 @@ virDomainFree(virDomainPtr domain) =20 virCheckDomainReturn(domain, -1); =20 - virObjectUnref(domain); + g_clear_object(&domain); return 0; } =20 @@ -590,13 +590,13 @@ virDomainFree(virDomainPtr domain) int virDomainRef(virDomainPtr domain) { - VIR_DOMAIN_DEBUG(domain, "refs=3D%d", domain ? domain->parent.u.s.refs= : 0); + VIR_DOMAIN_DEBUG(domain); =20 virResetLastError(); =20 virCheckDomainReturn(domain, -1); =20 - virObjectRef(domain); + g_object_ref(domain); return 0; } =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fc3fe83b14..14dace4628 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1357,6 +1357,7 @@ virCPUx86FeatureFilterSelectMSR; =20 # datatypes.h vir_domain_checkpoint_get_type; +vir_domain_get_type; vir_domain_snapshot_get_type; vir_interface_get_type; vir_network_get_type; @@ -1374,7 +1375,6 @@ virConnectCloseCallbackDataClass; virConnectCloseCallbackDataGetCallback; virConnectCloseCallbackDataRegister; virConnectCloseCallbackDataUnregister; -virDomainClass; virGetConnect; virGetDomain; virGetDomainCheckpoint; diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index 50804ca8b8..11d3070935 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -985,7 +985,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivatePtr driver, const char *uri, unsigned int flags) { - virDomainPtr ddomain =3D NULL; + g_autoptr(virDomain) ddomain =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int maxparams =3D 0; @@ -1113,7 +1113,6 @@ libxlDoMigrateSrcP2P(libxlDriverPrivatePtr driver, } =20 if (ddomain) { - virObjectUnref(ddomain); ret =3D 0; } else { ret =3D -1; diff --git a/src/locking/sanlock_helper.c b/src/locking/sanlock_helper.c index 50deccfd67..7a8480932f 100644 --- a/src/locking/sanlock_helper.c +++ b/src/locking/sanlock_helper.c @@ -5,7 +5,7 @@ #include "viralloc.h" #include "domain_conf.h" #include "virgettext.h" - +#include "datatypes.h" =20 static int getArgs(int argc, @@ -52,7 +52,7 @@ main(int argc, char **argv) virDomainLockFailureAction action; char *xml =3D NULL; virConnectPtr conn =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int ret =3D EXIT_FAILURE; =20 int authTypes[] =3D { @@ -99,7 +99,6 @@ main(int argc, char **argv) } =20 cleanup: - virObjectUnref(dom); if (conn) virConnectClose(conn); VIR_FREE(xml); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7a9fdfa453..e6874491e6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1089,11 +1089,7 @@ qemuStateStop(void) ret =3D -1; =20 cleanup: - if (domains) { - for (i =3D 0; i < numDomains; i++) - virObjectUnref(domains[i]); - VIR_FREE(domains); - } + virGObjectListFreeCount(domains, numDomains); =20 return ret; } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1f5afbe0a4..26e8d067ea 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3991,7 +3991,7 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, unsigned long resource, qemuMigrationParamsPtr migParams) { - virDomainPtr ddomain =3D NULL; + g_autoptr(virDomain) ddomain =3D NULL; char *uri_out =3D NULL; char *cookie =3D NULL; char *dom_xml =3D NULL; @@ -4101,7 +4101,6 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, =20 cleanup: if (ddomain) { - virObjectUnref(ddomain); ret =3D 0; } else { ret =3D -1; @@ -4140,7 +4139,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr= iver, bool useParams, unsigned long flags) { - virDomainPtr ddomain =3D NULL; + g_autoptr(virDomain) ddomain =3D NULL; char *uri_out =3D NULL; char *cookiein =3D NULL; char *cookieout =3D NULL; @@ -4437,7 +4436,6 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr= iver, =20 cleanup: if (ddomain) { - virObjectUnref(ddomain); ret =3D 0; } else { ret =3D -1; diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 70c1dd3cbb..6b0c01bdcb 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -2264,7 +2264,7 @@ remoteDispatchDomainGetSchedulerType(virNetServerPtr = server G_GNUC_UNUSED, remote_domain_get_scheduler_type_args= *args, remote_domain_get_scheduler_type_ret = *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *type; int nparams; int rv =3D -1; @@ -2286,7 +2286,6 @@ remoteDispatchDomainGetSchedulerType(virNetServerPtr = server G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -2298,7 +2297,7 @@ remoteDispatchDomainGetSchedulerParameters(virNetServ= erPtr server G_GNUC_UNUSED, remote_domain_get_scheduler_par= ameters_args *args, remote_domain_get_scheduler_par= ameters_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int rv =3D -1; @@ -2334,7 +2333,6 @@ remoteDispatchDomainGetSchedulerParameters(virNetServ= erPtr server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -2346,7 +2344,7 @@ remoteDispatchDomainGetSchedulerParametersFlags(virNe= tServerPtr server G_GNUC_UN remote_domain_get_schedule= r_parameters_flags_args *args, remote_domain_get_schedule= r_parameters_flags_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int rv =3D -1; @@ -2383,7 +2381,6 @@ remoteDispatchDomainGetSchedulerParametersFlags(virNe= tServerPtr server G_GNUC_UN if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -2395,7 +2392,7 @@ remoteDispatchDomainMemoryStats(virNetServerPtr serve= r G_GNUC_UNUSED, remote_domain_memory_stats_args *args, remote_domain_memory_stats_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virDomainMemoryStatPtr stats =3D NULL; int nr_stats; size_t i; @@ -2437,7 +2434,6 @@ remoteDispatchDomainMemoryStats(virNetServerPtr serve= r G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); VIR_FREE(stats); return rv; } @@ -2450,7 +2446,7 @@ remoteDispatchDomainBlockPeek(virNetServerPtr server = G_GNUC_UNUSED, remote_domain_block_peek_args *args, remote_domain_block_peek_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *path; unsigned long long offset; size_t size; @@ -2489,7 +2485,6 @@ remoteDispatchDomainBlockPeek(virNetServerPtr server = G_GNUC_UNUSED, virNetMessageSaveError(rerr); VIR_FREE(ret->buffer.buffer_val); } - virObjectUnref(dom); return rv; } =20 @@ -2502,7 +2497,7 @@ remoteDispatchDomainBlockStatsFlags(virNetServerPtr s= erver G_GNUC_UNUSED, remote_domain_block_stats_flags_ret *r= et) { virTypedParameterPtr params =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; const char *path =3D args->path; int nparams =3D 0; unsigned int flags; @@ -2550,7 +2545,6 @@ remoteDispatchDomainBlockStatsFlags(virNetServerPtr s= erver G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -2562,7 +2556,7 @@ remoteDispatchDomainMemoryPeek(virNetServerPtr server= G_GNUC_UNUSED, remote_domain_memory_peek_args *args, remote_domain_memory_peek_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; unsigned long long offset; size_t size; unsigned int flags; @@ -2599,7 +2593,6 @@ remoteDispatchDomainMemoryPeek(virNetServerPtr server= G_GNUC_UNUSED, virNetMessageSaveError(rerr); VIR_FREE(ret->buffer.buffer_val); } - virObjectUnref(dom); return rv; } =20 @@ -2611,7 +2604,7 @@ remoteDispatchDomainGetSecurityLabel(virNetServerPtr = server G_GNUC_UNUSED, remote_domain_get_security_label_args= *args, remote_domain_get_security_label_ret = *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virSecurityLabelPtr seclabel =3D NULL; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -2639,7 +2632,6 @@ remoteDispatchDomainGetSecurityLabel(virNetServerPtr = server G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); VIR_FREE(seclabel); return rv; } @@ -2652,7 +2644,7 @@ remoteDispatchDomainGetSecurityLabelList(virNetServer= Ptr server G_GNUC_UNUSED, remote_domain_get_security_label_= list_args *args, remote_domain_get_security_label_= list_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virSecurityLabelPtr seclabels =3D NULL; int len, rv =3D -1; size_t i; @@ -2689,7 +2681,6 @@ remoteDispatchDomainGetSecurityLabelList(virNetServer= Ptr server G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); VIR_FREE(seclabels); return rv; } @@ -2738,7 +2729,7 @@ remoteDispatchDomainGetVcpuPinInfo(virNetServerPtr se= rver G_GNUC_UNUSED, remote_domain_get_vcpu_pin_info_args *a= rgs, remote_domain_get_vcpu_pin_info_ret *re= t) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; unsigned char *cpumaps =3D NULL; int num; int rv =3D -1; @@ -2788,7 +2779,6 @@ remoteDispatchDomainGetVcpuPinInfo(virNetServerPtr se= rver G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); VIR_FREE(cpumaps); - virObjectUnref(dom); return rv; } =20 @@ -2800,7 +2790,7 @@ remoteDispatchDomainPinEmulator(virNetServerPtr serve= r G_GNUC_UNUSED, remote_domain_pin_emulator_args *args) { int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 if (!conn) @@ -2820,7 +2810,6 @@ remoteDispatchDomainPinEmulator(virNetServerPtr serve= r G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -2833,7 +2822,7 @@ remoteDispatchDomainGetEmulatorPinInfo(virNetServerPt= r server G_GNUC_UNUSED, remote_domain_get_emulator_pin_info= _args *args, remote_domain_get_emulator_pin_info= _ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; unsigned char *cpumaps =3D NULL; int r; int rv =3D -1; @@ -2867,7 +2856,6 @@ remoteDispatchDomainGetEmulatorPinInfo(virNetServerPt= r server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); VIR_FREE(cpumaps); - virObjectUnref(dom); return rv; } =20 @@ -2879,7 +2867,7 @@ remoteDispatchDomainGetVcpus(virNetServerPtr server G= _GNUC_UNUSED, remote_domain_get_vcpus_args *args, remote_domain_get_vcpus_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virVcpuInfoPtr info =3D NULL; unsigned char *cpumaps =3D NULL; int info_len; @@ -2945,7 +2933,6 @@ remoteDispatchDomainGetVcpus(virNetServerPtr server G= _GNUC_UNUSED, } VIR_FREE(cpumaps); VIR_FREE(info); - virObjectUnref(dom); return rv; } =20 @@ -2960,7 +2947,7 @@ remoteDispatchDomainGetIOThreadInfo(virNetServerPtr s= erver G_GNUC_UNUSED, int rv =3D -1; size_t i; virDomainIOThreadInfoPtr *info =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; remote_domain_iothread_info *dst; int ninfo =3D 0; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -3010,7 +2997,6 @@ remoteDispatchDomainGetIOThreadInfo(virNetServerPtr s= erver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); if (ninfo >=3D 0) for (i =3D 0; i < ninfo; i++) virDomainIOThreadInfoFree(info[i]); @@ -3128,7 +3114,7 @@ remoteDispatchDomainGetMemoryParameters(virNetServerP= tr server G_GNUC_UNUSED, remote_domain_get_memory_parameter= s_args *args, remote_domain_get_memory_parameter= s_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; unsigned int flags; @@ -3176,7 +3162,6 @@ remoteDispatchDomainGetMemoryParameters(virNetServerP= tr server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -3188,7 +3173,7 @@ remoteDispatchDomainGetNumaParameters(virNetServerPtr= server G_GNUC_UNUSED, remote_domain_get_numa_parameters_ar= gs *args, remote_domain_get_numa_parameters_re= t *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; unsigned int flags; @@ -3236,7 +3221,6 @@ remoteDispatchDomainGetNumaParameters(virNetServerPtr= server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -3248,7 +3232,7 @@ remoteDispatchDomainGetBlkioParameters(virNetServerPt= r server G_GNUC_UNUSED, remote_domain_get_blkio_parameters_= args *args, remote_domain_get_blkio_parameters_= ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; unsigned int flags; @@ -3296,7 +3280,6 @@ remoteDispatchDomainGetBlkioParameters(virNetServerPt= r server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -3444,7 +3427,7 @@ remoteDispatchDomainGetLaunchSecurityInfo(virNetServe= rPtr server G_GNUC_UNUSED, remote_domain_get_launch_securit= y_info_args *args, remote_domain_get_launch_securit= y_info_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int rv =3D -1; @@ -3472,7 +3455,6 @@ remoteDispatchDomainGetLaunchSecurityInfo(virNetServe= rPtr server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -3484,7 +3466,7 @@ remoteDispatchDomainGetPerfEvents(virNetServerPtr ser= ver G_GNUC_UNUSED, remote_domain_get_perf_events_args *args, remote_domain_get_perf_events_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int rv =3D -1; @@ -3512,7 +3494,6 @@ remoteDispatchDomainGetPerfEvents(virNetServerPtr ser= ver G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -3524,7 +3505,7 @@ remoteDispatchDomainGetBlockJobInfo(virNetServerPtr s= erver G_GNUC_UNUSED, remote_domain_get_block_job_info_args = *args, remote_domain_get_block_job_info_ret *= ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virDomainBlockJobInfo tmp; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -3549,7 +3530,6 @@ remoteDispatchDomainGetBlockJobInfo(virNetServerPtr s= erver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -3561,7 +3541,7 @@ remoteDispatchDomainGetBlockIoTune(virNetServerPtr se= rver G_GNUC_UNUSED, remote_domain_get_block_io_tune_args *a= rgs, remote_domain_get_block_io_tune_ret *re= t) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; virTypedParameterPtr params =3D NULL; int nparams =3D 0; @@ -3609,7 +3589,6 @@ remoteDispatchDomainGetBlockIoTune(virNetServerPtr se= rver G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -4416,7 +4395,7 @@ remoteDispatchDomainGetState(virNetServerPtr server G= _GNUC_UNUSED, remote_domain_get_state_args *args, remote_domain_get_state_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -4434,7 +4413,6 @@ remoteDispatchDomainGetState(virNetServerPtr server G= _GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -4532,7 +4510,7 @@ remoteDispatchConnectDomainEventCallbackRegisterAny(v= irNetServerPtr server G_GNU daemonClientEventCallbackPtr ref; struct daemonClientPrivate *priv =3D virNetServerClientGetPrivateData(client); - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 virMutexLock(&priv->lock); @@ -4590,7 +4568,6 @@ remoteDispatchConnectDomainEventCallbackRegisterAny(v= irNetServerPtr server G_GNU remoteEventCallbackFree(callback); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -4705,7 +4682,7 @@ qemuDispatchDomainMonitorCommand(virNetServerPtr serv= er G_GNUC_UNUSED, qemu_domain_monitor_command_args *args, qemu_domain_monitor_command_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -4724,7 +4701,6 @@ qemuDispatchDomainMonitorCommand(virNetServerPtr serv= er G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -4738,7 +4714,7 @@ remoteDispatchDomainMigrateBegin3(virNetServerPtr ser= ver G_GNUC_UNUSED, remote_domain_migrate_begin3_ret *ret) { char *xml =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *dname; char *xmlin; char *cookieout =3D NULL; @@ -4772,7 +4748,6 @@ remoteDispatchDomainMigrateBegin3(virNetServerPtr ser= ver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -4838,7 +4813,7 @@ remoteDispatchDomainMigratePerform3(virNetServerPtr s= erver G_GNUC_UNUSED, remote_domain_migrate_perform3_args *a= rgs, remote_domain_migrate_perform3_ret *re= t) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *xmlin; char *dname; char *uri; @@ -4877,7 +4852,6 @@ remoteDispatchDomainMigratePerform3(virNetServerPtr s= erver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -4890,7 +4864,7 @@ remoteDispatchDomainMigrateFinish3(virNetServerPtr se= rver G_GNUC_UNUSED, remote_domain_migrate_finish3_args *arg= s, remote_domain_migrate_finish3_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *cookieout =3D NULL; int cookieoutlen =3D 0; char *uri; @@ -4927,7 +4901,6 @@ remoteDispatchDomainMigrateFinish3(virNetServerPtr se= rver G_GNUC_UNUSED, virNetMessageSaveError(rerr); VIR_FREE(cookieout); } - virObjectUnref(dom); return rv; } =20 @@ -4939,7 +4912,7 @@ remoteDispatchDomainMigrateConfirm3(virNetServerPtr s= erver G_GNUC_UNUSED, virNetMessageErrorPtr rerr, remote_domain_migrate_confirm3_args *a= rgs) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -4960,7 +4933,6 @@ remoteDispatchDomainMigrateConfirm3(virNetServerPtr s= erver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5035,7 +5007,7 @@ remoteDispatchDomainOpenGraphics(virNetServerPtr serv= er G_GNUC_UNUSED, virNetMessageErrorPtr rerr, remote_domain_open_graphics_args *args) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; int fd =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -5061,7 +5033,6 @@ remoteDispatchDomainOpenGraphics(virNetServerPtr serv= er G_GNUC_UNUSED, VIR_FORCE_CLOSE(fd); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5073,7 +5044,7 @@ remoteDispatchDomainOpenGraphicsFd(virNetServerPtr se= rver G_GNUC_UNUSED, virNetMessageErrorPtr rerr, remote_domain_open_graphics_fd_args *ar= gs) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; int fd =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -5101,7 +5072,6 @@ remoteDispatchDomainOpenGraphicsFd(virNetServerPtr se= rver G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); =20 - virObjectUnref(dom); return rv; } =20 @@ -5114,7 +5084,7 @@ remoteDispatchDomainGetInterfaceParameters(virNetServ= erPtr server G_GNUC_UNUSED, remote_domain_get_interface_par= ameters_args *args, remote_domain_get_interface_par= ameters_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; const char *device =3D args->device; int nparams =3D 0; @@ -5163,7 +5133,6 @@ remoteDispatchDomainGetInterfaceParameters(virNetServ= erPtr server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -5175,7 +5144,7 @@ remoteDispatchDomainGetCPUStats(virNetServerPtr serve= r G_GNUC_UNUSED, remote_domain_get_cpu_stats_args *args, remote_domain_get_cpu_stats_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int rv =3D -1; int percpu_len =3D 0; @@ -5232,7 +5201,6 @@ remoteDispatchDomainGetCPUStats(virNetServerPtr serve= r G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, args->ncpus * args->nparams); - virObjectUnref(dom); return rv; } =20 @@ -5245,7 +5213,7 @@ remoteDispatchDomainGetDiskErrors(virNetServerPtr ser= ver G_GNUC_UNUSED, remote_domain_get_disk_errors_ret *ret) { int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virDomainDiskErrorPtr errors =3D NULL; int len =3D 0; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -5283,7 +5251,6 @@ remoteDispatchDomainGetDiskErrors(virNetServerPtr ser= ver G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); if (errors && len > 0) { size_t i; for (i =3D 0; i < len; i++) @@ -5439,7 +5406,7 @@ lxcDispatchDomainOpenNamespace(virNetServerPtr server= G_GNUC_UNUSED, int rv =3D -1; int *fdlist =3D NULL; int ret; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; size_t i; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -5472,7 +5439,6 @@ lxcDispatchDomainOpenNamespace(virNetServerPtr server= G_GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5484,7 +5450,7 @@ remoteDispatchDomainGetJobStats(virNetServerPtr serve= r G_GNUC_UNUSED, remote_domain_get_job_stats_args *args, remote_domain_get_job_stats_ret *ret) { - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; int rv =3D -1; @@ -5513,7 +5479,6 @@ remoteDispatchDomainGetJobStats(virNetServerPtr serve= r G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); return rv; } =20 @@ -5526,7 +5491,7 @@ remoteDispatchDomainMigrateBegin3Params(virNetServerP= tr server G_GNUC_UNUSED, remote_domain_migrate_begin3_param= s_ret *ret) { char *xml =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; char *cookieout =3D NULL; @@ -5567,7 +5532,6 @@ remoteDispatchDomainMigrateBegin3Params(virNetServerP= tr server G_GNUC_UNUSED, virTypedParamsFree(params, nparams); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5705,7 +5669,7 @@ remoteDispatchDomainMigratePerform3Params(virNetServe= rPtr server G_GNUC_UNUSED, { virTypedParameterPtr params =3D NULL; int nparams =3D 0; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *cookieout =3D NULL; int cookieoutlen =3D 0; char *dconnuri; @@ -5748,7 +5712,6 @@ remoteDispatchDomainMigratePerform3Params(virNetServe= rPtr server G_GNUC_UNUSED, virTypedParamsFree(params, nparams); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5763,7 +5726,7 @@ remoteDispatchDomainMigrateFinish3Params(virNetServer= Ptr server G_GNUC_UNUSED, { virTypedParameterPtr params =3D NULL; int nparams =3D 0; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; char *cookieout =3D NULL; int cookieoutlen =3D 0; int rv =3D -1; @@ -5805,7 +5768,6 @@ remoteDispatchDomainMigrateFinish3Params(virNetServer= Ptr server G_GNUC_UNUSED, virNetMessageSaveError(rerr); VIR_FREE(cookieout); } - virObjectUnref(dom); return rv; } =20 @@ -5819,7 +5781,7 @@ remoteDispatchDomainMigrateConfirm3Params(virNetServe= rPtr server G_GNUC_UNUSED, { virTypedParameterPtr params =3D NULL; int nparams =3D 0; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -5853,7 +5815,6 @@ remoteDispatchDomainMigrateConfirm3Params(virNetServe= rPtr server G_GNUC_UNUSED, virTypedParamsFree(params, nparams); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5916,7 +5877,7 @@ remoteDispatchDomainCreateXMLWithFiles(virNetServerPt= r server G_GNUC_UNUSED, remote_domain_create_xml_with_files= _ret *ret) { int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int *files =3D NULL; unsigned int nfiles =3D 0; size_t i; @@ -5948,7 +5909,6 @@ remoteDispatchDomainCreateXMLWithFiles(virNetServerPt= r server G_GNUC_UNUSED, VIR_FREE(files); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -5961,7 +5921,7 @@ static int remoteDispatchDomainCreateWithFiles(virNet= ServerPtr server G_GNUC_UNU remote_domain_create_with_f= iles_ret *ret) { int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; int *files =3D NULL; unsigned int nfiles =3D 0; size_t i; @@ -5996,7 +5956,6 @@ static int remoteDispatchDomainCreateWithFiles(virNet= ServerPtr server G_GNUC_UNU VIR_FREE(files); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -6493,7 +6452,7 @@ qemuDispatchConnectDomainMonitorEventRegister(virNetS= erverPtr server G_GNUC_UNUS daemonClientEventCallbackPtr ref; struct daemonClientPrivate *priv =3D virNetServerClientGetPrivateData(client); - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; const char *event =3D args->event ? *args->event : NULL; virConnectPtr conn =3D remoteGetHypervisorConn(client); =20 @@ -6547,7 +6506,6 @@ qemuDispatchConnectDomainMonitorEventRegister(virNetS= erverPtr server G_GNUC_UNUS remoteEventCallbackFree(callback); if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -6606,7 +6564,7 @@ remoteDispatchDomainGetTime(virNetServerPtr server G_= GNUC_UNUSED, remote_domain_get_time_ret *ret) { int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; long long seconds; unsigned int nseconds; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -6627,7 +6585,6 @@ remoteDispatchDomainGetTime(virNetServerPtr server G_= GNUC_UNUSED, cleanup: if (rv < 0) virNetMessageSaveError(rerr); - virObjectUnref(dom); return rv; } =20 @@ -6939,7 +6896,7 @@ remoteDispatchDomainGetFSInfo(virNetServerPtr server = G_GNUC_UNUSED, int rv =3D -1; size_t i, j; virDomainFSInfoPtr *info =3D NULL; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; remote_domain_fsinfo *dst; int ninfo =3D 0; size_t ndisk; @@ -7023,7 +6980,6 @@ remoteDispatchDomainGetFSInfo(virNetServerPtr server = G_GNUC_UNUSED, VIR_FREE(ret->info.info_val); } } - virObjectUnref(dom); if (ninfo >=3D 0) for (i =3D 0; i < ninfo; i++) virDomainFSInfoFree(info[i]); @@ -7123,7 +7079,7 @@ remoteDispatchDomainInterfaceAddresses(virNetServerPt= r server G_GNUC_UNUSED, { size_t i; int rv =3D -1; - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virDomainInterfacePtr *ifaces =3D NULL; int ifaces_count =3D 0; virConnectPtr conn =3D remoteGetHypervisorConn(client); @@ -7146,8 +7102,6 @@ remoteDispatchDomainInterfaceAddresses(virNetServerPt= r server G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); =20 - virObjectUnref(dom); - if (ifaces && ifaces_count > 0) { for (i =3D 0; i < ifaces_count; i++) virDomainInterfaceFree(ifaces[i]); @@ -7419,7 +7373,7 @@ remoteDispatchDomainGetGuestInfo(virNetServerPtr serv= er G_GNUC_UNUSED, { int rv =3D -1; virConnectPtr conn =3D remoteGetHypervisorConn(client); - virDomainPtr dom =3D NULL; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; =20 @@ -7445,7 +7399,6 @@ remoteDispatchDomainGetGuestInfo(virNetServerPtr serv= er G_GNUC_UNUSED, if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); - virObjectUnref(dom); =20 return rv; } diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index b9337967af..df954dbb0e 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -4572,7 +4572,7 @@ remoteDomainBuildEventLifecycleHelper(virConnectPtr c= onn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4580,7 +4580,6 @@ remoteDomainBuildEventLifecycleHelper(virConnectPtr c= onn, return; =20 event =3D virDomainEventLifecycleNewFromDom(dom, msg->event, msg->deta= il); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -4610,7 +4609,7 @@ remoteDomainBuildEventRebootHelper(virConnectPtr conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4618,7 +4617,6 @@ remoteDomainBuildEventRebootHelper(virConnectPtr conn, return; =20 event =3D virDomainEventRebootNewFromDom(dom); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -4647,7 +4645,7 @@ remoteDomainBuildEventRTCChangeHelper(virConnectPtr c= onn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4655,7 +4653,6 @@ remoteDomainBuildEventRTCChangeHelper(virConnectPtr c= onn, return; =20 event =3D virDomainEventRTCChangeNewFromDom(dom, msg->offset); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -4684,7 +4681,7 @@ remoteDomainBuildEventWatchdogHelper(virConnectPtr co= nn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4692,7 +4689,6 @@ remoteDomainBuildEventWatchdogHelper(virConnectPtr co= nn, return; =20 event =3D virDomainEventWatchdogNewFromDom(dom, msg->action); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -4721,7 +4717,7 @@ remoteDomainBuildEventIOErrorHelper(virConnectPtr con= n, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4732,7 +4728,6 @@ remoteDomainBuildEventIOErrorHelper(virConnectPtr con= n, msg->srcPath, msg->devAlias, msg->action); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -4761,7 +4756,7 @@ remoteDomainBuildEventIOErrorReasonHelper(virConnectP= tr conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4774,8 +4769,6 @@ remoteDomainBuildEventIOErrorReasonHelper(virConnectP= tr conn, msg->action, msg->reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -4803,7 +4796,7 @@ remoteDomainBuildEventBlockJobHelper(virConnectPtr co= nn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4813,8 +4806,6 @@ remoteDomainBuildEventBlockJobHelper(virConnectPtr co= nn, event =3D virDomainEventBlockJobNewFromDom(dom, msg->path, msg->type, msg->status); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -4843,7 +4834,7 @@ remoteDomainBuildEventBlockJob2(virNetClientProgramPt= r prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; remote_domain_event_block_job_2_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4853,8 +4844,6 @@ remoteDomainBuildEventBlockJob2(virNetClientProgramPt= r prog G_GNUC_UNUSED, event =3D virDomainEventBlockJob2NewFromDom(dom, msg->dst, msg->type, msg->status); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -4864,7 +4853,7 @@ remoteDomainBuildEventGraphicsHelper(virConnectPtr co= nn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; virDomainEventGraphicsAddressPtr localAddr =3D NULL; virDomainEventGraphicsAddressPtr remoteAddr =3D NULL; @@ -4904,8 +4893,6 @@ remoteDomainBuildEventGraphicsHelper(virConnectPtr co= nn, msg->authScheme, subject); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); return; =20 @@ -4928,7 +4915,6 @@ remoteDomainBuildEventGraphicsHelper(virConnectPtr co= nn, VIR_FREE(subject->identities); VIR_FREE(subject); } - virObjectUnref(dom); return; } static void @@ -4956,7 +4942,7 @@ remoteDomainBuildEventControlErrorHelper(virConnectPt= r conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -4965,8 +4951,6 @@ remoteDomainBuildEventControlErrorHelper(virConnectPt= r conn, =20 event =3D virDomainEventControlErrorNewFromDom(dom); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -4995,7 +4979,7 @@ remoteDomainBuildEventDiskChangeHelper(virConnectPtr = conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5008,8 +4992,6 @@ remoteDomainBuildEventDiskChangeHelper(virConnectPtr = conn, msg->devAlias, msg->reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5038,7 +5020,7 @@ remoteDomainBuildEventTrayChangeHelper(virConnectPtr = conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5049,8 +5031,6 @@ remoteDomainBuildEventTrayChangeHelper(virConnectPtr = conn, msg->devAlias, msg->reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5079,7 +5059,7 @@ remoteDomainBuildEventPMWakeupHelper(virConnectPtr co= nn, int reason) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5088,8 +5068,6 @@ remoteDomainBuildEventPMWakeupHelper(virConnectPtr co= nn, =20 event =3D virDomainEventPMWakeupNewFromDom(dom, reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5119,7 +5097,7 @@ remoteDomainBuildEventPMSuspendHelper(virConnectPtr c= onn, int reason) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5128,8 +5106,6 @@ remoteDomainBuildEventPMSuspendHelper(virConnectPtr c= onn, =20 event =3D virDomainEventPMSuspendNewFromDom(dom, reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5159,7 +5135,7 @@ remoteDomainBuildEventBalloonChangeHelper(virConnectP= tr conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5167,7 +5143,6 @@ remoteDomainBuildEventBalloonChangeHelper(virConnectP= tr conn, return; =20 event =3D virDomainEventBalloonChangeNewFromDom(dom, msg->actual); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } @@ -5198,7 +5173,7 @@ remoteDomainBuildEventPMSuspendDiskHelper(virConnectP= tr conn, int reason) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5207,8 +5182,6 @@ remoteDomainBuildEventPMSuspendDiskHelper(virConnectP= tr conn, =20 event =3D virDomainEventPMSuspendDiskNewFromDom(dom, reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5238,7 +5211,7 @@ remoteDomainBuildEventDeviceRemovedHelper(virConnectP= tr conn, int callbackID) { struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5247,8 +5220,6 @@ remoteDomainBuildEventDeviceRemovedHelper(virConnectP= tr conn, =20 event =3D virDomainEventDeviceRemovedNewFromDom(dom, msg->devAlias); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, callbackID); } static void @@ -5278,7 +5249,7 @@ remoteDomainBuildEventCallbackDeviceAdded(virNetClien= tProgramPtr prog G_GNUC_UNU virConnectPtr conn =3D opaque; remote_domain_event_callback_device_added_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5287,8 +5258,6 @@ remoteDomainBuildEventCallbackDeviceAdded(virNetClien= tProgramPtr prog G_GNUC_UNU =20 event =3D virDomainEventDeviceAddedNewFromDom(dom, msg->devAlias); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5301,7 +5270,7 @@ remoteDomainBuildEventCallbackDeviceRemovalFailed(vir= NetClientProgramPtr prog G_ virConnectPtr conn =3D opaque; remote_domain_event_callback_device_removal_failed_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(dom =3D get_nonnull_domain(conn, msg->dom))) @@ -5309,8 +5278,6 @@ remoteDomainBuildEventCallbackDeviceRemovalFailed(vir= NetClientProgramPtr prog G_ =20 event =3D virDomainEventDeviceRemovalFailedNewFromDom(dom, msg->devAli= as); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5322,7 +5289,7 @@ remoteDomainBuildEventCallbackTunable(virNetClientPro= gramPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; remote_domain_event_callback_tunable_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; virObjectEventPtr event =3D NULL; @@ -5341,8 +5308,6 @@ remoteDomainBuildEventCallbackTunable(virNetClientPro= gramPtr prog G_GNUC_UNUSED, =20 event =3D virDomainEventTunableNewFromDom(dom, params, nparams); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5355,7 +5320,7 @@ remoteDomainBuildEventCallbackAgentLifecycle(virNetCl= ientProgramPtr prog G_GNUC_ virConnectPtr conn =3D opaque; remote_domain_event_callback_agent_lifecycle_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(dom =3D get_nonnull_domain(conn, msg->dom))) @@ -5364,8 +5329,6 @@ remoteDomainBuildEventCallbackAgentLifecycle(virNetCl= ientProgramPtr prog G_GNUC_ event =3D virDomainEventAgentLifecycleNewFromDom(dom, msg->state, msg->reason); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5379,7 +5342,7 @@ remoteDomainBuildEventCallbackMigrationIteration(virN= etClientProgramPtr prog G_G virConnectPtr conn =3D opaque; remote_domain_event_callback_migration_iteration_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(dom =3D get_nonnull_domain(conn, msg->dom))) @@ -5387,8 +5350,6 @@ remoteDomainBuildEventCallbackMigrationIteration(virN= etClientProgramPtr prog G_G =20 event =3D virDomainEventMigrationIterationNewFromDom(dom, msg->iterati= on); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5402,7 +5363,7 @@ remoteDomainBuildEventCallbackJobCompleted(virNetClie= ntProgramPtr prog G_GNUC_UN virConnectPtr conn =3D opaque; remote_domain_event_callback_job_completed_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; virTypedParameterPtr params =3D NULL; int nparams =3D 0; @@ -5420,8 +5381,6 @@ remoteDomainBuildEventCallbackJobCompleted(virNetClie= ntProgramPtr prog G_GNUC_UN =20 event =3D virDomainEventJobCompletedNewFromDom(dom, params, nparams); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5434,7 +5393,7 @@ remoteDomainBuildEventCallbackMetadataChange(virNetCl= ientProgramPtr prog G_GNUC_ virConnectPtr conn =3D opaque; remote_domain_event_callback_metadata_change_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(dom =3D get_nonnull_domain(conn, msg->dom))) @@ -5442,8 +5401,6 @@ remoteDomainBuildEventCallbackMetadataChange(virNetCl= ientProgramPtr prog G_GNUC_ =20 event =3D virDomainEventMetadataChangeNewFromDom(dom, msg->type, msg->= nsuri ? *msg->nsuri : NULL); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -5600,7 +5557,7 @@ remoteDomainBuildQemuMonitorEvent(virNetClientProgram= Ptr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; struct private_data *priv =3D conn->privateData; qemu_domain_monitor_event_msg *msg =3D evdata; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 dom =3D get_nonnull_domain(conn, msg->dom); @@ -5611,7 +5568,6 @@ remoteDomainBuildQemuMonitorEvent(virNetClientProgram= Ptr prog G_GNUC_UNUSED, msg->event, msg->seconds, msg->micros, msg->details ? *msg->details : NU= LL); - virObjectUnref(dom); =20 virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } @@ -5660,7 +5616,7 @@ remoteDomainBuildEventBlockThreshold(virNetClientProg= ramPtr prog G_GNUC_UNUSED, virConnectPtr conn =3D opaque; remote_domain_event_block_threshold_msg *msg =3D evdata; struct private_data *priv =3D conn->privateData; - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; virObjectEventPtr event =3D NULL; =20 if (!(dom =3D get_nonnull_domain(conn, msg->dom))) @@ -5670,8 +5626,6 @@ remoteDomainBuildEventBlockThreshold(virNetClientProg= ramPtr prog G_GNUC_UNUSED, msg->path ? *msg->path = : NULL, msg->threshold, msg->ex= cess); =20 - virObjectUnref(dom); - virObjectEventStateQueueRemote(priv->eventState, event, msg->callbackI= D); } =20 @@ -7779,7 +7733,7 @@ remoteConnectGetAllDomainStats(virConnectPtr conn, =20 cleanup: if (elem) { - virObjectUnref(elem->dom); + g_clear_object(&elem->dom); VIR_FREE(elem); } virDomainStatsRecordListFree(tmpret); diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 29b3feb17c..8c45fa3bc7 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -196,6 +196,7 @@ sub get_conn_method { my %gobject_impl =3D ( virAdmClient =3D> 1, virAdmServer =3D> 1, + virDomain =3D> 1, virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, virInterface =3D> 1, @@ -626,7 +627,7 @@ elsif ($mode eq "server") { my $type_name =3D name_to_TypeName($1); my $unref_impl =3D get_unref_method("virDomain${type_n= ame}"); =20 - push(@vars_list, "virDomainPtr dom =3D NULL"); + push(@vars_list, "g_autoptr(virDomain) dom =3D NULL"); push(@vars_list, "virDomain${type_name}Ptr ${1} =3D NU= LL"); push(@getters_list, " if (!(dom =3D get_nonnull_domain($conn_var, = args->${2}.dom)))\n" . @@ -637,8 +638,7 @@ elsif ($mode eq "server") { push(@args_list, "$1"); push(@free_list, " if ($1)\n" . - " $unref_impl($1);\n" . - " virObjectUnref(dom);"); + " $unref_impl($1);\n"); } elsif ($args_member =3D~ m/^(?:(?:admin|remote)_string|r= emote_uuid) (\S+)<\S+>;/) { push(@args_list, $conn_var) if !@args_list; push(@args_list, "args->$1.$1_val"); diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 7ca314d0dc..ef0bf8b5bd 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -2287,7 +2287,7 @@ static virDomainPtr vboxDomainCreateXML(virConnectPtr= conn, const char *xml, * change this behaviour to the expected one. */ =20 - virDomainPtr dom; + g_autoptr(virDomain) dom =3D NULL; =20 virCheckFlags(0, NULL); =20 @@ -2297,11 +2297,10 @@ static virDomainPtr vboxDomainCreateXML(virConnectP= tr conn, const char *xml, =20 if (vboxDomainCreate(dom) < 0) { vboxDomainUndefineFlags(dom, 0); - virObjectUnref(dom); return NULL; } =20 - return dom; + return g_steal_pointer(&dom); } =20 static int vboxDomainIsActive(virDomainPtr dom) @@ -7618,11 +7617,7 @@ vboxConnectListAllDomains(virConnectPtr conn, ret =3D count; =20 cleanup: - if (doms) { - for (i =3D 0; i < count; i++) - virObjectUnref(doms[i]); - } - VIR_FREE(doms); + virGObjectListFreeCount(doms, count); =20 gVBoxAPI.UArray.vboxArrayRelease(&machines); return ret; diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 4fe072233e..64383889a2 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -3146,7 +3146,7 @@ vzDomainMigratePerformP2P(virDomainObjPtr dom, int nparams, unsigned int flags) { - virDomainPtr ddomain =3D NULL; + g_autoptr(virDomain) ddomain =3D NULL; char *uri =3D NULL; char *cookiein =3D NULL; char *cookieout =3D NULL; @@ -3222,7 +3222,6 @@ vzDomainMigratePerformP2P(virDomainObjPtr dom, virObjectLock(dom); if (ddomain) ret =3D 0; - virObjectUnref(ddomain); =20 /* confirm step is NOOP thus no need to call it */ =20 @@ -3735,7 +3734,7 @@ vzDomainGetAllStats(virConnectPtr conn, =20 error: virTypedParamsFree(stat->params, stat->nparams); - virObjectUnref(stat->dom); + g_clear_object(&stat->dom); VIR_FREE(stat); return NULL; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371155; cv=none; d=zohomail.com; s=zohoarc; b=ZHGJq5QFrp/XJbL6dDALU3Ww/mjb40P6S6n6nVc1Yc6948rEVbSTSRQrhHfT79DG/pZdmR249iZiABHpAwxXa5bdNgv528bTNai9fF/G9ObbFv+oFBvJ7XXXWK8+3YQSGQQOSQTJqyv+mT+68L/dC4M4l3J3eUAg0lrvO/OVkVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371155; 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=qoQ+gReA7C3ACHKf+O9rf3FFovjnRqsiZwqZCVWy4Ag=; b=i05zNIsDAPKna8BKBdr8GwW/jdRHEgGryajaAVzGMkcbQEVGFnKkwcgi757AtH3Ns31d7kD0a9JKbudNFkA/woyMYZfsnmLZjy2JbCaGELooRpUpYhi6kaxzzEKOLzIel1SWM2OhWVa4qiL2pfxTLU65wpL4YKaeCC5Vw2pDKZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371155737292.7358636452275; Wed, 13 May 2020 04:59:15 -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-104-HIkG5Rv0MH-e8yP-fNce9w-1; Wed, 13 May 2020 07:59:07 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9D91D8015D1; Wed, 13 May 2020 11:59:01 +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 7B3EF76E82; Wed, 13 May 2020 11:59:01 +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 45056180531D; Wed, 13 May 2020 11:59:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwsuw016307 for ; Wed, 13 May 2020 07:58:54 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7CDD42029F6F; Wed, 13 May 2020 11:58:54 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 76EE42029F71 for ; Wed, 13 May 2020 11:58:52 +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-mx02.redhat.com (Postfix) with ESMTPS id 2DE9D80CDB1 for ; Wed, 13 May 2020 11:58:52 +0000 (UTC) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-230-wzW1xLJYPTaENilYddwvQA-1; Wed, 13 May 2020 07:58:49 -0400 Received: by mail-wr1-f42.google.com with SMTP id l17so6983197wrr.4 for ; Wed, 13 May 2020 04:58:49 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371154; 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=qoQ+gReA7C3ACHKf+O9rf3FFovjnRqsiZwqZCVWy4Ag=; b=TmHbGbaE5Bhr7Kbi3oxo4DHM6Vo2Q9oDuPBM1uEAVkSQQJn/ke30aD5yF68OtDoavHzAfC p4+NILhcBCgOdQmgkbx9bGbf+NvAfcrYyiTntBMlipuP3qZ0k0ygGBjBqh4rorKiuO1qns eP0+Uwm1YGPFdpgHzA5aKyEZKSwnN9g= X-MC-Unique: HIkG5Rv0MH-e8yP-fNce9w-1 X-MC-Unique: wzW1xLJYPTaENilYddwvQA-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=qoQ+gReA7C3ACHKf+O9rf3FFovjnRqsiZwqZCVWy4Ag=; b=QTVnpjTN13VigYLTi2Quc+qpHj108z9wOShmnptW6yfm4oPJCv3v1alQpnQE8OwCF3 mO3DlADHCqFCTO1cAJCaXSKxufdetgQZZfQ5eGf0ISHExjyJ3Ed3bFG5+BcVP6OAT2ww ZUF7VLRouc68nTzcCbLXbTIHQVuyZo/18yBTnbanBFZQcnkc0FDs9v71Gor+h0lYSTFZ EmzFpNywnq42mldDAgdYFy931STjr0V5Tf/kg+SyZxPZ1acKYuchEY72GAV/axqX99p7 e/VP6sgX+FsyQLdv/xA9ivuDLq14tAyLjPESaS1V9k1Ogu9EtfzpByqDYcETWanJdScQ e1qw== X-Gm-Message-State: AGi0PuaguEI0Iw14/+xEszemsdwlSsa8LETN9OCvBgtQdR0NvYnEmc3f m9Hp/oyNJwLgR9cgwTNFc7ch4PSY X-Google-Smtp-Source: APiQypJgHVGc9vSXjteIXjs1Bf7e6Wt2fknlARBJWl2PfTvpuZXDbtcUXPih86K/ooKUucfs5WocjA== X-Received: by 2002:adf:d849:: with SMTP id k9mr30733926wrl.304.1589371128208; Wed, 13 May 2020 04:58:48 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 30/40] rpc: gendispatch: use g_autoptr where possible Date: Wed, 13 May 2020 13:57:14 +0200 Message-Id: <20200513115724.157687-31-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.11 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/rpc/gendispatch.pl | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 8c45fa3bc7..e605d50060 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -613,22 +613,17 @@ elsif ($mode eq "server") { next } elsif ($args_member =3D~ m/^remote_nonnull_(domain|netwo= rk|network_port|storage_pool|storage_vol|interface|secret|nwfilter|nwfilter= _binding) (\S+);/) { my $type_name =3D name_to_TypeName($1); - my $unref_impl =3D get_unref_method("vir${type_name}"); =20 - push(@vars_list, "vir${type_name}Ptr $2 =3D NULL"); + push(@vars_list, "g_autoptr(vir${type_name}) $2 =3D NU= LL"); push(@getters_list, " if (!($2 =3D get_nonnull_$1($conn_var, args-= >$2)))\n" . " goto cleanup;\n"); push(@args_list, "$2"); - push(@free_list, - " if ($2)\n" . - " $unref_impl($2);"); } elsif ($args_member =3D~ m/^remote_nonnull_domain_(check= point|snapshot) (\S+);$/) { my $type_name =3D name_to_TypeName($1); - my $unref_impl =3D get_unref_method("virDomain${type_n= ame}"); =20 push(@vars_list, "g_autoptr(virDomain) dom =3D NULL"); - push(@vars_list, "virDomain${type_name}Ptr ${1} =3D NU= LL"); + push(@vars_list, "g_autoptr(virDomain${type_name}) ${1= } =3D NULL"); push(@getters_list, " if (!(dom =3D get_nonnull_domain($conn_var, = args->${2}.dom)))\n" . " goto cleanup;\n" . @@ -636,9 +631,6 @@ elsif ($mode eq "server") { " if (!($1 =3D get_nonnull_domain_${1}(dom, ar= gs->$2)))\n" . " goto cleanup;\n"); push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " $unref_impl($1);\n"); } elsif ($args_member =3D~ m/^(?:(?:admin|remote)_string|r= emote_uuid) (\S+)<\S+>;/) { push(@args_list, $conn_var) if !@args_list; push(@args_list, "args->$1.$1_val"); @@ -852,12 +844,8 @@ elsif ($mode eq "server") { $single_ret_var =3D undef; $single_ret_by_ref =3D 1; } else { - my $unref_impl =3D get_unref_method("vir${type_nam= e}"); - push(@vars_list, "vir${type_name}Ptr $2 =3D NULL"); + push(@vars_list, "g_autoptr(vir${type_name}) $2 = =3D NULL"); push(@ret_list, "make_nonnull_$1(&ret->$2, $2);\n"= ); - push(@free_list, - " if ($2)\n" . - " $unref_impl($2);"); $single_ret_var =3D $2; $single_ret_by_ref =3D 0; $single_ret_check =3D " =3D=3D NULL"; --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; 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 207.211.31.81 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=1589371148; cv=none; d=zohomail.com; s=zohoarc; b=dp1B/kv3u3BqNDaoyTaK9AkhZ0jBSCtajctZkuTQw2q/blUa50Mcb4+C1TfAuts97Qo/YPkBcRVxjsB7Pxl7NXG8paAMFG3rX2s2bglL/klj9p5b6fz1Hps/PstgCZt7cVH+1EgU/wU/4TwkljonR15R/rO/lEE/KA17VZBiqbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371148; 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=w25FY6p8afMA6RlrRWcn0bksRATy2Wx3ol/k2l6Mqoo=; b=CXpluw8wKHTeLNuMTOUAl4Q6DjSHOq2YbvBCi2fSXdAn58z2o/MNKO+BEJnpKYY822TefXm6bDs1/O7vkUOZ5yKiWMVK+8+/OEdopPHFej49Y4wId6Gb7x7Mm5Ibz7Ppp5Q/Nsw5LEYRyfkGvqd4UAuIX4aVgtWmyzj1Vu/fftU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371148982732.5346154342272; Wed, 13 May 2020 04:59:08 -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-21-1mH_q_BpPB6f6po8IPs35A-1; Wed, 13 May 2020 07:59:05 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2D41213F8; Wed, 13 May 2020 11:58:59 +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 0EE625C1D3; Wed, 13 May 2020 11:58:59 +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 CFAC8180530B; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwrVG016300 for ; Wed, 13 May 2020 07:58:54 -0400 Received: by smtp.corp.redhat.com (Postfix) id CBDA72156A2D; Wed, 13 May 2020 11:58:53 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C6B522166B27 for ; Wed, 13 May 2020 11:58:53 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A431180028C for ; Wed, 13 May 2020 11:58:53 +0000 (UTC) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-13-rMWl-d21OK-5wdH8DYlAuw-1; Wed, 13 May 2020 07:58:51 -0400 Received: by mail-wr1-f48.google.com with SMTP id h17so11644805wrc.8 for ; Wed, 13 May 2020 04:58:51 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371147; 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=w25FY6p8afMA6RlrRWcn0bksRATy2Wx3ol/k2l6Mqoo=; b=T5d0/G33RSrW01vsZnk4jDPx9dsoi4W36acRD8tbYA6J1eheMoEPZALmhWJ45BP9IUbBcq i4FTyefi3lkVcZ2/vmJRQlKToSD8Fh8f4tvJSFrGLVpOrzRUK6IbnxRYhJQgFbUQr0a4pz FiruTHdqLib8Vl/z9ahw6lfFBfewoHo= X-MC-Unique: 1mH_q_BpPB6f6po8IPs35A-1 X-MC-Unique: rMWl-d21OK-5wdH8DYlAuw-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=w25FY6p8afMA6RlrRWcn0bksRATy2Wx3ol/k2l6Mqoo=; b=BojyjwIxDsuPp0W4JHifdcTOkS9XBK0QOJrASQSUvYoopWyyJMK8jXBVstpETMpmE2 KecFgtcZhG5Z/+sjlFPOc9vS77KKqzgm9BoebJdZ2/BRAIoeCVQh9b6oQ/MG19QkUYDK 38b3E1AGgNXC3MA2RDEz6A9ZZyxZI9tG6J6ToiMKosThqZItwDpbv2gYtvD7Rz/X1QO6 jZWvbSkEaCgKXRZK+wdAMY2Wq/7u+zVBA8O8NrLphunXLHmkJCah648trVSRI0gsSoM1 lRZpCRgAILe+xN1FHHis8y04eg4PwWTQxEaw8YhldQ7DAcmqz6/hDQALYX+7X3LuDb4v Sezg== X-Gm-Message-State: AGi0PubIEVpBUygqBQWPGYwrIOXe+6Be+WzLSphckObjs2ofVygP/ZpQ 6L4s+os4+t9wcWWALjzWP5FIjuXn X-Google-Smtp-Source: APiQypJgFB8ptLSeNLt2v1Ps78fk6qhiv9IB1OqXJSy8mo3FA1cJDBdJdE8v6zHkkMQbZ527QJ1ebQ== X-Received: by 2002:adf:9d91:: with SMTP id p17mr23656321wre.119.1589371129831; Wed, 13 May 2020 04:58:49 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 31/40] conf: convert virNetworkXMLOption to GObject Date: Wed, 13 May 2020 13:57:15 +0200 Message-Id: <20200513115724.157687-32-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.16 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/conf/network_conf.c | 24 ++++++------------------ src/conf/network_conf.h | 12 +++++++++--- src/network/bridge_driver.c | 2 +- tests/networkxml2xmltest.c | 3 +-- 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index dc64ce6959..e8491d0724 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -77,35 +77,23 @@ VIR_ENUM_IMPL(virNetworkDHCPLeaseTimeUnit, "hours", ); =20 -static virClassPtr virNetworkXMLOptionClass; +G_DEFINE_TYPE(virNetworkXMLOption, vir_network_xml_option, G_TYPE_OBJECT); =20 static void -virNetworkXMLOptionDispose(void *obj G_GNUC_UNUSED) +vir_network_xml_option_init(virNetworkXMLOption *xmlopt G_GNUC_UNUSED) { - return; } =20 -static int -virNetworkXMLOnceInit(void) +static void +vir_network_xml_option_class_init(virNetworkXMLOptionClass *klass G_GNUC_U= NUSED) { - if (!VIR_CLASS_NEW(virNetworkXMLOption, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virNetworkXML); - virNetworkXMLOptionPtr virNetworkXMLOptionNew(virXMLNamespacePtr xmlns) { - virNetworkXMLOptionPtr xmlopt; - - if (virNetworkXMLInitialize() < 0) - return NULL; - - if (!(xmlopt =3D virObjectNew(virNetworkXMLOptionClass))) - return NULL; + virNetworkXMLOptionPtr xmlopt =3D + VIR_NETWORK_XML_OPTION(g_object_new(VIR_TYPE_NETWORK_XML_OPTION, N= ULL)); =20 if (xmlns) xmlopt->ns =3D *xmlns; diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index f2dc388ef0..e32339e777 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -33,17 +33,23 @@ #include "device_conf.h" #include "virbitmap.h" #include "networkcommon_conf.h" -#include "virobject.h" #include "virmacmap.h" #include "virenum.h" #include "virxml.h" +#include =20 struct _virNetworkXMLOption { - virObject parent; + GObject parent; =20 virXMLNamespace ns; }; -typedef struct _virNetworkXMLOption virNetworkXMLOption; + +#define VIR_TYPE_NETWORK_XML_OPTION vir_network_xml_option_get_type() +G_DECLARE_FINAL_TYPE(virNetworkXMLOption, + vir_network_xml_option, + VIR, + NETWORK_XML_OPTION, + GObject); typedef virNetworkXMLOption *virNetworkXMLOptionPtr; =20 =20 diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 3c110a53fc..98f9b6c604 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -891,7 +891,7 @@ networkStateCleanup(void) return -1; =20 virObjectUnref(network_driver->networkEventState); - virObjectUnref(network_driver->xmlopt); + g_clear_object(&network_driver->xmlopt); =20 /* free inactive networks */ virObjectUnref(network_driver->networks); diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c index 700744785a..dc691330e6 100644 --- a/tests/networkxml2xmltest.c +++ b/tests/networkxml2xmltest.c @@ -30,7 +30,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *o= utxml, int ret; testCompareNetXML2XMLResult result =3D TEST_COMPARE_NET_XML2XML_RESULT= _SUCCESS; virNetworkDefPtr dev =3D NULL; - virNetworkXMLOptionPtr xmlopt =3D NULL; + g_autoptr(virNetworkXMLOption) xmlopt =3D NULL; =20 if (!(xmlopt =3D networkDnsmasqCreateXMLConf())) goto cleanup; @@ -72,7 +72,6 @@ testCompareXMLToXMLFiles(const char *inxml, const char *o= utxml, =20 VIR_FREE(actual); virNetworkDefFree(dev); - virObjectUnref(xmlopt); return ret; } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1589371153; cv=none; d=zohomail.com; s=zohoarc; b=g5cq451s4oiF9XxYvYSDAqSEdz2HyvHyDHv32LqT7PQyDv80XMJtnJell1TzsGlK3PWYFq1JmlXftkurr07IkD44qPc3oXJXeD6H9pi8lHKe7xb4nj/SvqUXqXlDUv8w7xQbDvVFXS7R4Sducvj0fNAG7MkIf0Xu4p0bCnqeRAE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371153; 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=zZMcHVWb3GSsSKQRZ4dumVIcdYfRAbtTuN3b7A/826E=; b=ntG5VNLvrDFSODFAV3ALC13caLekxwijAckFFlh49QdRQ3SiMxKTbHjNiDHsRhK3razcOGMdH8HnnafW+NtyFwh4e02MmVCPCKRCwe8XXcwnMq155VcLsi+pni2OhsxunGdPwr2OLtIoix//57UM2N+m6sliN/xvgRpARDVTXnE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1589371153765552.3968642789483; Wed, 13 May 2020 04:59:13 -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-75-jmEUfP4cMFKlehSFjqH41A-1; Wed, 13 May 2020 07:59:08 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 38BF3460; Wed, 13 May 2020 11:59:02 +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 19B425C1D3; Wed, 13 May 2020 11:59:02 +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 E07F54EA02; Wed, 13 May 2020 11:59:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwvTY016331 for ; Wed, 13 May 2020 07:58:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id EFDC85EDD7; Wed, 13 May 2020 11:58:56 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E98D2114D0C for ; Wed, 13 May 2020 11:58:56 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C151D80A0C4 for ; Wed, 13 May 2020 11:58:56 +0000 (UTC) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-51-1RdF4a7wOmuDuhEinz7zKA-1; Wed, 13 May 2020 07:58:53 -0400 Received: by mail-wm1-f68.google.com with SMTP id k12so26199128wmj.3 for ; Wed, 13 May 2020 04:58:53 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371152; 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=zZMcHVWb3GSsSKQRZ4dumVIcdYfRAbtTuN3b7A/826E=; b=f+A53J6KV9lTtEaUoRpgT72gp6J7vsf086WKvT+agulrbBJhlCKBoNb6T6MamTKe/fAGkR Demz0B8ZllX1TKFqm0a09LnU4vso0wKPz7ryWAMxAfUioBtMeuoLqvW6QhwDLQBDSMQFDv U3Lqt1bTXc/eLtQjSxYKmEsJcb2Xk4w= X-MC-Unique: jmEUfP4cMFKlehSFjqH41A-1 X-MC-Unique: 1RdF4a7wOmuDuhEinz7zKA-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=zZMcHVWb3GSsSKQRZ4dumVIcdYfRAbtTuN3b7A/826E=; b=RhtYUD8zg8AtLGC3/bYIims43VW5sim0X56GS+icnWrVbhcH/iJFx3aUwFBi41v1dg XaNmsY6cRz608Yz737d16CoZr0HNYbg46XQFOWrjcpTgqvql562nWpSnIJMIjbU5kaeh AdpWEQkCi7Q9X1vKJTuLPMjorjzBHDg5H2j2M5n++fOK0ENyi+GQXcAWEG08xO1MHaEF T81yBHR7YzHRd6ArAbWWCPgENAXqtRnygirtuyfG3sGQdLGSI3wFAqsBGOibAPxB24Wp b8mRUjdnSF768pLQYK3qnZCYII0oaQURC/EQhzdrYiYUooUZSTsEO790knVRPKbqpxIE 6Q1w== X-Gm-Message-State: AGi0PuYeggg4FC26IJ1xKtJMzyAjngfQWTmO/mMbbjB8BuPJ0aqkJ2KV VGBdYKBNNC3ewb5K9LpTKp35EB/E X-Google-Smtp-Source: APiQypLzg59y0ss3Xolc/1Xk/IDffY94JHLX1PfXRgJieIqaO2hEJsHuePBPqUzb0IrURGL3Pz9swA== X-Received: by 2002:a1c:5944:: with SMTP id n65mr31570530wmb.73.1589371131599; Wed, 13 May 2020 04:58:51 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 32/40] lxc: convert virLXCDriverConfig to GObject Date: Wed, 13 May 2020 13:57:16 +0200 Message-Id: <20200513115724.157687-33-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.16 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/lxc/lxc_conf.c | 31 +++++++++++++-------------- src/lxc/lxc_conf.h | 10 +++++++-- src/lxc/lxc_driver.c | 50 +++++++++++++++---------------------------- src/lxc/lxc_process.c | 33 +++++++++------------------- 4 files changed, 50 insertions(+), 74 deletions(-) diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index 6942781731..399e774ffe 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -42,19 +42,20 @@ =20 VIR_LOG_INIT("lxc.lxc_conf"); =20 -static virClassPtr virLXCDriverConfigClass; -static void virLXCDriverConfigDispose(void *obj); +G_DEFINE_TYPE(virLXCDriverConfig, vir_lxc_driver_config, G_TYPE_OBJECT); =20 -static int virLXCConfigOnceInit(void) -{ - if (!VIR_CLASS_NEW(virLXCDriverConfig, virClassForObject())) - return -1; +static void virLXCDriverConfigFinalize(GObject *obj); =20 - return 0; +static void vir_lxc_driver_config_init(virLXCDriverConfig *cfg G_GNUC_UNUS= ED) +{ } =20 -VIR_ONCE_GLOBAL_INIT(virLXCConfig); +static void vir_lxc_driver_config_class_init(virLXCDriverConfigClass *klas= s) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 + obj->finalize =3D virLXCDriverConfigFinalize; +} =20 /* Functions */ virCapsPtr virLXCDriverCapsInit(virLXCDriverPtr driver) @@ -226,11 +227,7 @@ virLXCDriverConfigNew(void) { virLXCDriverConfigPtr cfg; =20 - if (virLXCConfigInitialize() < 0) - return NULL; - - if (!(cfg =3D virObjectNew(virLXCDriverConfigClass))) - return NULL; + cfg =3D VIR_LXC_DRIVER_CONFIG(g_object_new(VIR_TYPE_LXC_DRIVER_CONFIG,= NULL)); =20 cfg->securityDefaultConfined =3D false; cfg->securityRequireConfined =3D false; @@ -277,19 +274,21 @@ virLXCDriverConfigPtr virLXCDriverGetConfig(virLXCDri= verPtr driver) { virLXCDriverConfigPtr cfg; lxcDriverLock(driver); - cfg =3D virObjectRef(driver->config); + cfg =3D g_object_ref(driver->config); lxcDriverUnlock(driver); return cfg; } =20 static void -virLXCDriverConfigDispose(void *obj) +virLXCDriverConfigFinalize(GObject *obj) { - virLXCDriverConfigPtr cfg =3D obj; + virLXCDriverConfigPtr cfg =3D VIR_LXC_DRIVER_CONFIG(obj); =20 VIR_FREE(cfg->configDir); VIR_FREE(cfg->autostartDir); VIR_FREE(cfg->stateDir); VIR_FREE(cfg->logDir); VIR_FREE(cfg->securityDriverName); + + G_OBJECT_CLASS(vir_lxc_driver_config_parent_class)->finalize(obj); } diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h index f2f0e0a570..5ed84f79c7 100644 --- a/src/lxc/lxc_conf.h +++ b/src/lxc/lxc_conf.h @@ -34,6 +34,7 @@ #include "virusb.h" #include "virclosecallbacks.h" #include "virhostdev.h" +#include =20 #define LXC_DRIVER_NAME "LXC" =20 @@ -45,11 +46,16 @@ typedef struct _virLXCDriver virLXCDriver; typedef virLXCDriver *virLXCDriverPtr; =20 -typedef struct _virLXCDriverConfig virLXCDriverConfig; +#define VIR_TYPE_LXC_DRIVER_CONFIG vir_lxc_driver_config_get_type() +G_DECLARE_FINAL_TYPE(virLXCDriverConfig, + vir_lxc_driver_config, + VIR, + LXC_DRIVER_CONFIG, + GObject); typedef virLXCDriverConfig *virLXCDriverConfigPtr; =20 struct _virLXCDriverConfig { - virObject parent; + GObject parent; =20 char *configDir; char *autostartDir; diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index c34bcd5397..9c40daaec9 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -400,7 +400,7 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char = *xml, unsigned int flags) virDomainPtr dom =3D NULL; virObjectEventPtr event =3D NULL; virDomainDefPtr oldDef =3D NULL; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); g_autoptr(virCaps) caps =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 @@ -458,7 +458,6 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char = *xml, unsigned int flags) virDomainDefFree(oldDef); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return dom; } =20 @@ -475,7 +474,7 @@ static int lxcDomainUndefineFlags(virDomainPtr dom, virDomainObjPtr vm; virObjectEventPtr event =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(0, -1); =20 @@ -510,7 +509,6 @@ static int lxcDomainUndefineFlags(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -638,7 +636,7 @@ static int lxcDomainSetMemoryFlags(virDomainPtr dom, un= signed long newmem, int ret =3D -1; virLXCDomainObjPrivatePtr priv; virLXCDriverPtr driver =3D dom->conn->privateData; - virLXCDriverConfigPtr cfg =3D NULL; + g_autoptr(virLXCDriverConfig) cfg =3D NULL; =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG | @@ -719,7 +717,6 @@ static int lxcDomainSetMemoryFlags(virDomainPtr dom, un= signed long newmem, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -743,7 +740,7 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, virDomainDefPtr persistentDef =3D NULL; virDomainObjPtr vm =3D NULL; virLXCDomainObjPrivatePtr priv =3D NULL; - virLXCDriverConfigPtr cfg =3D NULL; + g_autoptr(virLXCDriverConfig) cfg =3D NULL; virLXCDriverPtr driver =3D dom->conn->privateData; int ret =3D -1; =20 @@ -804,7 +801,6 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -976,7 +972,7 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, virDomainObjPtr vm; virObjectEventPtr event =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, -1); =20 @@ -1023,7 +1019,6 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); virNWFilterUnlockFilterUpdates(); return ret; } @@ -1079,7 +1074,7 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, virDomainDefPtr def =3D NULL; virDomainPtr dom =3D NULL; virObjectEventPtr event =3D NULL; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); g_autoptr(virCaps) caps =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 @@ -1150,7 +1145,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, virDomainDefFree(def); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); virNWFilterUnlockFilterUpdates(); return dom; } @@ -1583,7 +1577,7 @@ static void lxcNotifyLoadDomain(virDomainObjPtr vm, i= nt newVM, void *opaque) static int lxcStateReload(void) { - virLXCDriverConfigPtr cfg =3D NULL; + g_autoptr(virLXCDriverConfig) cfg =3D NULL; =20 if (!lxc_driver) return 0; @@ -1595,7 +1589,6 @@ lxcStateReload(void) cfg->autostartDir, false, lxc_driver->xmlopt, lxcNotifyLoadDomain, lxc_driver); - virObjectUnref(cfg); return 0; } =20 @@ -1619,7 +1612,7 @@ static int lxcStateCleanup(void) if (lxc_driver->lockFD !=3D -1) virPidFileRelease(lxc_driver->config->stateDir, "driver", lxc_driv= er->lockFD); =20 - virObjectUnref(lxc_driver->config); + g_clear_object(&lxc_driver->config); virMutexDestroy(&lxc_driver->lock); VIR_FREE(lxc_driver); =20 @@ -1800,7 +1793,7 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, int ret =3D -1; int rc; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -1913,7 +1906,6 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, cleanup: virDomainDefFree(persistentDefCopy); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2238,7 +2230,7 @@ lxcDomainSetBlkioParameters(virDomainPtr dom, virDomainDefPtr def =3D NULL; virDomainDefPtr persistentDef =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D NULL; + g_autoptr(virLXCDriverConfig) cfg =3D NULL; virLXCDomainObjPrivatePtr priv; =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -2303,7 +2295,6 @@ lxcDomainSetBlkioParameters(virDomainPtr dom, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2462,7 +2453,7 @@ static int lxcDomainSetAutostart(virDomainPtr dom, virDomainObjPtr vm; char *configFile =3D NULL, *autostartLink =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 if (!(vm =3D lxcDomObjFromDomain(dom))) goto cleanup; @@ -2528,7 +2519,6 @@ static int lxcDomainSetAutostart(virDomainPtr dom, VIR_FREE(configFile); VIR_FREE(autostartLink); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2624,7 +2614,7 @@ static int lxcDomainSuspend(virDomainPtr dom) virDomainObjPtr vm; virObjectEventPtr event =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 if (!(vm =3D lxcDomObjFromDomain(dom))) goto cleanup; @@ -2661,7 +2651,6 @@ static int lxcDomainSuspend(virDomainPtr dom) cleanup: virObjectEventStateQueue(driver->domainEventState, event); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2673,7 +2662,7 @@ static int lxcDomainResume(virDomainPtr dom) int ret =3D -1; int state; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 if (!(vm =3D lxcDomObjFromDomain(dom))) goto cleanup; @@ -2718,7 +2707,6 @@ static int lxcDomainResume(virDomainPtr dom) cleanup: virObjectEventStateQueue(driver->domainEventState, event); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4296,7 +4284,7 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr do= m, virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL, dev_copy =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -4383,7 +4371,6 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr do= m, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4405,7 +4392,7 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr do= m, virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -4455,7 +4442,6 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr do= m, virDomainDefFree(vmdef); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4470,7 +4456,7 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr do= m, virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL, dev_copy =3D NULL; int ret =3D -1; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -4551,7 +4537,6 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr do= m, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4824,7 +4809,7 @@ lxcDomainSetMetadata(virDomainPtr dom, { virLXCDriverPtr driver =3D dom->conn->privateData; virDomainObjPtr vm; - virLXCDriverConfigPtr cfg =3D NULL; + g_autoptr(virLXCDriverConfig) cfg =3D NULL; int ret =3D -1; =20 virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -4855,7 +4840,6 @@ lxcDomainSetMetadata(virDomainPtr dom, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 6a3c9b7da3..c83a6c5a8f 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -162,7 +162,7 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver, size_t i; virLXCDomainObjPrivatePtr priv =3D vm->privateData; const virNetDevVPortProfile *vport =3D NULL; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); virConnectPtr conn =3D NULL; =20 VIR_DEBUG("Cleanup VM name=3D%s pid=3D%d reason=3D%d", @@ -257,7 +257,6 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver, } =20 virDomainObjRemoveTransientDef(vm); - virObjectUnref(cfg); virObjectUnref(conn); } =20 @@ -340,11 +339,10 @@ virLXCProcessSetupInterfaceDirect(virLXCDriverPtr dri= ver, virDomainDefPtr def, virDomainNetDefPtr net) { - char *ret =3D NULL; char *res_ifname =3D NULL; const virNetDevBandwidth *bw; const virNetDevVPortProfile *prof; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); const char *linkdev =3D virDomainNetGetActualDirectDev(net); unsigned int macvlan_create_flags =3D VIR_NETDEV_MACVLAN_CREATE_IFUP; =20 @@ -386,13 +384,9 @@ virLXCProcessSetupInterfaceDirect(virLXCDriverPtr driv= er, cfg->stateDir, NULL, 0, macvlan_create_flags) < 0) - goto cleanup; - - ret =3D res_ifname; + return NULL; =20 - cleanup: - virObjectUnref(cfg); - return ret; + return res_ifname; } =20 static const char *nsInfoLocal[VIR_LXC_DOMAIN_NAMESPACE_LAST] =3D { @@ -786,7 +780,7 @@ static void virLXCProcessMonitorInitNotify(virLXCMonito= rPtr mon G_GNUC_UNUSED, { virLXCDriverPtr driver =3D lxc_driver; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); ino_t inode =3D 0; =20 virObjectLock(vm); @@ -806,7 +800,6 @@ static void virLXCProcessMonitorInitNotify(virLXCMonito= rPtr mon G_GNUC_UNUSED, VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name); =20 virObjectUnlock(vm); - virObjectUnref(cfg); } =20 static virLXCMonitorCallbacks monitorCallbacks =3D { @@ -820,10 +813,10 @@ static virLXCMonitorPtr virLXCProcessConnectMonitor(v= irLXCDriverPtr driver, virDomainObjPtr vm) { virLXCMonitorPtr monitor =3D NULL; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 if (virSecurityManagerSetSocketLabel(driver->securityManager, vm->def)= < 0) - goto cleanup; + return NULL; =20 /* Hold an extra reference because we can't allow 'vm' to be * deleted while the monitor is active. This will be unreffed @@ -840,11 +833,8 @@ static virLXCMonitorPtr virLXCProcessConnectMonitor(vi= rLXCDriverPtr driver, virObjectUnref(monitor); monitor =3D NULL; } - goto cleanup; } =20 - cleanup: - virObjectUnref(cfg); return monitor; } =20 @@ -932,7 +922,7 @@ virLXCProcessBuildControllerCmd(virLXCDriverPtr driver, char *filterstr; char *outputstr; virCommandPtr cmd; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); =20 cmd =3D virCommandNew(vm->def->emulator); =20 @@ -1013,7 +1003,6 @@ virLXCProcessBuildControllerCmd(virLXCDriverPtr drive= r, virCommandRequireHandshake(cmd); =20 cleanup: - virObjectUnref(cfg); return cmd; error: virCommandFree(cmd); @@ -1202,7 +1191,7 @@ int virLXCProcessStart(virConnectPtr conn, virLXCDomainObjPrivatePtr priv =3D vm->privateData; virCapsPtr caps =3D NULL; virErrorPtr err =3D NULL; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); virCgroupPtr selfcgroup; int status; char *pidfile =3D NULL; @@ -1564,7 +1553,6 @@ int virLXCProcessStart(virConnectPtr conn, VIR_FORCE_CLOSE(handshakefds[1]); VIR_FREE(pidfile); VIR_FREE(logfile); - virObjectUnref(cfg); g_clear_object(&caps); =20 virErrorRestore(&err); @@ -1662,7 +1650,7 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm, { virLXCDriverPtr driver =3D opaque; virLXCDomainObjPrivatePtr priv; - virLXCDriverConfigPtr cfg =3D virLXCDriverGetConfig(driver); + g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); int ret =3D -1; =20 virObjectLock(vm); @@ -1728,7 +1716,6 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm, =20 ret =3D 0; cleanup: - virObjectUnref(cfg); virObjectUnlock(vm); return ret; =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371155; cv=none; d=zohomail.com; s=zohoarc; b=jOqM277VWPQ10usaNSEUE63AyCLC67HHO6CxW9+TQYAwn6T8abHo7mU1oK9hRxZAXe25XG8mx4u5wfzXN+U22XKOVP3UmCAndEUyLUP9b4R1RGF7aDVnbw2Wu2343wWunWtjzft2ZGOCQ69wMHBnRDPVKrbUuLCX1t8ySszgEaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371155; 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=UgdOZT6B0gjTTK0jMSW6ViUasYoKOlDEy6Znoc3WxeM=; b=bMVJeeiQ4W4U9mCYaEjDcMe4WGRaOuGjDwW8m5bz8Sjdjvd3W4ZrfN+dJKqQtYqybYEPxzPmvVyShEteOEG5X39tJtvvQHRsKmzl9enCAAHrxMJT04XemV6q0vVEosp1WMTPETn+j8Ou/muWs7ZTLJdi11bnV8s39WUZ2JW/iLg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371155623519.5305817552367; Wed, 13 May 2020 04:59:15 -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-324-ClSQyLyyMJaXSlCqVCOE2A-1; Wed, 13 May 2020 07:59:11 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 55A3683DE2C; Wed, 13 May 2020 11:59:06 +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 32F677D945; Wed, 13 May 2020 11:59:06 +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 038031804749; Wed, 13 May 2020 11:59:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwxEp016346 for ; Wed, 13 May 2020 07:58:59 -0400 Received: by smtp.corp.redhat.com (Postfix) id DD720110EB4; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D78BA5EDD7 for ; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B39411019CAA for ; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-495-cI4e1iCYPGWO-gxSFuCm6g-1; Wed, 13 May 2020 07:58:56 -0400 Received: by mail-wm1-f50.google.com with SMTP id u16so28146246wmc.5 for ; Wed, 13 May 2020 04:58:55 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371154; 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=UgdOZT6B0gjTTK0jMSW6ViUasYoKOlDEy6Znoc3WxeM=; b=DsMyX/6fKl5fCRC4WXb3vQfM8Yh3p2/d9BpcmC21PhjKGxbIaTbtNxhIlpwolZXoPA5QXl xfe1/ysaw/uG4KdFLrb5+Z1mm1soOgabJHdV85ulWP6salhNcShF6fGTIgIK355fHaFfzN TMIOaeN+6nqdMcePNNBwKjkt1QTE4Ac= X-MC-Unique: ClSQyLyyMJaXSlCqVCOE2A-1 X-MC-Unique: cI4e1iCYPGWO-gxSFuCm6g-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=UgdOZT6B0gjTTK0jMSW6ViUasYoKOlDEy6Znoc3WxeM=; b=X4PReyCR9f6JMjPN02MQzfryLToumqo3srNorJmFCfqbXtbKGf2n8w9xqPJSXTqPl8 4wLOTlLLQUsin9sZeDOwheqvV5Lkyq76rHNL9eKdG3mHxfcy/30zM+7AattuT+DegrK4 PvmYKMSdl4aQspcizs9cIbnOhB1KAbUA/TauioEXgHNfJuIhcg2YQ9xlXgqlbQfR+/e/ IG5IzKIjfck4uR4eZEssKapWnVaqhIXTSHckQw/bQCPWa/wu3RggcP1wvS0Yz+wtgRq5 NW49lM4pL5mz43tfwq6pCtCVJJkWrx20HlYpDjgW0IPR28CX+X/e7DfyC8WjBPbvEOt5 4J9w== X-Gm-Message-State: AGi0PuZ3HovDvMKm5/4cFhq+u5usAFB9nCLn3TUSjlWeKJ6n1O4GK36o 6tPoQFKxEwx075hhYtUZK+SfmcAt X-Google-Smtp-Source: APiQypIczsw2IXYVMqVw/7EPelrYW0O7A0AX+CCFgh+cwx0zF1WiT4ekjez891jDQcN6o55bVmv0Lg== X-Received: by 2002:a1c:e910:: with SMTP id q16mr32827559wmc.158.1589371133076; Wed, 13 May 2020 04:58:53 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 33/40] libxl: convert libxlDriverConfig to GObject Date: Wed, 13 May 2020 13:57:17 +0200 Message-Id: <20200513115724.157687-34-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.13 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/libxl/libxl_conf.c | 51 ++++++------ src/libxl/libxl_conf.h | 12 ++- src/libxl/libxl_driver.c | 162 ++++++++++++------------------------ src/libxl/libxl_migration.c | 21 ++--- tests/testutilsxen.c | 2 +- 5 files changed, 96 insertions(+), 152 deletions(-) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 2a719486fa..7684c4cb4b 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -52,23 +52,27 @@ VIR_LOG_INIT("libxl.libxl_conf"); =20 =20 -static virClassPtr libxlDriverConfigClass; -static void libxlDriverConfigDispose(void *obj); +G_DEFINE_TYPE(libxlDriverConfig, libxl_driver_config, G_TYPE_OBJECT); =20 -static int libxlConfigOnceInit(void) -{ - if (!VIR_CLASS_NEW(libxlDriverConfig, virClassForObject())) - return -1; +static void libxlDriverConfigFinalize(GObject *obj); =20 - return 0; +static void +libxl_driver_config_init(libxlDriverConfig *cfg G_GNUC_UNUSED) +{ } =20 -VIR_ONCE_GLOBAL_INIT(libxlConfig); +static void +libxl_driver_config_class_init(libxlDriverConfigClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D libxlDriverConfigFinalize; +} =20 static void -libxlDriverConfigDispose(void *obj) +libxlDriverConfigFinalize(GObject *obj) { - libxlDriverConfigPtr cfg =3D obj; + libxlDriverConfigPtr cfg =3D LIBXL_DRIVER_CONFIG(obj); =20 g_clear_object(&cfg->caps); libxl_ctx_free(cfg->ctx); @@ -86,6 +90,8 @@ libxlDriverConfigDispose(void *obj) VIR_FREE(cfg->lockManagerName); VIR_FREE(cfg->channelDir); virFirmwareFreeList(cfg->firmwares, cfg->nfirmwares); + + G_OBJECT_CLASS(libxl_driver_config_parent_class)->finalize(obj); } =20 =20 @@ -1723,13 +1729,8 @@ libxlGetAutoballoonConf(libxlDriverConfigPtr cfg, libxlDriverConfigPtr libxlDriverConfigNew(void) { - libxlDriverConfigPtr cfg; - - if (libxlConfigInitialize() < 0) - return NULL; - - if (!(cfg =3D virObjectNew(libxlDriverConfigClass))) - return NULL; + g_autoptr(libxlDriverConfig) cfg =3D + LIBXL_DRIVER_CONFIG(g_object_new(LIBXL_TYPE_DRIVER_CONFIG, NULL)); =20 cfg->configBaseDir =3D g_strdup(LIBXL_CONFIG_BASE_DIR); cfg->configDir =3D g_strdup(LIBXL_CONFIG_DIR); @@ -1745,34 +1746,30 @@ libxlDriverConfigNew(void) if (virFirmwareParseList(DEFAULT_LOADER_NVRAM, &cfg->firmwares, &cfg->nfirmwares) < 0) - goto error; + return NULL; =20 #else if (VIR_ALLOC_N(cfg->firmwares, 1) < 0) - goto error; + return NULL; cfg->nfirmwares =3D 1; if (VIR_ALLOC(cfg->firmwares[0]) < 0) - goto error; + return NULL; cfg->firmwares[0]->name =3D g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin"); #endif =20 /* Always add hvmloader to firmwares */ if (VIR_REALLOC_N(cfg->firmwares, cfg->nfirmwares + 1) < 0) - goto error; + return NULL; cfg->nfirmwares++; if (VIR_ALLOC(cfg->firmwares[cfg->nfirmwares - 1]) < 0) - goto error; + return NULL; cfg->firmwares[cfg->nfirmwares - 1]->name =3D g_strdup(LIBXL_FIRMWARE_= DIR "/hvmloader"); =20 /* defaults for keepalive messages */ cfg->keepAliveInterval =3D 5; cfg->keepAliveCount =3D 5; =20 - return cfg; - - error: - virObjectUnref(cfg); - return NULL; + return g_steal_pointer(&cfg); } =20 int diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h index b057a9e4ba..6d28f0bc1d 100644 --- a/src/libxl/libxl_conf.h +++ b/src/libxl/libxl_conf.h @@ -37,6 +37,7 @@ #include "virfirmware.h" #include "libxl_capabilities.h" #include "libxl_logger.h" +#include =20 #define LIBXL_DRIVER_EXTERNAL_NAME "Xen" /* @@ -66,11 +67,17 @@ typedef struct _libxlDriverPrivate libxlDriverPrivate; typedef libxlDriverPrivate *libxlDriverPrivatePtr; =20 -typedef struct _libxlDriverConfig libxlDriverConfig; +#define LIBXL_TYPE_DRIVER_CONFIG libxl_driver_config_get_type() +G_DECLARE_FINAL_TYPE(libxlDriverConfig, + libxl_driver_config, + LIBXL, + DRIVER_CONFIG, + GObject); + typedef libxlDriverConfig *libxlDriverConfigPtr; =20 struct _libxlDriverConfig { - virObject parent; + GObject parent; =20 const libxl_version_info *verInfo; unsigned int version; @@ -108,7 +115,6 @@ struct _libxlDriverConfig { size_t nfirmwares; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(libxlDriverConfig, virObjectUnref); =20 =20 struct _libxlDriverPrivate { diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 202b1d73c5..6c4a174096 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -390,7 +390,7 @@ libxlReconnectDomain(virDomainObjPtr vm, { libxlDriverPrivatePtr driver =3D opaque; libxlDomainObjPrivatePtr priv =3D vm->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); int rc; libxl_dominfo d_info; int len; @@ -484,7 +484,6 @@ libxlReconnectDomain(virDomainObjPtr vm, libxl_dominfo_dispose(&d_info); virObjectUnlock(vm); virObjectUnref(vm); - virObjectUnref(cfg); return ret; =20 error: @@ -519,7 +518,7 @@ libxlStateCleanup(void) if (libxl_driver->lockFD !=3D -1) virPidFileRelease(libxl_driver->config->stateDir, "driver", libxl_= driver->lockFD); =20 - virObjectUnref(libxl_driver->config); + g_clear_object(&libxl_driver->config); virMutexDestroy(&libxl_driver->lock); VIR_FREE(libxl_driver); =20 @@ -589,7 +588,7 @@ const struct libxl_event_hooks ev_hooks =3D { static int libxlAddDom0(libxlDriverPrivatePtr driver) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def =3D NULL; virDomainObjPtr vm =3D NULL; libxl_dominfo d_info; @@ -642,7 +641,6 @@ libxlAddDom0(libxlDriverPrivatePtr driver) libxl_dominfo_dispose(&d_info); virDomainDefFree(def); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -831,7 +829,7 @@ libxlStateInitialize(bool privileged, static int libxlStateReload(void) { - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; =20 if (!libxl_driver) return 0; @@ -849,7 +847,6 @@ libxlStateReload(void) libxlAutostartDomain, libxl_driver); =20 - virObjectUnref(cfg); return 0; } =20 @@ -918,14 +915,13 @@ static int libxlConnectGetVersion(virConnectPtr conn, unsigned long *version) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; =20 if (virConnectGetVersionEnsureACL(conn) < 0) return 0; =20 cfg =3D libxlDriverConfigGet(driver); *version =3D cfg->version; - virObjectUnref(cfg); return 0; } =20 @@ -965,7 +961,7 @@ libxlConnectGetMaxVcpus(virConnectPtr conn, const char = *type G_GNUC_UNUSED) { int ret; libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; =20 if (virConnectGetMaxVcpusEnsureACL(conn) < 0) return -1; @@ -979,7 +975,6 @@ libxlConnectGetMaxVcpus(virConnectPtr conn, const char = *type G_GNUC_UNUSED) if (ret <=3D 0) ret =3D -1; =20 - virObjectUnref(cfg); return ret; } =20 @@ -997,7 +992,7 @@ libxlConnectGetCapabilities(virConnectPtr conn) { libxlDriverPrivatePtr driver =3D conn->privateData; char *xml; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; =20 if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; @@ -1005,7 +1000,6 @@ libxlConnectGetCapabilities(virConnectPtr conn) cfg =3D libxlDriverConfigGet(driver); xml =3D virCapabilitiesFormatXML(cfg->caps); =20 - virObjectUnref(cfg); return xml; } =20 @@ -1041,7 +1035,7 @@ libxlDomainCreateXML(virConnectPtr conn, const char *= xml, virDomainDefPtr def; virDomainObjPtr vm =3D NULL; virDomainPtr dom =3D NULL; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; =20 virCheckFlags(VIR_DOMAIN_START_PAUSED | @@ -1086,7 +1080,6 @@ libxlDomainCreateXML(virConnectPtr conn, const char *= xml, cleanup: virDomainDefFree(def); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return dom; } =20 @@ -1163,7 +1156,7 @@ static int libxlDomainSuspend(virDomainPtr dom) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -1207,7 +1200,6 @@ libxlDomainSuspend(virDomainPtr dom) cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -1216,7 +1208,7 @@ static int libxlDomainResume(virDomainPtr dom) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -1261,7 +1253,6 @@ libxlDomainResume(virDomainPtr dom) cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -1269,7 +1260,7 @@ static int libxlDomainShutdownFlags(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; int ret =3D -1; =20 @@ -1319,7 +1310,6 @@ libxlDomainShutdownFlags(virDomainPtr dom, unsigned i= nt flags) =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -1334,7 +1324,7 @@ static int libxlDomainReboot(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; int ret =3D -1; =20 @@ -1366,7 +1356,6 @@ libxlDomainReboot(virDomainPtr dom, unsigned int flag= s) =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -1375,7 +1364,7 @@ libxlDomainDestroyFlags(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; int ret =3D -1; virObjectEventPtr event =3D NULL; @@ -1420,7 +1409,6 @@ libxlDomainDestroyFlags(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -1440,7 +1428,7 @@ libxlDomainPMSuspendForDuration(virDomainPtr dom, virDomainObjPtr vm; int ret =3D -1; libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virObjectEventPtr event =3D NULL; =20 virCheckFlags(0, -1); @@ -1506,7 +1494,7 @@ libxlDomainPMWakeup(virDomainPtr dom, unsigned int fl= ags) int ret =3D -1; virObjectEventPtr event =3D NULL; libxlDomainObjPrivatePtr priv; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); =20 virCheckFlags(0, -1); =20 @@ -1635,7 +1623,7 @@ libxlDomainSetMemoryFlags(virDomainPtr dom, unsigned = long newmem, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virDomainDefPtr persistentDef =3D NULL; int ret =3D -1; @@ -1720,7 +1708,6 @@ libxlDomainSetMemoryFlags(virDomainPtr dom, unsigned = long newmem, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -1740,7 +1727,7 @@ static int libxlDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; libxl_dominfo d_info; int ret =3D -1; @@ -1776,7 +1763,6 @@ libxlDomainGetInfo(virDomainPtr dom, virDomainInfoPtr= info) =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -1814,7 +1800,7 @@ libxlDoDomainSave(libxlDriverPrivatePtr driver, const char *to, bool managed) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxlSavefileHeader hdr; virObjectEventPtr event =3D NULL; char *xml =3D NULL; @@ -1891,7 +1877,6 @@ libxlDoDomainSave(libxlDriverPrivatePtr driver, if (VIR_CLOSE(fd) < 0) virReportSystemError(errno, "%s", _("cannot close file")); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -1956,7 +1941,7 @@ libxlDomainRestoreFlags(virConnectPtr conn, const cha= r *from, const char *dxml, unsigned int flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm =3D NULL; virDomainDefPtr def =3D NULL; libxlSavefileHeader hdr; @@ -2009,7 +1994,6 @@ libxlDomainRestoreFlags(virConnectPtr conn, const cha= r *from, virReportSystemError(errno, "%s", _("cannot close file")); virDomainDefFree(def); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2023,7 +2007,7 @@ static int libxlDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virObjectEventPtr event =3D NULL; bool paused =3D false; @@ -2106,7 +2090,6 @@ libxlDomainCoreDump(virDomainPtr dom, const char *to,= unsigned int flags) cleanup: virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -2239,7 +2222,7 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned i= nt nvcpus, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def; virDomainObjPtr vm; libxl_bitmap map; @@ -2377,7 +2360,6 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned i= nt nvcpus, cleanup: VIR_FREE(bitmask); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2458,7 +2440,7 @@ libxlDomainPinVcpuFlags(virDomainPtr dom, unsigned in= t vcpu, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr targetDef =3D NULL; virBitmapPtr pcpumap =3D NULL; virDomainVcpuDefPtr vcpuinfo; @@ -2526,7 +2508,6 @@ libxlDomainPinVcpuFlags(virDomainPtr dom, unsigned in= t vcpu, cleanup: virDomainObjEndAPI(&vm); virBitmapFree(pcpumap); - virObjectUnref(cfg); return ret; } =20 @@ -2544,7 +2525,7 @@ libxlDomainGetVcpuPinInfo(virDomainPtr dom, int ncpum= aps, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm =3D NULL; virDomainDefPtr targetDef =3D NULL; int ret =3D -1; @@ -2573,7 +2554,6 @@ libxlDomainGetVcpuPinInfo(virDomainPtr dom, int ncpum= aps, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2582,7 +2562,7 @@ libxlDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr = info, int maxinfo, unsigned char *cpumaps, int maplen) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; int ret =3D -1; libxl_vcpuinfo *vcpuinfo; @@ -2634,7 +2614,6 @@ libxlDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr = info, int maxinfo, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2642,7 +2621,7 @@ static char * libxlDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virDomainDefPtr def; char *ret =3D NULL; @@ -2665,7 +2644,6 @@ libxlDomainGetXMLDesc(virDomainPtr dom, unsigned int = flags) =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2676,7 +2654,7 @@ libxlConnectDomainXMLFromNative(virConnectPtr conn, unsigned int flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def =3D NULL; g_autoptr(virConf) conf =3D NULL; char *xml =3D NULL; @@ -2715,7 +2693,6 @@ libxlConnectDomainXMLFromNative(virConnectPtr conn, =20 cleanup: virDomainDefFree(def); - virObjectUnref(cfg); return xml; } =20 @@ -2726,7 +2703,7 @@ libxlConnectDomainXMLToNative(virConnectPtr conn, con= st char * nativeFormat, unsigned int flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def =3D NULL; g_autoptr(virConf) conf =3D NULL; int len =3D MAX_CONFIG_SIZE; @@ -2765,7 +2742,6 @@ libxlConnectDomainXMLToNative(virConnectPtr conn, con= st char * nativeFormat, =20 cleanup: virDomainDefFree(def); - virObjectUnref(cfg); return ret; } =20 @@ -2845,7 +2821,7 @@ static virDomainPtr libxlDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned in= t flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def =3D NULL; virDomainObjPtr vm =3D NULL; virDomainPtr dom =3D NULL; @@ -2895,7 +2871,6 @@ libxlDomainDefineXMLFlags(virConnectPtr conn, const c= har *xml, unsigned int flag virDomainDefFree(oldDef); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return dom; } =20 @@ -2910,7 +2885,7 @@ libxlDomainUndefineFlags(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; virObjectEventPtr event =3D NULL; char *name =3D NULL; @@ -2966,7 +2941,6 @@ libxlDomainUndefineFlags(virDomainPtr dom, VIR_FREE(name); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } =20 @@ -2979,7 +2953,7 @@ libxlDomainUndefine(virDomainPtr dom) static int libxlDomainChangeEjectableMedia(virDomainObjPtr vm, virDomainDiskDefPtr di= sk) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(libxl_driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(libxl_driver= ); virDomainDiskDefPtr origdisk =3D NULL; libxl_device_disk x_disk; size_t i; @@ -3026,14 +3000,13 @@ libxlDomainChangeEjectableMedia(virDomainObjPtr vm,= virDomainDiskDefPtr disk) ret =3D 0; =20 cleanup: - virObjectUnref(cfg); return ret; } =20 static int libxlDomainAttachDeviceDiskLive(virDomainObjPtr vm, virDomainDeviceDefPtr = dev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(libxl_driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(libxl_driver= ); virDomainDiskDefPtr l_disk =3D dev->data.disk; libxl_device_disk x_disk; int ret =3D -1; @@ -3097,7 +3070,6 @@ libxlDomainAttachDeviceDiskLive(virDomainObjPtr vm, v= irDomainDeviceDefPtr dev) } =20 cleanup: - virObjectUnref(cfg); return ret; } =20 @@ -3106,7 +3078,7 @@ libxlDomainAttachHostPCIDevice(libxlDriverPrivatePtr = driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxl_device_pci pcidev; virDomainHostdevDefPtr found; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; @@ -3153,7 +3125,6 @@ libxlDomainAttachHostPCIDevice(libxlDriverPrivatePtr = driver, vm->def->name, &hostdev, 1, NULL); =20 cleanup: - virObjectUnref(cfg); libxl_device_pci_dispose(&pcidev); return ret; } @@ -3164,7 +3135,7 @@ libxlDomainAttachControllerDevice(libxlDriverPrivateP= tr driver, virDomainObjPtr vm, virDomainControllerDefPtr controller) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); const char *type =3D virDomainControllerTypeToString(controller->type); libxl_device_usbctrl usbctrl; int ret =3D -1; @@ -3208,7 +3179,6 @@ libxlDomainAttachControllerDevice(libxlDriverPrivateP= tr driver, ret =3D 0; =20 cleanup: - virObjectUnref(cfg); libxl_device_usbctrl_dispose(&usbctrl); return ret; } @@ -3218,7 +3188,7 @@ libxlDomainAttachHostUSBDevice(libxlDriverPrivatePtr = driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxl_device_usbdev usbdev; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; int ret =3D -1; @@ -3288,7 +3258,6 @@ libxlDomainAttachHostUSBDevice(libxlDriverPrivatePtr = driver, vm->def->name, &hostdev, 1); =20 cleanup: - virObjectUnref(cfg); libxl_device_usbdev_dispose(&usbdev); return ret; } @@ -3332,7 +3301,7 @@ libxlDomainAttachHostDevice(libxlDriverPrivatePtr dri= ver, static int libxlDomainDetachDeviceDiskLive(virDomainObjPtr vm, virDomainDeviceDefPtr = dev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(libxl_driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(libxl_driver= ); virDomainDiskDefPtr l_disk =3D NULL; libxl_device_disk x_disk; int idx; @@ -3385,7 +3354,6 @@ libxlDomainDetachDeviceDiskLive(virDomainObjPtr vm, v= irDomainDeviceDefPtr dev) } =20 cleanup: - virObjectUnref(cfg); return ret; } =20 @@ -3394,7 +3362,7 @@ libxlDomainAttachNetDevice(libxlDriverPrivatePtr driv= er, virDomainObjPtr vm, virDomainNetDefPtr net) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainNetType actualType; libxl_device_nic nic; int ret =3D -1; @@ -3475,7 +3443,6 @@ libxlDomainAttachNetDevice(libxlDriverPrivatePtr driv= er, virDomainNetReleaseActualDevice(conn, vm->def, net); } virObjectUnref(conn); - virObjectUnref(cfg); virErrorRestore(&save_err); return ret; } @@ -3643,7 +3610,7 @@ libxlDomainDetachHostPCIDevice(libxlDriverPrivatePtr = driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainHostdevSubsysPtr subsys =3D &hostdev->source.subsys; virDomainHostdevSubsysPCIPtr pcisrc =3D &subsys->u.pci; libxl_device_pci pcidev; @@ -3698,7 +3665,6 @@ libxlDomainDetachHostPCIDevice(libxlDriverPrivatePtr = driver, virDomainHostdevDefFree(detach); =20 cleanup: - virObjectUnref(cfg); libxl_device_pci_dispose(&pcidev); return ret; } @@ -3714,7 +3680,7 @@ libxlDomainDetachControllerDevice(libxlDriverPrivateP= tr driver, virDomainControllerDefPtr controller =3D dev->data.controller; const char *type =3D virDomainControllerTypeToString(controller->type); libxl_device_usbctrl usbctrl; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); =20 libxl_device_usbctrl_init(&usbctrl); =20 @@ -3750,7 +3716,6 @@ libxlDomainDetachControllerDevice(libxlDriverPrivateP= tr driver, =20 cleanup: virDomainControllerDefFree(detach); - virObjectUnref(cfg); libxl_device_usbctrl_dispose(&usbctrl); return ret; } @@ -3760,7 +3725,7 @@ libxlDomainDetachHostUSBDevice(libxlDriverPrivatePtr = driver, virDomainObjPtr vm, virDomainHostdevDefPtr hostdev) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainHostdevSubsysPtr subsys =3D &hostdev->source.subsys; virDomainHostdevSubsysUSBPtr usbsrc =3D &subsys->u.usb; virHostdevManagerPtr hostdev_mgr =3D driver->hostdevMgr; @@ -3818,7 +3783,6 @@ libxlDomainDetachHostUSBDevice(libxlDriverPrivatePtr = driver, =20 cleanup: virDomainHostdevDefFree(detach); - virObjectUnref(cfg); libxl_device_usbdev_dispose(&usbdev); return ret; } @@ -3861,7 +3825,7 @@ libxlDomainDetachNetDevice(libxlDriverPrivatePtr driv= er, virDomainObjPtr vm, virDomainNetDefPtr net) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); int detachidx; virDomainNetDefPtr detach =3D NULL; libxl_device_nic nic; @@ -3912,7 +3876,6 @@ libxlDomainDetachNetDevice(libxlDriverPrivatePtr driv= er, } virDomainNetRemove(vm->def, detachidx); } - virObjectUnref(cfg); virErrorRestore(&save_err); return ret; } @@ -4101,7 +4064,7 @@ libxlDomainAttachDeviceFlags(virDomainPtr dom, const = char *xml, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm =3D NULL; virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL; @@ -4173,7 +4136,6 @@ libxlDomainAttachDeviceFlags(virDomainPtr dom, const = char *xml, virDomainDefFree(vmdef); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4189,7 +4151,7 @@ libxlDomainDetachDeviceFlags(virDomainPtr dom, const = char *xml, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm =3D NULL; virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL; @@ -4263,7 +4225,6 @@ libxlDomainDetachDeviceFlags(virDomainPtr dom, const = char *xml, virDomainDefFree(vmdef); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4279,7 +4240,7 @@ libxlDomainUpdateDeviceFlags(virDomainPtr dom, const = char *xml, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm =3D NULL; virDomainDefPtr vmdef =3D NULL; virDomainDeviceDefPtr dev =3D NULL; @@ -4345,7 +4306,6 @@ libxlDomainUpdateDeviceFlags(virDomainPtr dom, const = char *xml, virDomainDefFree(vmdef); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4354,7 +4314,7 @@ libxlNodeGetFreeMemory(virConnectPtr conn) { libxl_physinfo phy_info; libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); unsigned long long ret =3D 0; =20 libxl_physinfo_init(&phy_info); @@ -4371,7 +4331,6 @@ libxlNodeGetFreeMemory(virConnectPtr conn) =20 cleanup: libxl_physinfo_dispose(&phy_info); - virObjectUnref(cfg); return ret; } =20 @@ -4385,7 +4344,7 @@ libxlNodeGetCellsFreeMemory(virConnectPtr conn, int ret =3D -1, nr_nodes =3D 0; libxl_numainfo *numa_info =3D NULL; libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); =20 if (virNodeGetCellsFreeMemoryEnsureACL(conn) < 0) goto cleanup; @@ -4419,7 +4378,6 @@ libxlNodeGetCellsFreeMemory(virConnectPtr conn, =20 cleanup: libxl_numainfo_list_free(numa_info, nr_nodes); - virObjectUnref(cfg); return ret; } =20 @@ -4484,7 +4442,7 @@ static int libxlDomainSetAutostart(virDomainPtr dom, int autostart) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; char *configFile =3D NULL, *autostartLink =3D NULL; int ret =3D -1; @@ -4548,7 +4506,6 @@ libxlDomainSetAutostart(virDomainPtr dom, int autosta= rt) VIR_FREE(configFile); VIR_FREE(autostartLink); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4556,7 +4513,7 @@ static char * libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; char * ret =3D NULL; const char *name =3D NULL; @@ -4603,7 +4560,6 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *np= arams) =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4614,7 +4570,7 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr d= om, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; libxl_domain_sched_params sc_info; libxl_scheduler sched_id; @@ -4665,7 +4621,6 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr d= om, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4683,7 +4638,7 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr d= om, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; libxl_domain_sched_params sc_info; int sched_id; @@ -4749,7 +4704,6 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr d= om, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4846,7 +4800,7 @@ libxlDomainGetNumaParameters(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainObjPtr vm; libxl_bitmap nodemap; virBitmapPtr nodes =3D NULL; @@ -4954,7 +4908,6 @@ libxlDomainGetNumaParameters(virDomainPtr dom, virBitmapFree(nodes); libxl_bitmap_dispose(&nodemap); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } #endif @@ -5061,7 +5014,7 @@ libxlDomainGetTotalCPUStats(libxlDriverPrivatePtr dri= ver, virTypedParameterPtr params, unsigned int nparams) { - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; libxl_dominfo d_info; int ret =3D -1; =20 @@ -5086,7 +5039,6 @@ libxlDomainGetTotalCPUStats(libxlDriverPrivatePtr dri= ver, =20 cleanup: libxl_dominfo_dispose(&d_info); - virObjectUnref(cfg); return ret; } =20 @@ -5101,7 +5053,7 @@ libxlDomainGetPerCPUStats(libxlDriverPrivatePtr drive= r, libxl_vcpuinfo *vcpuinfo; int maxcpu, hostcpus; size_t i; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; int ret =3D -1; =20 if (nparams =3D=3D 0 && ncpus !=3D 0) @@ -5130,7 +5082,6 @@ libxlDomainGetPerCPUStats(libxlDriverPrivatePtr drive= r, cleanup: if (vcpuinfo) libxl_vcpuinfo_list_free(vcpuinfo, maxcpu); - virObjectUnref(cfg); return ret; } =20 @@ -5182,7 +5133,7 @@ libxlDomainMemoryStats(virDomainPtr dom, unsigned int flags) { libxlDriverPrivatePtr driver =3D dom->conn->privateData; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; virDomainObjPtr vm; libxl_dominfo d_info; unsigned mem, maxmem; @@ -5226,7 +5177,6 @@ libxlDomainMemoryStats(virDomainPtr dom, cleanup: libxl_dominfo_dispose(&d_info); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -6411,7 +6361,7 @@ libxlConnectGetDomainCapabilities(virConnectPtr conn, unsigned int flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; char *ret =3D NULL; int virttype =3D VIR_DOMAIN_VIRT_XEN; virDomainCapsPtr domCaps =3D NULL; @@ -6472,7 +6422,6 @@ libxlConnectGetDomainCapabilities(virConnectPtr conn, =20 cleanup: virObjectUnref(domCaps); - virObjectUnref(cfg); return ret; } =20 @@ -6483,7 +6432,7 @@ libxlConnectCompareCPU(virConnectPtr conn, unsigned int flags) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg; + g_autoptr(libxlDriverConfig) cfg =3D NULL; int ret =3D VIR_CPU_COMPARE_ERROR; bool failIncompatible; =20 @@ -6500,7 +6449,6 @@ libxlConnectCompareCPU(virConnectPtr conn, ret =3D virCPUCompareXML(cfg->caps->host.arch, cfg->caps->host.cpu, xmlDesc, failIncompatible); =20 - virObjectUnref(cfg); return ret; } =20 diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index 11d3070935..50225855ae 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -348,7 +348,7 @@ libxlDoMigrateSrcSend(libxlDriverPrivatePtr driver, unsigned long flags, int sockfd) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); int xl_flags =3D 0; int ret; =20 @@ -363,7 +363,6 @@ libxlDoMigrateSrcSend(libxlDriverPrivatePtr driver, ret =3D -1; } =20 - virObjectUnref(cfg); return ret; } =20 @@ -388,7 +387,7 @@ libxlDomainMigrationSrcBegin(virConnectPtr conn, int *cookieoutlen) { libxlDriverPrivatePtr driver =3D conn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxlMigrationCookiePtr mig =3D NULL; virDomainDefPtr tmpdef =3D NULL; virDomainDefPtr def; @@ -438,7 +437,6 @@ libxlDomainMigrationSrcBegin(virConnectPtr conn, cleanup: libxlMigrationCookieFree(mig); virDomainDefFree(tmpdef); - virObjectUnref(cfg); return xml; } =20 @@ -447,7 +445,7 @@ libxlDomainMigrationDstPrepareDef(libxlDriverPrivatePtr= driver, const char *dom_xml, const char *dname) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); virDomainDefPtr def; char *name =3D NULL; =20 @@ -469,7 +467,6 @@ libxlDomainMigrationDstPrepareDef(libxlDriverPrivatePtr= driver, } =20 cleanup: - virObjectUnref(cfg); VIR_FREE(name); return def; } @@ -657,7 +654,7 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, unsigned int flags) { libxlDriverPrivatePtr driver =3D dconn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxlMigrationCookiePtr mig =3D NULL; virDomainObjPtr vm =3D NULL; char *hostname =3D NULL; @@ -828,7 +825,6 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, virURIFree(uri); virObjectUnref(args); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -1156,7 +1152,7 @@ libxlDomainMigrationSrcPerformP2P(libxlDriverPrivateP= tr driver, bool useParams; virConnectPtr dconn =3D NULL; virErrorPtr orig_err =3D NULL; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); =20 virObjectUnlock(vm); dconn =3D virConnectOpenAuth(dconnuri, &virConnectAuthConfig, 0); @@ -1199,7 +1195,6 @@ libxlDomainMigrationSrcPerformP2P(libxlDriverPrivateP= tr driver, virErrorPreserveLast(&orig_err); virObjectUnlock(vm); virObjectUnref(dconn); - virObjectUnref(cfg); virObjectLock(vm); virErrorRestore(&orig_err); return ret; @@ -1276,7 +1271,7 @@ libxlDomainMigrationDstFinish(virConnectPtr dconn, int cancelled) { libxlDriverPrivatePtr driver =3D dconn->privateData; - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxlDomainObjPrivatePtr priv =3D vm->privateData; virObjectEventPtr event =3D NULL; virDomainPtr dom =3D NULL; @@ -1366,7 +1361,6 @@ libxlDomainMigrationDstFinish(virConnectPtr dconn, /* EndJob for corresponding BeginJob in prepare phase */ libxlDomainObjEndJob(driver, vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return dom; } =20 @@ -1376,7 +1370,7 @@ libxlDomainMigrationSrcConfirm(libxlDriverPrivatePtr = driver, unsigned int flags, int cancelled) { - libxlDriverConfigPtr cfg =3D libxlDriverConfigGet(driver); + g_autoptr(libxlDriverConfig) cfg =3D libxlDriverConfigGet(driver); libxlDomainObjPrivatePtr priv =3D vm->privateData; virObjectEventPtr event =3D NULL; int ret =3D -1; @@ -1422,6 +1416,5 @@ libxlDomainMigrationSrcConfirm(libxlDriverPrivatePtr = driver, /* EndJob for corresponding BeginJob in begin phase */ libxlDomainObjEndJob(driver, vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index d680fe36e3..62f01909f7 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -111,7 +111,7 @@ libxlDriverPrivatePtr testXLInitDriver(void) =20 void testXLFreeDriver(libxlDriverPrivatePtr driver) { - virObjectUnref(driver->config); + g_clear_object(&driver->config); g_clear_object(&driver->xmlopt); virMutexDestroy(&driver->lock); g_free(driver); --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371154; cv=none; d=zohomail.com; s=zohoarc; b=HCtNP0SJyauzFD0YMYjsV4vXKpRwIG/HoSQrv3Kuhi1QjHqbB+q+hZH//LpWRm56wvROSbVzYOPH8dm2pfZzq3M+7w0BoLFBkzCPD8H/8m1+N3t2Gxd4XuPaD6rssuV/IQQOn31ka+A1SiFcsVlI5ZAyrk/jSPyJqKg+C1m5prA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371154; 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=gONgJJaSekUXVEXohD/yAqxAmVyC0khE0iQj5/DZgEg=; b=B3myK0j7h7Ed0BiDFvtm80XJ85Up/JLwemlc6glXk9w+7/w+kKyPH2kXEyX013JM/b/QKbDQDElboQKJ4h0oKUDUb6kIBkw+T5TAq+rwp+Dipan4rx7Q1EXGlAiHv1qfPKL/EEPFdB0HqQ/OWVXFYgU2NyrU/gJmZgNr35HNZvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371154298393.5703358027954; Wed, 13 May 2020 04:59:14 -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-36-lSdxi57_NG-kMDu9-lUXeQ-1; Wed, 13 May 2020 07:59:09 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 38B35100CCCF; Wed, 13 May 2020 11:59:04 +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 1805C76E92; Wed, 13 May 2020 11:59:04 +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 B57E64EA05; Wed, 13 May 2020 11:59:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBwwDl016345 for ; Wed, 13 May 2020 07:58:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id BE66C11921B2; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B98B611921AF for ; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A1011801009 for ; Wed, 13 May 2020 11:58:58 +0000 (UTC) Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-170-gA8UYi83PpW4KYdC9_m0bw-1; Wed, 13 May 2020 07:58:56 -0400 Received: by mail-wm1-f54.google.com with SMTP id y24so28196602wma.4 for ; Wed, 13 May 2020 04:58:55 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371153; 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=gONgJJaSekUXVEXohD/yAqxAmVyC0khE0iQj5/DZgEg=; b=hd2mqCorMmWRNa/xFBz8EnFismDcjARwPj0XMth5fCMaeIyu1l3WgOxaOdU9TR+A4gCuio 0w2saWpEwFGFIjSOg35UazUALzyFdKLU7FTTC1oHQmtjScCrauc9qmnjMr42VnV59Qmxtj rSxUkMVC/FL2GMoIBtN+to2nNo65Gjg= X-MC-Unique: lSdxi57_NG-kMDu9-lUXeQ-1 X-MC-Unique: gA8UYi83PpW4KYdC9_m0bw-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=gONgJJaSekUXVEXohD/yAqxAmVyC0khE0iQj5/DZgEg=; b=lNnbzrIbgT/DudE5MCaz6M/tl2WA5zOd8aYjk11asU3tCabF65ksJhZATo27+PQSzC v4S4b3quPdnoJFFw4rTcOl5X5tOgGpa7t2/deZJFl04URKJC58IUU9Z11oLXl8/fBw3V j3LdLTSj8RbaN1VPrAMLkgZc+OCJpKv1Ta3CgUaLEhxhISt0kkAkbIV78nwckUbF1Kkg YosH92CyV5Ybfef1YnF4FC/39wYbY2EFnbvgLgDM+hgtmyGJqqAoY6xUZxeVYIj7qBCM TojgnX+Cf3/4DCea/xi/LJyuOXYdQzunoENXuzTAqkX6vUIz6U6Ocn0mdfTfcKuZHZYz 0sgg== X-Gm-Message-State: AGi0Puaklv/YKtqg5O2+yD/0DxqVpyrXBnjuymgVCKoX/Q0aROpu6U6f L92gx2KC7jhlLne0gglOW+Vmdkwf X-Google-Smtp-Source: APiQypKuXDXPsoZkMSTQD7ZDhDFhQEkBmBpIt7wpwJHOs9c5FvUD3XByQaUtyD9lVudXTKAuTJLzSA== X-Received: by 2002:a7b:c5d3:: with SMTP id n19mr35444386wmk.21.1589371134349; Wed, 13 May 2020 04:58:54 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 34/40] hypervisor: convert virHostdevManager to GObject Date: Wed, 13 May 2020 13:57:18 +0200 Message-Id: <20200513115724.157687-35-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.11 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 | 31 +++++++++++++++++++++---------- 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, 33 insertions(+), 17 deletions(-) diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c index 9017cc3be8..83298e7674 100644 --- a/src/hypervisor/virhostdev.c +++ b/src/hypervisor/virhostdev.c @@ -44,8 +44,21 @@ 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 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->finalize =3D virHostdevManagerFinalize; +} + static virHostdevManagerPtr virHostdevManagerNew(void); =20 struct virHostdevIsPCINodeDeviceUsedData { @@ -112,9 +125,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,9 +134,9 @@ static int virHostdevManagerOnceInit(void) VIR_ONCE_GLOBAL_INIT(virHostdevManager); =20 static void -virHostdevManagerDispose(void *obj) +virHostdevManagerFinalize(GObject *obj) { - virHostdevManagerPtr hostdevMgr =3D obj; + virHostdevManagerPtr hostdevMgr =3D VIR_HOSTDEV_MANAGER(obj); =20 virObjectUnref(hostdevMgr->activePCIHostdevs); virObjectUnref(hostdevMgr->inactivePCIHostdevs); @@ -136,6 +146,8 @@ virHostdevManagerDispose(void *obj) virObjectUnref(hostdevMgr->activeMediatedHostdevs); virObjectUnref(hostdevMgr->activeNVMeHostdevs); VIR_FREE(hostdevMgr->stateDir); + + G_OBJECT_CLASS(vir_hostdev_manager_parent_class)->finalize(obj); } =20 static virHostdevManagerPtr @@ -144,8 +156,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 +217,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 6c4a174096..54d99ebffc 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 9c40daaec9..e0422d594e 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1604,7 +1604,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 e6874491e6..5e87b2cb28 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.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371153; cv=none; d=zohomail.com; s=zohoarc; b=KQz64tLwgrnkSEmvHREkgPTLsFtwk4RRdhhW35ugW7ay1jk1FlB3ax/H/VPqEKHKILxv1CjpjbWkjBUXps2oELmCFK5F+TxbowCxc8bYuNAj7AIJYo0Rea2L7CZgqH4j8GAomE9a/Q26udvGf+9L0HqvvYM8s3ER1CoaHU9iEds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371153; 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=AL3xXyxIk+01q0xTZrGcitJijKAgx6EkHqaMNMg0KoE=; b=ciVKRENhB2TJF6jhYDS2/f4jKttk74KYTLkogufCVjWrnh6NyTD8vVATXL8WrkIV0dgAhZH2A7co2rHIYl01YFccmjNo/H8jaf9eYCH9CLemp8B+5xC3/axBsbvM2phNg3KTkt8PkbagXpx9U98EMIgh17hW7wLJ912lsoHhy3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371153165999.4293859553685; Wed, 13 May 2020 04:59:13 -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-299-UhKYEMmKNqOeYw4Au3PCxA-1; Wed, 13 May 2020 07:59:10 -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 7D2162E94; Wed, 13 May 2020 11:59:04 +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 17BDD5D9FC; Wed, 13 May 2020 11:59:04 +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 C65F24EA06; Wed, 13 May 2020 11:59:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx1sc016388 for ; Wed, 13 May 2020 07:59:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id A8E932014DFA; Wed, 13 May 2020 11:59:01 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A416C202696C for ; Wed, 13 May 2020 11:59:00 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E236D1859162 for ; Wed, 13 May 2020 11:58:59 +0000 (UTC) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-461-JS17q5GaO2yvQ7ri6z3ZQQ-1; Wed, 13 May 2020 07:58:57 -0400 Received: by mail-wr1-f41.google.com with SMTP id s8so20551465wrt.9 for ; Wed, 13 May 2020 04:58:57 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371152; 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=AL3xXyxIk+01q0xTZrGcitJijKAgx6EkHqaMNMg0KoE=; b=G3m5tOpOqGEN8ful+ESdDf1IxQ8IK/NafWIGz5pGmNlFiyqIVq9D7D7b7+vXdZu8rAD8y/ I/b0FZiVIp5vJAm92RV/xyhmoraMmB8udS2wwXlEzn45XI+Ps6sqrE/mt5o0tOiUR4tFoF 7rl/Mlm6lRfeOE9lE5jK8RXCek15TU0= X-MC-Unique: UhKYEMmKNqOeYw4Au3PCxA-1 X-MC-Unique: JS17q5GaO2yvQ7ri6z3ZQQ-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=AL3xXyxIk+01q0xTZrGcitJijKAgx6EkHqaMNMg0KoE=; b=nBmMsFK64BAZHtO5Yr0zRsh2n/cnaJ2UMHBiuuoti23/4Attrp+IRODnoa3YUGQSo1 3MvwH5cKtx42dJtPDwtBQ3evFKeBem8RCr9sSPS33ZeEFlU0Lyrm70MOtgTachWxE3f1 /6O66u1iuM50zpx5e36Rzo0+w1saX7PGI6EqfuFUeocKi80brt+b4s55epP0UiQ0fO97 +SsqQzOXyDHVhBiN2a/6bXHiN+uV7buzmiXZMc/owat1B7XL16iCrr0BfECr/huqxw83 pLlL0+p929ZMQ8Uk7JcQQ/SWrhM17WC5VutH2+EO2WI4n/lVm73++XAl87ZxmXwWcUVm bBCQ== X-Gm-Message-State: AGi0PuY2uWXDyVfm8+H+qezpwPmeoODTDT1FV/DweCLQ7GQI5beHfV/C VSbgdP/0IZ81eZdjTdf+tRR6k+E+ X-Google-Smtp-Source: APiQypL8xBEpfQzp5SR4oMEv4AwRxa3hdnQULOgRUO7iA21XymCLmQGCl6HCme/MtCL7mDCWZ/qc4Q== X-Received: by 2002:a5d:6907:: with SMTP id t7mr27373335wru.321.1589371135651; Wed, 13 May 2020 04:58:55 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 35/40] libxl: convert libxlMigrationDstArgs to GObject Date: Wed, 13 May 2020 13:57:19 +0200 Message-Id: <20200513115724.157687-36-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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/libxl/libxl_migration.c | 65 +++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index 50225855ae..678d850cf6 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -60,7 +60,7 @@ struct _libxlMigrationCookie { }; =20 typedef struct _libxlMigrationDstArgs { - virObject parent; + GObject parent; =20 int recvfd; virConnectPtr conn; @@ -73,7 +73,28 @@ typedef struct _libxlMigrationDstArgs { size_t nsocks; } libxlMigrationDstArgs; =20 -static virClassPtr libxlMigrationDstArgsClass; +G_DEFINE_TYPE(libxlMigrationDstArgs, libxl_migration_dst_args, G_TYPE_OBJE= CT); +#define LIBXL_TYPE_MIGRATION_DST_ARGS libxl_migration_dst_args_get_type() +G_DECLARE_FINAL_TYPE(libxlMigrationDstArgs, + libxl_migration_dst_args, + LIBXL, + MIGRATION_DST_ARGS, + GObject); + +static void libxlMigrationDstArgsFinalize(GObject *obj); + +static void +libxl_migration_dst_args_init(lixlMigrationDstArgs *args G_GNUC_UNUSED) +{ +} + +static void +libxl_migration_dst_args_class_init(lixlMigrationDstArgsClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D libxlMigrationDstArgsFinalize; +} =20 =20 static void @@ -226,31 +247,23 @@ libxlMigrationEatCookie(const char *cookiein, } =20 static void -libxlMigrationDstArgsDispose(void *obj) +libxlMigrationDstArgsFinalize(GObject *obj) { - libxlMigrationDstArgs *args =3D obj; + libxlMigrationDstArgs *args =3D LIBXL_MIGRATION_DST_ARGS(obj); =20 libxlMigrationCookieFree(args->migcookie); VIR_FREE(args->socks); virObjectUnref(args->conn); virObjectUnref(args->vm); -} =20 -static int -libxlMigrationDstArgsOnceInit(void) -{ - if (!VIR_CLASS_NEW(libxlMigrationDstArgs, virClassForObject())) - return -1; - - return 0; + G_OBJECT_CLASS(libxl_migration_dst_args_parent_class)->finalize(obj); } =20 -VIR_ONCE_GLOBAL_INIT(libxlMigrationDstArgs); =20 static void libxlDoMigrateDstReceive(void *opaque) { - libxlMigrationDstArgs *args =3D opaque; + g_autoptr(libxlMigrationDstArgs) args =3D LIBXL_MIGRATION_DST_ARGS(opa= que); virDomainObjPtr vm =3D args->vm; virNetSocketPtr *socks =3D args->socks; size_t nsocks =3D args->nsocks; @@ -277,7 +290,6 @@ libxlDoMigrateDstReceive(void *opaque) } args->nsocks =3D 0; VIR_FORCE_CLOSE(recvfd); - virObjectUnref(args); virDomainObjEndAPI(&vm); } =20 @@ -287,7 +299,7 @@ libxlMigrateDstReceive(virNetSocketPtr sock, int events G_GNUC_UNUSED, void *opaque) { - libxlMigrationDstArgs *args =3D opaque; + g_autoptr(libxlMigrationDstArgs) args =3D LIBXL_MIGRATION_DST_ARGS(opa= que); virNetSocketPtr *socks =3D args->socks; size_t nsocks =3D args->nsocks; libxlDomainObjPrivatePtr priv =3D args->vm->privateData; @@ -321,7 +333,7 @@ libxlMigrateDstReceive(virNetSocketPtr sock, libxlDoMigrateDstReceive, name, false, - args) < 0) { + g_object_ref(args)) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Failed to create thread for receiving migration = data")); goto fail; @@ -339,7 +351,6 @@ libxlMigrateDstReceive(virNetSocketPtr sock, } args->nsocks =3D 0; VIR_FORCE_CLOSE(recvfd); - virObjectUnref(args); } =20 static int @@ -551,7 +562,7 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dco= nn, libxlMigrationCookiePtr mig =3D NULL; libxlDriverPrivatePtr driver =3D dconn->privateData; virDomainObjPtr vm =3D NULL; - libxlMigrationDstArgs *args =3D NULL; + g_autoptr(libxlMigrationDstArgs) args =3D NULL; bool taint_hook =3D false; libxlDomainObjPrivatePtr priv =3D NULL; char *xmlout =3D NULL; @@ -600,8 +611,8 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dco= nn, if (libxlMigrationDstArgsInitialize() < 0) goto endjob; =20 - if (!(args =3D virObjectNew(libxlMigrationDstArgsClass))) - goto endjob; + args =3D LIBXL_MIGRATION_DST_ARGS( + g_object_new(LIBXL_TYPE_MIGRATION_DST_ARGS, NULL)); =20 args->conn =3D virObjectRef(dconn); args->vm =3D virObjectRef(vm); @@ -618,7 +629,7 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dco= nn, name =3D g_strdup_printf("mig-%s", args->vm->def->name); if (virThreadCreateFull(priv->migrationDstReceiveThr, true, libxlDoMigrateDstReceive, - name, false, args) < 0) { + name, false, g_object_ref(args)) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Failed to create thread for receiving migration = data")); goto endjob; @@ -634,7 +645,6 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dco= nn, libxlMigrationCookieFree(mig); VIR_FORCE_CLOSE(dataFD[1]); VIR_FORCE_CLOSE(dataFD[0]); - virObjectUnref(args); /* Remove virDomainObj from domain list */ if (vm) virDomainObjListRemove(driver->domains, vm); @@ -665,7 +675,7 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, virNetSocketPtr *socks =3D NULL; size_t nsocks =3D 0; int nsocks_listen =3D 0; - libxlMigrationDstArgs *args =3D NULL; + g_autoptr(libxlMigrationDstArgs) args =3D NULL; bool taint_hook =3D false; libxlDomainObjPrivatePtr priv =3D NULL; size_t i; @@ -765,8 +775,8 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, if (libxlMigrationDstArgsInitialize() < 0) goto endjob; =20 - if (!(args =3D virObjectNew(libxlMigrationDstArgsClass))) - goto endjob; + args =3D LIBXL_MIGRATION_DST_ARGS( + g_object_new(LIBXL_TYPE_MIGRATION_DST_ARGS, NULL)); =20 args->conn =3D virObjectRef(dconn); args->vm =3D virObjectRef(vm); @@ -786,7 +796,7 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, if (virNetSocketAddIOCallback(socks[i], VIR_EVENT_HANDLE_READABLE, libxlMigrateDstReceive, - virObjectRef(args), + g_object_ref(args), NULL) < 0) continue; =20 @@ -823,7 +833,6 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, VIR_FREE(hostname); else virURIFree(uri); - virObjectUnref(args); virDomainObjEndAPI(&vm); return ret; } --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371157; cv=none; d=zohomail.com; s=zohoarc; b=jzNQs6QCeQm7O6WRFc2UpxMt22iDTn7lauX4N/eIRtjas8VvBjBx8hlKgi4n2GG83+uHpG7vU+t36KhmeG1gJfOvU/7eLvSZEgItozupb659biupSYqVoUx722B/LxZ2/obVtKpycumVIIACFmmIb1jiKgpDkYupd5t5vXE9EGI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371157; 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=K1yJhcWZu214MO9YL/ACMlfaJug9MJ7/27dvd9+pHSQ=; b=OhtvZARhRNBnubP9iC1nouc2cH3AF/knPEv5wMtO8V4Vo6wlRn3RRvMN8RKkb0Pk3zbyQp/Emre9lZI3NhUE9D2z+ZnMBWOSWTXvWfLwjGg6OW9aJZ1ghgDP0/ncTzKGveNFY9iCY1xEFMg5m2n9rb4/45mHliQS+WRwhC0ZszQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371157577815.0084625844507; Wed, 13 May 2020 04:59:17 -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-190-OCYa-5GPMg6Rf3-RToqfJw-1; Wed, 13 May 2020 07:59:12 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8362B18FF683; Wed, 13 May 2020 11:59:05 +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 5E4E0341FD; Wed, 13 May 2020 11:59:05 +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 2E759180531F; Wed, 13 May 2020 11:59:05 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx1h5016376 for ; Wed, 13 May 2020 07:59:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id 00FFC114D07; Wed, 13 May 2020 11:59:01 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F015611515B for ; Wed, 13 May 2020 11:59:00 +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-mx02.redhat.com (Postfix) with ESMTPS id D31A7916114 for ; Wed, 13 May 2020 11:59:00 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-198-GfITUeM0OJ6odHkejVZZGg-1; Wed, 13 May 2020 07:58:58 -0400 Received: by mail-wr1-f65.google.com with SMTP id h17so11645263wrc.8 for ; Wed, 13 May 2020 04:58:58 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371156; 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=K1yJhcWZu214MO9YL/ACMlfaJug9MJ7/27dvd9+pHSQ=; b=XF+LfqcIBTxF4HIMLYOdFG5vJO7/82y0o9BDNq4SJ/Vu0GpCmqzYUEQC2UEtDtyukHJKjk UjN7+IOqWxKTi8tdXXJwrTcuKpaUZF/DsOwp9+1gsOitl8ySqxtBf5XusA9YIhzaTH57p+ KdC8f1skucy/+XaY6d+DQC+My65Ept8= X-MC-Unique: OCYa-5GPMg6Rf3-RToqfJw-1 X-MC-Unique: GfITUeM0OJ6odHkejVZZGg-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=K1yJhcWZu214MO9YL/ACMlfaJug9MJ7/27dvd9+pHSQ=; b=VdoPr/DXLNP09i40ecRr/kuReiWIqWhAjieii3qn6sw1vPSQ6zJq7XbYZbRP7gzbn6 qi4OIrPnoANw4FEQElm3heEu6bGMiUmkl1cPDhqKuVRXT1Ltd6Q1hGdOpn7nUg5wqDPT YB3MGJ01BkaRzPkQdsqUAiL3DEPglKBOszZrXyMbzKRIyZIH8QHUK860nCAWGdLxj75z GozEpOke1fOd/ASr1PcBDFMiVl071tiH7acCaxnJaXNVhlc2jwDvRu+qMCIIX/IkGTTt 6DiRYNuQazfUbxPOcR8SBbxEcBoM4mSRzmjJaiWIGOXUUStqsaQimhipMYNfuU2UonZd 1/0A== X-Gm-Message-State: AGi0PuYRXL9KKXP+S9aKgihc82WAb8b57CGush2MPvbiucillmbdekmN TRikAdqZN/EHbRfb/hEKJcjjtuFH X-Google-Smtp-Source: APiQypJnXHpD+i3PQEpj8a24H3k38Mv7lxLRwVZa4NxKhlSrZH1J/qz8XcX38EsysnO+CslQ9hRNOg== X-Received: by 2002:adf:dc50:: with SMTP id m16mr30875974wrj.329.1589371136970; Wed, 13 May 2020 04:58:56 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 36/40] qemu: convert qemuBlockJobData to GObject Date: Wed, 13 May 2020 13:57:20 +0200 Message-Id: <20200513115724.157687-37-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.84 on 10.5.11.23 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/qemu/qemu_blockjob.c | 55 ++++++++++++++++++--------------------- src/qemu/qemu_blockjob.h | 15 +++++++---- src/qemu/qemu_domain.c | 4 +-- src/qemu/qemu_hotplug.c | 3 +-- src/qemu/qemu_migration.c | 16 +++--------- 5 files changed, 43 insertions(+), 50 deletions(-) diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index e51499532f..671bfad19b 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -71,8 +71,21 @@ VIR_ENUM_IMPL(qemuBlockjob, "create", "broken"); =20 -static virClassPtr qemuBlockJobDataClass; +G_DEFINE_TYPE(qemuBlockJobData, qemu_block_job_data, G_TYPE_OBJECT); +static void qemuBlockJobDataFinalize(GObject *obj); =20 +static void +qemu_block_job_data_init(qemuBlockJobData *job G_GNUC_UNUSED) +{ +} + +static void +qemu_block_job_data_class_init(qemuBlockJobDataClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D qemuBlockJobDataFinalize; +} =20 static void qemuBlockJobDataDisposeJobdata(qemuBlockJobDataPtr job) @@ -88,9 +101,9 @@ qemuBlockJobDataDisposeJobdata(qemuBlockJobDataPtr job) =20 =20 static void -qemuBlockJobDataDispose(void *obj) +qemuBlockJobDataFinalize(GObject *obj) { - qemuBlockJobDataPtr job =3D obj; + qemuBlockJobDataPtr job =3D QEMU_BLOCK_JOB_DATA(obj); =20 virObjectUnref(job->chain); virObjectUnref(job->mirrorChain); @@ -99,32 +112,17 @@ qemuBlockJobDataDispose(void *obj) =20 g_free(job->name); g_free(job->errmsg); -} =20 - -static int -qemuBlockJobDataOnceInit(void) -{ - if (!VIR_CLASS_NEW(qemuBlockJobData, virClassForObject())) - return -1; - - return 0; + G_OBJECT_CLASS(qemu_block_job_data_parent_class)->finalize(obj); } =20 =20 -VIR_ONCE_GLOBAL_INIT(qemuBlockJobData); - qemuBlockJobDataPtr qemuBlockJobDataNew(qemuBlockJobType type, const char *name) { - g_autoptr(qemuBlockJobData) job =3D NULL; - - if (qemuBlockJobDataInitialize() < 0) - return NULL; - - if (!(job =3D virObjectNew(qemuBlockJobDataClass))) - return NULL; + g_autoptr(qemuBlockJobData) job =3D + QEMU_BLOCK_JOB_DATA(g_object_new(QEMU_TYPE_BLOCK_JOB_DATA, NULL)); =20 job->name =3D g_strdup(name); =20 @@ -180,15 +178,15 @@ qemuBlockJobRegister(qemuBlockJobDataPtr job, return -1; } =20 - if (virHashAddEntry(priv->blockjobs, job->name, virObjectRef(job)) < 0= ) { - virObjectUnref(job); + if (virHashAddEntry(priv->blockjobs, job->name, g_object_ref(job)) < 0= ) { + g_object_unref(job); return -1; } =20 if (disk) { job->disk =3D disk; job->chain =3D virObjectRef(disk->src); - QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob =3D virObjectRef(job); + QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob =3D g_object_ref(job); } =20 if (savestatus) @@ -209,8 +207,7 @@ qemuBlockJobUnregister(qemuBlockJobDataPtr job, diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(job->disk); =20 if (job =3D=3D diskPriv->blockjob) { - virObjectUnref(diskPriv->blockjob); - diskPriv->blockjob =3D NULL; + g_clear_object(&diskPriv->blockjob); } =20 job->disk =3D NULL; @@ -427,7 +424,7 @@ qemuBlockJobDiskGetJob(virDomainDiskDefPtr disk) if (!job) return NULL; =20 - return virObjectRef(job); + return g_object_ref(job); } =20 =20 @@ -466,7 +463,7 @@ qemuBlockJobStartupFinalize(virDomainObjPtr vm, if (job->state =3D=3D QEMU_BLOCKJOB_STATE_NEW) qemuBlockJobUnregister(job, vm); =20 - virObjectUnref(job); + g_object_unref(job); } =20 =20 @@ -1743,7 +1740,7 @@ qemuBlockJobGetByDisk(virDomainDiskDefPtr disk) if (!job) return NULL; =20 - return virObjectRef(job); + return g_object_ref(job); } =20 =20 diff --git a/src/qemu/qemu_blockjob.h b/src/qemu/qemu_blockjob.h index 19498b5bd8..fc36131c67 100644 --- a/src/qemu/qemu_blockjob.h +++ b/src/qemu/qemu_blockjob.h @@ -23,6 +23,7 @@ =20 #include "internal.h" #include "qemu_conf.h" +#include =20 /** * This enum has to map all known block job states from enum virDomainBloc= kJobType @@ -119,11 +120,8 @@ struct _qemuBlockJobBackupData { }; =20 =20 -typedef struct _qemuBlockJobData qemuBlockJobData; -typedef qemuBlockJobData *qemuBlockJobDataPtr; - struct _qemuBlockJobData { - virObject parent; + GObject parent; =20 char *name; =20 @@ -154,7 +152,14 @@ struct _qemuBlockJobData { bool invalidData; /* the job data (except name) is not valid */ bool reconnected; /* internal field for tracking whether job is live a= fter reconnect to qemu */ }; -G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuBlockJobData, virObjectUnref); + +#define QEMU_TYPE_BLOCK_JOB_DATA qemu_block_job_data_get_type() +G_DECLARE_FINAL_TYPE(qemuBlockJobData, + qemu_block_job_data, + QEMU, + BLOCK_JOB_DATA, + GObject); +typedef qemuBlockJobData *qemuBlockJobDataPtr; =20 int qemuBlockJobRegister(qemuBlockJobDataPtr job, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 41dfba5597..e422db80a5 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1190,7 +1190,7 @@ qemuDomainDiskPrivateDispose(void *obj) virObjectUnref(priv->migrSource); VIR_FREE(priv->qomName); VIR_FREE(priv->nodeCopyOnRead); - virObjectUnref(priv->blockjob); + g_clear_object(&priv->blockjob); } =20 static virClassPtr qemuDomainStorageSourcePrivateClass; @@ -2239,7 +2239,7 @@ qemuDomainObjPrivateAlloc(void *opaque) if (!(priv->devs =3D virChrdevAlloc())) goto error; =20 - if (!(priv->blockjobs =3D virHashCreate(5, virObjectFreeHashData))) + if (!(priv->blockjobs =3D virHashCreate(5, g_object_unref))) goto error; =20 /* agent commands block by default, user can choose different behavior= */ diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index ab5a7aef84..1826c4f997 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4277,8 +4277,7 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver, if (diskPriv->blockjob) { /* the block job keeps reference to the disk chain */ diskPriv->blockjob->disk =3D NULL; - virObjectUnref(diskPriv->blockjob); - diskPriv->blockjob =3D NULL; + g_clear_object(&diskPriv->blockjob); } else { if (!(diskBackend =3D qemuBlockStorageSourceChainDetachPrepare= Blockdev(disk->src))) goto cleanup; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 26e8d067ea..64897d0aa2 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -512,7 +512,7 @@ qemuMigrationSrcNBDStorageCopyReady(virDomainObjPtr vm, for (i =3D 0; i < vm->def->ndisks; i++) { virDomainDiskDefPtr disk =3D vm->def->disks[i]; qemuDomainDiskPrivatePtr diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(dis= k); - qemuBlockJobDataPtr job; + g_autoptr(qemuBlockJobData) job =3D NULL; =20 if (!diskPriv->migrating) continue; @@ -526,12 +526,9 @@ qemuMigrationSrcNBDStorageCopyReady(virDomainObjPtr vm, qemuBlockJobUpdate(vm, job, asyncJob); if (job->state =3D=3D VIR_DOMAIN_BLOCK_JOB_FAILED) { qemuMigrationNBDReportMirrorError(job, disk->dst); - virObjectUnref(job); return -1; } =20 - virObjectUnref(job); - if (disk->mirrorState !=3D VIR_DOMAIN_DISK_MIRROR_STATE_READY) notReady++; } @@ -570,7 +567,7 @@ qemuMigrationSrcNBDCopyCancelled(virDomainObjPtr vm, for (i =3D 0; i < vm->def->ndisks; i++) { virDomainDiskDefPtr disk =3D vm->def->disks[i]; qemuDomainDiskPrivatePtr diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(dis= k); - qemuBlockJobDataPtr job; + g_autoptr(qemuBlockJobData) job =3D NULL; =20 if (!diskPriv->migrating) continue; @@ -597,8 +594,6 @@ qemuMigrationSrcNBDCopyCancelled(virDomainObjPtr vm, =20 if (job->state =3D=3D VIR_DOMAIN_BLOCK_JOB_COMPLETED) completed++; - - virObjectUnref(job); } =20 /* Updating completed block job drops the lock thus we have to recheck @@ -704,14 +699,13 @@ qemuMigrationSrcNBDCopyCancel(virQEMUDriverPtr driver, for (i =3D 0; i < vm->def->ndisks; i++) { virDomainDiskDefPtr disk =3D vm->def->disks[i]; qemuDomainDiskPrivatePtr diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(dis= k); - qemuBlockJobDataPtr job; + g_autoptr(qemuBlockJobData) job =3D NULL; =20 if (!(job =3D qemuBlockJobDiskGetJob(disk)) || !qemuBlockJobIsRunning(job)) diskPriv->migrating =3D false; =20 if (!diskPriv->migrating) { - virObjectUnref(job); continue; } =20 @@ -726,8 +720,6 @@ qemuMigrationSrcNBDCopyCancel(virQEMUDriverPtr driver, qemuBlockJobSyncEnd(vm, job, asyncJob); diskPriv->migrating =3D false; } - - virObjectUnref(job); } =20 while ((rv =3D qemuMigrationSrcNBDCopyCancelled(vm, asyncJob, check)) = !=3D 1) { @@ -5435,7 +5427,7 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver, storage =3D true; } =20 - virObjectUnref(job); + g_clear_object(&job); } =20 if (storage && --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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=1589371156; cv=none; d=zohomail.com; s=zohoarc; b=Y0q47vsxRuet+TQbatRhmHpR7vTOcDOvwV7ULbjDxxR8sNOPCd6CehGbTIiexgZCWEiW68j9U82Kh1qb34K+cPQQ8cla/OsxWcNcHHhcUp4LAfnKsxC60jF0bSYlypBHmylS2EcIPQTl/57yby2OiR+qVQhzOhVDQ9ih/Nt9ib4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371156; 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=9v0XFn3aBLsT/C3MdSc5n5AoF3RQBEiHX54pC9+p4vg=; b=GbNE88ZnKjmsEVlzJSU1qtNd5gL/yCCZyNPPceK4i/JFqLoS5xncSDKfNb0kivsp9IBK+w3HtEapQDANS8E8UYhSCATX80X45w6S4R2OZ2ciESZ5B9Uq1vKNSLdFxo92oop9FoHt0tDC/A9WkyRDZ3RnoHYlluj2lPOxBcjScjc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 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-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1589371156678894.9261822655075; Wed, 13 May 2020 04:59:16 -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-350-92dFWMqBNViASbsdwMMSiA-1; Wed, 13 May 2020 07:59:13 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id E537D108BD1F; Wed, 13 May 2020 11:59:07 +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 C1B157D94A; Wed, 13 May 2020 11:59:07 +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 8EDA91804768; Wed, 13 May 2020 11:59:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx32u016407 for ; Wed, 13 May 2020 07:59:03 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4217E110EB4; Wed, 13 May 2020 11:59:03 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3C9B411515B for ; Wed, 13 May 2020 11:59:03 +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-mx02.redhat.com (Postfix) with ESMTPS id 231E080CDB0 for ; Wed, 13 May 2020 11:59:03 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-70-ixZ-2MNTMoS2p8j_2UeftQ-1; Wed, 13 May 2020 07:59:01 -0400 Received: by mail-wr1-f65.google.com with SMTP id y16so13373601wrs.3 for ; Wed, 13 May 2020 04:58:59 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371155; 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=9v0XFn3aBLsT/C3MdSc5n5AoF3RQBEiHX54pC9+p4vg=; b=KbirmCxvCoM/AsCpnQ+PgbIPL3b6yXk7dfX/z+T9t9cvAMFKU6xReIoDaX31PpMr57Oa7c dgq+EbvStr7eJKhqxhO5lhMQmG5b0XIzM8MMUyW8Yr1QhnPIIBmhxg5SpG3HkocW3miDk8 LaakoU5wQ9Ps+tG9D2OPg+l//XgvaII= X-MC-Unique: 92dFWMqBNViASbsdwMMSiA-1 X-MC-Unique: ixZ-2MNTMoS2p8j_2UeftQ-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=9v0XFn3aBLsT/C3MdSc5n5AoF3RQBEiHX54pC9+p4vg=; b=FNWVlgzuOBzsVqCMbAPL5uQ4qAaBaFCnZfc18wufUZONoTKPRhXeNmNx2alobpTBuA urHs7P5I35AFqqBgb+vq+VoM6CyveXF2hEtBZlhBDrKa4eskdiXeVpmxnhryBzeS5CsE iIDqYxJUgc+AKuoyUJYYR/bbph7UZSkwGZeBEqe/hMMnfMb63BCLTJBpkaRQS7SBXwwX sX1/P0oopXOHX0pXzi7iki/DainCUH1csk1crOT9nqHeSiFs97IbqaGxUZpgJDqqWSPL u1XoFT//T8zWQm0u0mamXkgvou+It2hjLuux0PJ6HaVYOwEXURMTcNIePmp7iWKMJthA VKWQ== X-Gm-Message-State: AGi0PuamGHZQ8r6mlWyqN1lEwx3SbDOgKORcPHf8J/D4KJqWXI1Zlz7o nV//sn9Yo6j2V5YudFQ2k6MEaq+b X-Google-Smtp-Source: APiQypK+QGv7ksPCfeHRUxwkHJsB/kR+HXDH+6jFhSagkRwqkOfMoEnDCs46K664YU1cvPoXGClfug== X-Received: by 2002:a5d:560c:: with SMTP id l12mr30035036wrv.309.1589371138286; Wed, 13 May 2020 04:58:58 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 37/40] qemu: convert virQEMUDriverConfig to GObject Date: Wed, 13 May 2020 13:57:21 +0200 Message-Id: <20200513115724.157687-38-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.13 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/qemu/qemu_conf.c | 36 ++++++++++++++++++------------------ src/qemu/qemu_conf.h | 19 ++++++++++++------- src/qemu/qemu_driver.c | 2 +- tests/domaincapstest.c | 2 +- tests/testutilsqemu.c | 2 +- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f9bafebf46..37a0a4606f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -69,18 +69,21 @@ VIR_LOG_INIT("qemu.qemu_conf"); #define QEMU_MIGRATION_PORT_MIN 49152 #define QEMU_MIGRATION_PORT_MAX 49215 =20 -static virClassPtr virQEMUDriverConfigClass; -static void virQEMUDriverConfigDispose(void *obj); +G_DEFINE_TYPE(virQEMUDriverConfig, vir_qemu_driver_config, G_TYPE_OBJECT); +static void virQEMUDriverConfigFinalize(GObject *obj); =20 -static int virQEMUConfigOnceInit(void) +static void +vir_qemu_driver_config_init(virQEMUDriverConfig *cfg G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(virQEMUDriverConfig, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(virQEMUConfig); +static void +vir_qemu_driver_config_class_init(virQEMUDriverConfigClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virQEMUDriverConfigFinalize; +} =20 =20 static void @@ -106,13 +109,8 @@ qemuDriverUnlock(virQEMUDriverPtr driver) virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged, const char *root) { - g_autoptr(virQEMUDriverConfig) cfg =3D NULL; - - if (virQEMUConfigInitialize() < 0) - return NULL; - - if (!(cfg =3D virObjectNew(virQEMUDriverConfigClass))) - return NULL; + g_autoptr(virQEMUDriverConfig) cfg =3D + VIR_QEMU_DRIVER_CONFIG(g_object_new(VIR_TYPE_QEMU_DRIVER_CONFIG, N= ULL)); =20 if (root) { cfg->uri =3D g_strdup_printf("qemu:///embed?root=3D%s", root); @@ -294,9 +292,9 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool priv= ileged, } =20 =20 -static void virQEMUDriverConfigDispose(void *obj) +static void virQEMUDriverConfigFinalize(GObject *obj) { - virQEMUDriverConfigPtr cfg =3D obj; + virQEMUDriverConfigPtr cfg =3D VIR_QEMU_DRIVER_CONFIG(obj); =20 virBitmapFree(cfg->namespaces); =20 @@ -369,6 +367,8 @@ static void virQEMUDriverConfigDispose(void *obj) VIR_FREE(cfg->swtpmStorageDir); =20 virStringListFree(cfg->capabilityfilters); + + G_OBJECT_CLASS(vir_qemu_driver_config_parent_class)->finalize(obj); } =20 =20 @@ -1229,7 +1229,7 @@ virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMU= DriverPtr driver) { virQEMUDriverConfigPtr conf; qemuDriverLock(driver); - conf =3D virObjectRef(driver->config); + conf =3D g_object_ref(driver->config); qemuDriverUnlock(driver); return conf; } diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index b9ef4551a3..0a07188962 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -48,15 +48,13 @@ #include "virfile.h" #include "virfilecache.h" #include "virfirmware.h" +#include =20 #define QEMU_DRIVER_NAME "QEMU" =20 typedef struct _virQEMUDriver virQEMUDriver; typedef virQEMUDriver *virQEMUDriverPtr; =20 -typedef struct _virQEMUDriverConfig virQEMUDriverConfig; -typedef virQEMUDriverConfig *virQEMUDriverConfigPtr; - /* Main driver config. The data in these object * instances is immutable, so can be accessed * without locking. Threads must, however, hold @@ -65,15 +63,15 @@ typedef virQEMUDriverConfig *virQEMUDriverConfigPtr; * * eg * qemuDriverLock(driver); - * virQEMUDriverConfigPtr cfg =3D virObjectRef(driver->config); + * virQEMUDriverConfigPtr cfg =3D g_object_ref(driver->config); * qemuDriverUnlock(driver); * * ...do stuff with 'cfg'.. * - * virObjectUnref(cfg); + * g_object_unref(cfg); */ struct _virQEMUDriverConfig { - virObject parent; + GObject parent; =20 char *uri; =20 @@ -220,7 +218,14 @@ struct _virQEMUDriverConfig { char **capabilityfilters; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUDriverConfig, virObjectUnref); +#define VIR_TYPE_QEMU_DRIVER_CONFIG vir_qemu_driver_config_get_type() +G_DECLARE_FINAL_TYPE(virQEMUDriverConfig, + vir_qemu_driver_config, + VIR, + QEMU_DRIVER_CONFIG, + GObject); +typedef virQEMUDriverConfig *virQEMUDriverConfigPtr; + =20 =20 /* Main driver state */ diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5e87b2cb28..fd425aa3de 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1129,7 +1129,7 @@ qemuStateCleanup(void) if (qemu_driver->lockFD !=3D -1) virPidFileRelease(qemu_driver->config->stateDir, "driver", qemu_dr= iver->lockFD); =20 - virObjectUnref(qemu_driver->config); + g_clear_object(&qemu_driver->config); virMutexDestroy(&qemu_driver->lock); VIR_FREE(qemu_driver); =20 diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index 2393e312d1..1bbd6a3e61 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -450,7 +450,7 @@ mymain(void) * file has been added, run "VIR_TEST_REGENERATE_OUTPUT=3D1 make check= ". */ =20 - virObjectUnref(cfg); + g_clear_object(&cfg); =20 virFileWrapperClearPrefixes(); =20 diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 396c069bd2..89f2bdda47 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -309,7 +309,7 @@ void qemuTestDriverFree(virQEMUDriver *driver) virObjectUnref(driver->qemuCapsCache); g_clear_object(&driver->xmlopt); g_clear_object(&driver->caps); - virObjectUnref(driver->config); + g_clear_object(&driver->config); virObjectUnref(driver->securityManager); } =20 --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371159; cv=none; d=zohomail.com; s=zohoarc; b=Tm9hldQS9IzdU9qFT7BzAmI6p/Jyc7QptRO5PH0UjeiRm5gpUNrAoQpP+WM8+/35x/2AvlpeL3GygfuRvSi4vcwoUdYX7Xe/gjkTYUjR6bo2y8u78Xwyd/0yp2uTYHduovJwXbSUNDiNkPt/cvtqm6LW+tmIgxqNrZUiqV760Oc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371159; 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=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=QeS108E+PEuoQdG1CtHTsn4JJddVuu4hcJrPXmrQyrqASBCraFffJ8QlQl8p9chEYe7GSXt6byKIwxoEn0qHo1HI/bv2zlXKw6QC1DXX3PxrbkonGTBS1GzT6todbZWkXXtRl2Wk4gY6MemCSb5E25O823MW4aRgJmnl6RydDFA= 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 1589371159353466.6121471734157; Wed, 13 May 2020 04:59:19 -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-306-pLzBchsJPmqVZDPE_TZSCQ-1; Wed, 13 May 2020 07:59:15 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1EECF107ACCA; Wed, 13 May 2020 11:59:09 +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 F370434201; Wed, 13 May 2020 11:59:08 +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 C1EBD180476A; Wed, 13 May 2020 11:59:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx5g1016423 for ; Wed, 13 May 2020 07:59:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0168F2029F62; Wed, 13 May 2020 11:59:05 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F04282029F6F for ; Wed, 13 May 2020 11:59:04 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CC4148007AC for ; Wed, 13 May 2020 11:59:04 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-44-X1isooBOPX2Q73czmlF1AQ-1; Wed, 13 May 2020 07:59:02 -0400 Received: by mail-wr1-f66.google.com with SMTP id l18so20525623wrn.6 for ; Wed, 13 May 2020 04:59:01 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371157; 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=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=gfcswc1r2js68zqw36VBLPt76Q83ure4Kf5u4ENlTyIwU/evTWt6WXrjBOoY0f5JgzsFue Q26Cu4cJlWwOB3uJhB+U5m5NgYkPCv4FWxJw4SaBInAsEHCHhj8yqaFZ/AcGEFfsobxW7n t9jQH/uhjZtE1jOr3tTv5H2WZgiJndw= X-MC-Unique: pLzBchsJPmqVZDPE_TZSCQ-1 X-MC-Unique: X1isooBOPX2Q73czmlF1AQ-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=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=ff7WV6So9MHaLS9CULgMGbtHcbfMcPxK3vr7ri2TWVdmoq0syzoen9Ga0g2RqxENb0 +RN3pd8LoTcBiNolCJ1g7xmj8YaAHw2UskKLf5+lZEjPz9R0+bxSbqTpWMW0y8VnO9qC 5Qi1ne4tgy5GXxIrOgwcGJKVBj5+4ooltlajsB9p3tMYuiokAwVpQS1fE9TnlvwPEbiV c15X2vK+28PiBXy3q2+9p9VZCRtWeFPPe9389cR2gA36q0ZMHtkih8xeDrbgxX2KVxRo WY4lo71obrcKbG2GtFOtFXDCaXmchGGsGfjpn+OHgRalY6qYVNzJTSyh7q83zac9MM+G nrrg== X-Gm-Message-State: AGi0PuZsa/fiucSTJQnQH+gcq5FfY0YIDJtw0eaqEipqFkVMjbIb9qoC kArU9QymuGI8lbhjcsQzk9sKXOux X-Google-Smtp-Source: APiQypIIA4DSvS2mVOUdtovldDi0ti3LRHzYfq+qqzbGSVFZ4LfUMdhI+bELV29L3nGm7EMG69xGGA== X-Received: by 2002:adf:f651:: with SMTP id x17mr32068619wrp.277.1589371139845; Wed, 13 May 2020 04:58:59 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 38/40] conf: convert virDomain*Private to GObject Date: Wed, 13 May 2020 13:57:22 +0200 Message-Id: <20200513115724.157687-39-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.84 on 10.5.11.23 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/conf/domain_conf.c | 18 +- src/conf/domain_conf.h | 18 +- src/qemu/qemu_domain.c | 349 +++++++++++++++++--------------------- src/qemu/qemu_domain.h | 145 +++++++++++----- src/util/virstoragefile.c | 2 +- src/util/virstoragefile.h | 3 +- 6 files changed, 274 insertions(+), 261 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f7392fce05..a7b7ed3f4c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1829,7 +1829,7 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr= def) virDomainGraphicsListenDefClear(&def->listens[i]); VIR_FREE(def->listens); =20 - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -1877,7 +1877,7 @@ static virDomainVcpuDefPtr virDomainVcpuDefNew(virDomainXMLOptionPtr xmlopt) { virDomainVcpuDefPtr ret =3D NULL; - g_autoptr(virObject) priv =3D NULL; + g_autoptr(GObject) priv =3D NULL; =20 if (xmlopt && xmlopt->privateData.vcpuNew && !(priv =3D xmlopt->privateData.vcpuNew())) @@ -1900,7 +1900,7 @@ virDomainVcpuDefFree(virDomainVcpuDefPtr info) =20 virBitmapFree(info->cpumask); info->cpumask =3D NULL; - virObjectUnref(info->privateData); + g_clear_object(&info->privateData); VIR_FREE(info); } =20 @@ -2202,7 +2202,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def) VIR_FREE(def->blkdeviotune.group_name); VIR_FREE(def->virtio); virDomainDeviceInfoClear(&def->info); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); =20 VIR_FREE(def); } @@ -2405,7 +2405,7 @@ void virDomainFSDefFree(virDomainFSDefPtr def) VIR_FREE(def->dst); virDomainDeviceInfoClear(&def->info); VIR_FREE(def->virtio); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def->binary); =20 VIR_FREE(def); @@ -2466,7 +2466,7 @@ virDomainVsockDefFree(virDomainVsockDefPtr vsock) if (!vsock) return; =20 - virObjectUnref(vsock->privateData); + g_clear_object(&vsock->privateData); virDomainDeviceInfoClear(&vsock->info); VIR_FREE(vsock); } @@ -2554,7 +2554,7 @@ virDomainNetDefFree(virDomainNetDefPtr def) if (!def) return; virDomainNetDefClear(def); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -2943,7 +2943,7 @@ virDomainVideoDefClear(virDomainVideoDefPtr def) if (def->driver) VIR_FREE(def->driver->vhost_user_binary); VIR_FREE(def->driver); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); =20 memset(def, 0, sizeof(*def)); } @@ -27345,7 +27345,7 @@ virDomainRNGDefFree(virDomainRNGDefPtr def) VIR_FREE(def->source.file); break; case VIR_DOMAIN_RNG_BACKEND_EGD: - virObjectUnref(def->source.chardev); + g_clear_object(&def->source.chardev); break; case VIR_DOMAIN_RNG_BACKEND_BUILTIN: case VIR_DOMAIN_RNG_BACKEND_LAST: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2a4d8deaf6..2160cf3a4d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -529,7 +529,7 @@ typedef enum { struct _virDomainDiskDef { virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom?= */ =20 - virObjectPtr privateData; + GObject *privateData; =20 int device; /* enum virDomainDiskDevice */ int bus; /* enum virDomainDiskBus */ @@ -856,7 +856,7 @@ struct _virDomainFSDef { virTristateSwitch posix_lock; virTristateSwitch flock; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 =20 @@ -1075,7 +1075,7 @@ struct _virDomainNetDef { unsigned int mtu; virNetDevCoalescePtr coalesce; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 typedef enum { @@ -1194,7 +1194,7 @@ struct _virDomainChrSourceReconnectDef { struct _virDomainChrSourceDef { GObject parent; int type; /* virDomainChrType */ - virObjectPtr privateData; + GObject *privateData; union { /* no for null, vc, stdio */ struct { @@ -1497,7 +1497,7 @@ struct _virDomainVideoDriverDef { }; =20 struct _virDomainVideoDef { - virObjectPtr privateData; + GObject *privateData; =20 int type; /* enum virDomainVideoType */ unsigned int ram; /* kibibytes (multiples of 1024) */ @@ -1644,7 +1644,7 @@ struct _virDomainGraphicsListenDef { }; =20 struct _virDomainGraphicsDef { - virObjectPtr privateData; + GObject *privateData; =20 /* Port value discipline: * Value -1 is legacy syntax indicating that it should be auto-allocat= ed. @@ -2376,7 +2376,7 @@ struct _virDomainVcpuDef { =20 virDomainThreadSchedParam sched; =20 - virObjectPtr privateData; + GObject *privateData; }; =20 struct _virDomainBlkiotune { @@ -2474,7 +2474,7 @@ typedef enum { } virDomainVsockModel; =20 struct _virDomainVsockDef { - virObjectPtr privateData; + GObject *privateData; =20 virDomainVsockModel model; unsigned int guest_cid; @@ -2834,7 +2834,7 @@ struct _virDomainDefParserConfig { =20 typedef void *(*virDomainXMLPrivateDataAllocFunc)(void *); typedef void (*virDomainXMLPrivateDataFreeFunc)(void *); -typedef virObjectPtr (*virDomainXMLPrivateDataNewFunc)(void); +typedef GObject* (*virDomainXMLPrivateDataNewFunc)(void); typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, virDomainObjPtr); typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e422db80a5..554bfa85f2 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1154,362 +1154,317 @@ qemuDomainSecretInfoDestroy(qemuDomainSecretInfoP= tr secinfo) } =20 =20 -static virClassPtr qemuDomainDiskPrivateClass; -static void qemuDomainDiskPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainDiskPrivate, qemu_domain_disk_private, G_TYPE_OBJE= CT); +static void qemuDomainDiskPrivateFinalize(GObject *obj); =20 -static int -qemuDomainDiskPrivateOnceInit(void) +static void +qemu_domain_disk_private_init(qemuDomainDiskPrivate *priv G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainDiskPrivate, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainDiskPrivate); - -static virObjectPtr -qemuDomainDiskPrivateNew(void) +static void +qemu_domain_disk_private_class_init(qemuDomainDiskPrivateClass *klass) { - qemuDomainDiskPrivatePtr priv; - - if (qemuDomainDiskPrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainDiskPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainDiskPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainDiskPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_DISK_PRIVATE, NULL); } =20 static void -qemuDomainDiskPrivateDispose(void *obj) +qemuDomainDiskPrivateFinalize(GObject *obj) { - qemuDomainDiskPrivatePtr priv =3D obj; + qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 virObjectUnref(priv->migrSource); VIR_FREE(priv->qomName); VIR_FREE(priv->nodeCopyOnRead); g_clear_object(&priv->blockjob); + + G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->finalize(obj); } =20 -static virClassPtr qemuDomainStorageSourcePrivateClass; -static void qemuDomainStorageSourcePrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainStorageSourcePrivate, qemu_domain_storage_source_p= rivate, G_TYPE_OBJECT); +static void qemuDomainStorageSourcePrivateFinalize(GObject *obj); =20 -static int -qemuDomainStorageSourcePrivateOnceInit(void) +static void +qemu_domain_storage_source_private_init(qemuDomainStorageSourcePrivate *pr= iv G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainStorageSourcePrivate, virClassForObject()= )) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainStorageSourcePrivate); - -virObjectPtr -qemuDomainStorageSourcePrivateNew(void) +static void +qemu_domain_storage_source_private_class_init(qemuDomainStorageSourcePriva= teClass *klass) { - qemuDomainStorageSourcePrivatePtr priv; - - if (qemuDomainStorageSourcePrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainStorageSourcePrivateClass))) - return NULL; + obj->finalize =3D qemuDomainStorageSourcePrivateFinalize; +} =20 - return (virObjectPtr) priv; +GObject * +qemuDomainStorageSourcePrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_STORAGE_SOURCE_PRIVATE, NULL); } =20 =20 static void -qemuDomainStorageSourcePrivateDispose(void *obj) +qemuDomainStorageSourcePrivateFinalize(GObject *obj) { - qemuDomainStorageSourcePrivatePtr priv =3D obj; + qemuDomainStorageSourcePrivatePtr priv =3D QEMU_DOMAIN_STORAGE_SOURCE(= obj); =20 g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); g_clear_pointer(&priv->encinfo, qemuDomainSecretInfoFree); + + G_OBJECT_CLASS(qemu_domain_storage_source_private_parent_class)->final= ize(obj); } =20 =20 -static virClassPtr qemuDomainVcpuPrivateClass; -static void qemuDomainVcpuPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVcpuPrivate, qemu_domain_vcpu_private, G_TYPE_OBJE= CT); +static void qemuDomainVcpuPrivateFinalize(GObject *obj); =20 -static int -qemuDomainVcpuPrivateOnceInit(void) +static void +qemu_domain_vcpu_private_init(qemuDomainVcpuPrivate *priv G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainVcpuPrivate, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainVcpuPrivate); - -static virObjectPtr -qemuDomainVcpuPrivateNew(void) +static void +qemu_domain_vcpu_private_class_init(qemuDomainVcpuPrivateClass *klass) { - qemuDomainVcpuPrivatePtr priv; - - if (qemuDomainVcpuPrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainVcpuPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainVcpuPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainVcpuPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_VCPU_PRIVATE, NULL); } =20 =20 static void -qemuDomainVcpuPrivateDispose(void *obj) +qemuDomainVcpuPrivateFinalize(GObject *obj) { - qemuDomainVcpuPrivatePtr priv =3D obj; + qemuDomainVcpuPrivatePtr priv =3D QEMU_DOMAIN_VCPU(obj); =20 VIR_FREE(priv->type); VIR_FREE(priv->alias); virJSONValueFree(priv->props); - return; + + G_OBJECT_CLASS(qemu_domain_vcpu_private_parent_class)->finalize(obj); } =20 =20 -static virClassPtr qemuDomainChrSourcePrivateClass; -static void qemuDomainChrSourcePrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainChrSourcePrivate, qemu_domain_chr_source_private, = G_TYPE_OBJECT); +static void qemuDomainChrSourcePrivateFinalize(GObject *obj); =20 -static int -qemuDomainChrSourcePrivateOnceInit(void) +static void +qemu_domain_chr_source_private_init(qemuDomainChrSourcePrivate *priv G_GNU= C_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainChrSourcePrivate, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainChrSourcePrivate); - -static virObjectPtr -qemuDomainChrSourcePrivateNew(void) +static void +qemu_domain_chr_source_private_class_init(qemuDomainChrSourcePrivateClass = *klass) { - qemuDomainChrSourcePrivatePtr priv; - - if (qemuDomainChrSourcePrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainChrSourcePrivateClass))) - return NULL; + obj->finalize =3D qemuDomainChrSourcePrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainChrSourcePrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_CHR_SOURCE_PRIVATE, NULL); } =20 =20 static void -qemuDomainChrSourcePrivateDispose(void *obj) +qemuDomainChrSourcePrivateFinalize(GObject *obj) { - qemuDomainChrSourcePrivatePtr priv =3D obj; + qemuDomainChrSourcePrivatePtr priv =3D QEMU_DOMAIN_CHR_SOURCE(obj); =20 g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); + + G_OBJECT_CLASS(qemu_domain_chr_source_private_parent_class)->finalize(= obj); } =20 =20 -static virClassPtr qemuDomainVsockPrivateClass; -static void qemuDomainVsockPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVsockPrivate, qemu_domain_vsock_private, G_TYPE_OB= JECT); +static void qemuDomainVsockPrivateFinalize(GObject *obj); =20 -static int -qemuDomainVsockPrivateOnceInit(void) +static void +qemu_domain_vsock_private_init(qemuDomainVsockPrivate *priv) { - if (!VIR_CLASS_NEW(qemuDomainVsockPrivate, virClassForObject())) - return -1; - - return 0; + priv->vhostfd =3D -1; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainVsockPrivate); - -static virObjectPtr -qemuDomainVsockPrivateNew(void) +static void +qemu_domain_vsock_private_class_init(qemuDomainVsockPrivateClass *klass) { - qemuDomainVsockPrivatePtr priv; - - if (qemuDomainVsockPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainVsockPrivateClass))) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - priv->vhostfd =3D -1; + obj->finalize =3D qemuDomainVsockPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainVsockPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_VSOCK_PRIVATE, NULL); } =20 =20 static void -qemuDomainVsockPrivateDispose(void *obj G_GNUC_UNUSED) +qemuDomainVsockPrivateFinalize(GObject *obj) { - qemuDomainVsockPrivatePtr priv =3D obj; + qemuDomainVsockPrivatePtr priv =3D QEMU_DOMAIN_VSOCK(obj); =20 VIR_FORCE_CLOSE(priv->vhostfd); + + G_OBJECT_CLASS(qemu_domain_vsock_private_parent_class)->finalize(obj); } =20 =20 -static virClassPtr qemuDomainGraphicsPrivateClass; -static void qemuDomainGraphicsPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainGraphicsPrivate, qemu_domain_graphics_private, G_T= YPE_OBJECT); +static void qemuDomainGraphicsPrivateFinalize(GObject *obj); =20 -static int -qemuDomainGraphicsPrivateOnceInit(void) +static void +qemu_domain_graphics_private_init(qemuDomainGraphicsPrivate *priv G_GNUC_U= NUSED) { - if (!VIR_CLASS_NEW(qemuDomainGraphicsPrivate, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainGraphicsPrivate); - -static virObjectPtr -qemuDomainGraphicsPrivateNew(void) +static void +qemu_domain_graphics_private_class_init(qemuDomainGraphicsPrivateClass *kl= ass) { - qemuDomainGraphicsPrivatePtr priv; - - if (qemuDomainGraphicsPrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainGraphicsPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainGraphicsPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainGraphicsPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_GRAPHICS_PRIVATE, NULL); } =20 =20 static void -qemuDomainGraphicsPrivateDispose(void *obj) +qemuDomainGraphicsPrivateFinalize(GObject *obj) { - qemuDomainGraphicsPrivatePtr priv =3D obj; + qemuDomainGraphicsPrivatePtr priv =3D QEMU_DOMAIN_GRAPHICS(obj); =20 VIR_FREE(priv->tlsAlias); g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); -} =20 + G_OBJECT_CLASS(qemu_domain_graphics_private_parent_class)->finalize(ob= j); +} =20 -static virClassPtr qemuDomainNetworkPrivateClass; -static void qemuDomainNetworkPrivateDispose(void *obj); =20 +G_DEFINE_TYPE(qemuDomainNetworkPrivate, qemu_domain_network_private, G_TYP= E_OBJECT); +static void qemuDomainNetworkPrivateFinalize(GObject *obj); =20 -static int -qemuDomainNetworkPrivateOnceInit(void) +static void +qemu_domain_network_private_init(qemuDomainNetworkPrivate *priv G_GNUC_UNU= SED) { - if (!VIR_CLASS_NEW(qemuDomainNetworkPrivate, virClassForObject())) - return -1; - - return 0; } =20 +static void +qemu_domain_network_private_class_init(qemuDomainNetworkPrivateClass *klas= s) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainNetworkPrivate); + obj->finalize =3D qemuDomainNetworkPrivateFinalize; +} =20 =20 -static virObjectPtr +static GObject * qemuDomainNetworkPrivateNew(void) { - qemuDomainNetworkPrivatePtr priv; - - if (qemuDomainNetworkPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainNetworkPrivateClass))) - return NULL; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_NETWORK_PRIVATE, NULL); } =20 =20 static void -qemuDomainNetworkPrivateDispose(void *obj G_GNUC_UNUSED) +qemuDomainNetworkPrivateFinalize(GObject *obj) { - qemuDomainNetworkPrivatePtr priv =3D obj; + qemuDomainNetworkPrivatePtr priv =3D QEMU_DOMAIN_NETWORK(obj); =20 qemuSlirpFree(priv->slirp); -} =20 + G_OBJECT_CLASS(qemu_domain_network_private_parent_class)->finalize(obj= ); +} =20 -static virClassPtr qemuDomainFSPrivateClass; -static void qemuDomainFSPrivateDispose(void *obj); =20 +G_DEFINE_TYPE(qemuDomainFSPrivate, qemu_domain_fs_private, G_TYPE_OBJECT); +static void qemuDomainFSPrivateFinalize(GObject *obj); =20 -static int -qemuDomainFSPrivateOnceInit(void) +static void +qemu_domain_fs_private_init(qemuDomainFSPrivate *priv G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainFSPrivate, virClassForObject())) - return -1; - - return 0; } =20 +static void +qemu_domain_fs_private_class_init(qemuDomainFSPrivateClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainFSPrivate); - + obj->finalize =3D qemuDomainFSPrivateFinalize; +} =20 -static virObjectPtr +static GObject * qemuDomainFSPrivateNew(void) { - qemuDomainFSPrivatePtr priv; - - if (qemuDomainFSPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainFSPrivateClass))) - return NULL; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_FS_PRIVATE, NULL); } =20 =20 static void -qemuDomainFSPrivateDispose(void *obj) +qemuDomainFSPrivateFinalize(GObject *obj) { - qemuDomainFSPrivatePtr priv =3D obj; + qemuDomainFSPrivatePtr priv =3D QEMU_DOMAIN_FS(obj); =20 g_free(priv->vhostuser_fs_sock); + + G_OBJECT_CLASS(qemu_domain_fs_private_parent_class)->finalize(obj); } =20 -static virClassPtr qemuDomainVideoPrivateClass; -static void qemuDomainVideoPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVideoPrivate, qemu_domain_video_private, G_TYPE_OB= JECT); +static void qemuDomainVideoPrivateFinalize(GObject *obj); =20 +static void +qemu_domain_video_private_init(qemuDomainVideoPrivate *priv) +{ + priv->vhost_user_fd =3D -1; +} =20 -static int -qemuDomainVideoPrivateOnceInit(void) +static void +qemu_domain_video_private_class_init(qemuDomainVideoPrivateClass *klass) { - if (!VIR_CLASS_NEW(qemuDomainVideoPrivate, virClassForObject())) - return -1; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - return 0; + obj->finalize =3D qemuDomainVideoPrivateFinalize; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainVideoPrivate); =20 - -static virObjectPtr +static GObject * qemuDomainVideoPrivateNew(void) { - qemuDomainVideoPrivatePtr priv; - - if (qemuDomainVideoPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainVideoPrivateClass))) - return NULL; - - priv->vhost_user_fd =3D -1; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_VIDEO_PRIVATE, NULL); } =20 =20 static void -qemuDomainVideoPrivateDispose(void *obj) +qemuDomainVideoPrivateFinalize(GObject *obj) { - qemuDomainVideoPrivatePtr priv =3D obj; + qemuDomainVideoPrivatePtr priv =3D QEMU_DOMAIN_VIDEO(obj); =20 VIR_FORCE_CLOSE(priv->vhost_user_fd); + + G_OBJECT_CLASS(qemu_domain_video_private_parent_class)->finalize(obj); } =20 =20 diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 41d3f1561d..286a422338 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -443,13 +443,8 @@ struct _qemuDomainObjPrivate { #define QEMU_DOMAIN_PRIVATE(vm) \ ((qemuDomainObjPrivatePtr) (vm)->privateData) =20 -#define QEMU_DOMAIN_DISK_PRIVATE(disk) \ - ((qemuDomainDiskPrivatePtr) (disk)->privateData) - -typedef struct _qemuDomainDiskPrivate qemuDomainDiskPrivate; -typedef qemuDomainDiskPrivate *qemuDomainDiskPrivatePtr; struct _qemuDomainDiskPrivate { - virObject parent; + GObject parent; =20 /* ideally we want a smarter way to interlock block jobs on single qem= u disk * in the future, but for now we just disallow any concurrent job on a @@ -467,13 +462,20 @@ struct _qemuDomainDiskPrivate { char *nodeCopyOnRead; /* nodename of the disk-wide copy-on-read blockd= ev layer */ }; =20 -#define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \ - ((qemuDomainStorageSourcePrivatePtr) (src)->privateData) +#define QEMU_TYPE_DOMAIN_DISK_PRIVATE qemu_domain_disk_private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainDiskPrivate, + qemu_domain_disk_private, + QEMU, + DOMAIN_DISK, + GObject); +typedef qemuDomainDiskPrivate *qemuDomainDiskPrivatePtr; + +#define QEMU_DOMAIN_DISK_PRIVATE(disk) \ + ((qemuDomainDiskPrivatePtr) (disk)->privateData) + =20 -typedef struct _qemuDomainStorageSourcePrivate qemuDomainStorageSourcePriv= ate; -typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr; struct _qemuDomainStorageSourcePrivate { - virObject parent; + GObject parent; =20 /* data required for authentication to the storage source */ qemuDomainSecretInfoPtr secinfo; @@ -485,12 +487,23 @@ struct _qemuDomainStorageSourcePrivate { qemuDomainSecretInfoPtr httpcookie; }; =20 -virObjectPtr qemuDomainStorageSourcePrivateNew(void); +#define QEMU_TYPE_DOMAIN_STORAGE_SOURCE_PRIVATE qemu_domain_storage_source= _private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainStorageSourcePrivate, + qemu_domain_storage_source_private, + QEMU, + DOMAIN_STORAGE_SOURCE, + GObject); +typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr; + +#define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \ + ((qemuDomainStorageSourcePrivatePtr) (src)->privateData) + + +GObject *qemuDomainStorageSourcePrivateNew(void); + =20 -typedef struct _qemuDomainVcpuPrivate qemuDomainVcpuPrivate; -typedef qemuDomainVcpuPrivate *qemuDomainVcpuPrivatePtr; struct _qemuDomainVcpuPrivate { - virObject parent; + GObject parent; =20 pid_t tid; /* vcpu thread id */ int enable_id; /* order in which the vcpus were enabled in qemu */ @@ -510,6 +523,14 @@ struct _qemuDomainVcpuPrivate { int vcpus; }; =20 +#define QEMU_TYPE_DOMAIN_VCPU_PRIVATE qemu_domain_vcpu_private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainVcpuPrivate, + qemu_domain_vcpu_private, + QEMU, + DOMAIN_VCPU, + GObject); +typedef qemuDomainVcpuPrivate *qemuDomainVcpuPrivatePtr; + #define QEMU_DOMAIN_VCPU_PRIVATE(vcpu) \ ((qemuDomainVcpuPrivatePtr) (vcpu)->privateData) =20 @@ -523,77 +544,113 @@ struct qemuDomainDiskInfo { char *nodename; }; =20 -#define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \ - ((qemuDomainChrSourcePrivatePtr) (dev)->privateData) - -typedef struct _qemuDomainChrSourcePrivate qemuDomainChrSourcePrivate; -typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr; struct _qemuDomainChrSourcePrivate { - virObject parent; + GObject parent; =20 /* for char devices using secret * NB: *not* to be written to qemu domain object XML */ qemuDomainSecretInfoPtr secinfo; }; =20 +#define QEMU_TYPE_DOMAIN_CHR_SOURCE_PRIVATE qemu_domain_chr_source_private= _get_type() +G_DECLARE_FINAL_TYPE(qemuDomainChrSourcePrivate, + qemu_domain_chr_source_private, + QEMU, + DOMAIN_CHR_SOURCE, + GObject); +typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr; + +#define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \ + ((qemuDomainChrSourcePrivatePtr) (dev)->privateData) + =20 -typedef struct _qemuDomainVsockPrivate qemuDomainVsockPrivate; -typedef qemuDomainVsockPrivate *qemuDomainVsockPrivatePtr; struct _qemuDomainVsockPrivate { - virObject parent; + GObject parent; =20 int vhostfd; }; =20 +#define QEMU_TYPE_DOMAIN_VSOCK_PRIVATE qemu_domain_vsock_private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainVsockPrivate, + qemu_domain_vsock_private, + QEMU, + DOMAIN_VSOCK, + GObject); +typedef qemuDomainVsockPrivate *qemuDomainVsockPrivatePtr; =20 -#define QEMU_DOMAIN_VIDEO_PRIVATE(dev) \ - ((qemuDomainVideoPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainVideoPrivate qemuDomainVideoPrivate; -typedef qemuDomainVideoPrivate *qemuDomainVideoPrivatePtr; struct _qemuDomainVideoPrivate { - virObject parent; + GObject parent; =20 int vhost_user_fd; }; =20 +#define QEMU_TYPE_DOMAIN_VIDEO_PRIVATE qemu_domain_video_private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainVideoPrivate, + qemu_domain_video_private, + QEMU, + DOMAIN_VIDEO, + GObject); +typedef qemuDomainVideoPrivate *qemuDomainVideoPrivatePtr; + +#define QEMU_DOMAIN_VIDEO_PRIVATE(dev) \ + ((qemuDomainVideoPrivatePtr) (dev)->privateData) =20 -#define QEMU_DOMAIN_GRAPHICS_PRIVATE(dev) \ - ((qemuDomainGraphicsPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainGraphicsPrivate qemuDomainGraphicsPrivate; -typedef qemuDomainGraphicsPrivate *qemuDomainGraphicsPrivatePtr; struct _qemuDomainGraphicsPrivate { - virObject parent; + GObject parent; =20 char *tlsAlias; qemuDomainSecretInfoPtr secinfo; }; =20 +#define QEMU_TYPE_DOMAIN_GRAPHICS_PRIVATE qemu_domain_graphics_private_get= _type() +G_DECLARE_FINAL_TYPE(qemuDomainGraphicsPrivate, + qemu_domain_graphics_private, + QEMU, + DOMAIN_GRAPHICS, + GObject); +typedef qemuDomainGraphicsPrivate *qemuDomainGraphicsPrivatePtr; + +#define QEMU_DOMAIN_GRAPHICS_PRIVATE(dev) \ + ((qemuDomainGraphicsPrivatePtr) (dev)->privateData) =20 -#define QEMU_DOMAIN_NETWORK_PRIVATE(dev) \ - ((qemuDomainNetworkPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainNetworkPrivate qemuDomainNetworkPrivate; -typedef qemuDomainNetworkPrivate *qemuDomainNetworkPrivatePtr; struct _qemuDomainNetworkPrivate { - virObject parent; + GObject parent; =20 qemuSlirpPtr slirp; }; =20 +#define QEMU_TYPE_DOMAIN_NETWORK_PRIVATE qemu_domain_network_private_get_t= ype() +G_DECLARE_FINAL_TYPE(qemuDomainNetworkPrivate, + qemu_domain_network_private, + QEMU, + DOMAIN_NETWORK, + GObject); +typedef qemuDomainNetworkPrivate *qemuDomainNetworkPrivatePtr; + +#define QEMU_DOMAIN_NETWORK_PRIVATE(dev) \ + ((qemuDomainNetworkPrivatePtr) (dev)->privateData) =20 -#define QEMU_DOMAIN_FS_PRIVATE(dev) \ - ((qemuDomainFSPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainFSPrivate qemuDomainFSPrivate; -typedef qemuDomainFSPrivate *qemuDomainFSPrivatePtr; struct _qemuDomainFSPrivate { - virObject parent; + GObject parent; =20 char *vhostuser_fs_sock; }; =20 +#define QEMU_TYPE_DOMAIN_FS_PRIVATE qemu_domain_fs_private_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainFSPrivate, + qemu_domain_fs_private, + QEMU, + DOMAIN_FS, + GObject); +typedef qemuDomainFSPrivate *qemuDomainFSPrivatePtr; + +#define QEMU_DOMAIN_FS_PRIVATE(dev) \ + ((qemuDomainFSPrivatePtr) (dev)->privateData) + =20 typedef enum { QEMU_PROCESS_EVENT_WATCHDOG =3D 0, diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 535a94e239..173a6a75f3 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2685,7 +2685,7 @@ virStorageSourceClear(virStorageSourcePtr def) =20 virStorageNetHostDefFree(def->nhosts, def->hosts); virStorageAuthDefFree(def->auth); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); =20 VIR_FREE(def->nodestorage); VIR_FREE(def->nodeformat); diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index c68bdc9680..58e8e1d8cf 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -30,6 +30,7 @@ #include "virsecret.h" #include "virenum.h" #include "virpci.h" +#include =20 /* Minimum header size required to probe all known formats with * virStorageFileProbeFormat, or obtain metadata from a known format. @@ -302,7 +303,7 @@ struct _virStorageSource { =20 virStorageSourceInitiatorDef initiator; =20 - virObjectPtr privateData; + GObject *privateData; =20 int format; /* virStorageFileFormat in domain backing chains, but * pool-specific enum for storage volumes */ --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 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=1589371160; cv=none; d=zohomail.com; s=zohoarc; b=CDLj7TrmGOmQcW7pHlX3G3GTDqMusrlRPHvJhUJWudGal5Nm0a1Fq01S7Nce7iIRLS9t7vJz/ib60vVkxnrZpLSDBCPFhEQ/dl+PR3hlr/8/cZhefk7lDR6FUqcro3wmK5nqtSTVGDjkMJEwX5DubCfDY+2+EH8Mf6JstkSSmIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371160; 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=EGeF8lirIChV0ZmCrwHluYfRjM4ncTFqcqqvZNeadnQ=; b=MK1/dwVToupEkgMWEU8B1Gmvgvx20ix1m+Z7EjH5YcBoo5E3JKituXFg5zYUKGqR7UJ9F64swbVxZhDDz37wXWljShgI748/Ndy++95sqtyFoG+pIMDKhtG+9ekhnlOvptRqU8KaYujJmnU/P6VrIT2GDUNJUJhoKGz2uNuQ55c= 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 1589371160223828.1113897454633; Wed, 13 May 2020 04:59:20 -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-376-iEMGFumGPzK_c7HF6sTtCA-1; Wed, 13 May 2020 07:59:16 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1ACAABFCD; Wed, 13 May 2020 11:59:11 +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 E72B010027AF; Wed, 13 May 2020 11:59:10 +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 B4E494EA0E; Wed, 13 May 2020 11:59:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx62v016435 for ; Wed, 13 May 2020 07:59:06 -0400 Received: by smtp.corp.redhat.com (Postfix) id E2C77110EB4; Wed, 13 May 2020 11:59:05 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DDC41114D0C for ; Wed, 13 May 2020 11:59:05 +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-mx02.redhat.com (Postfix) with ESMTPS id C11C485A5B0 for ; Wed, 13 May 2020 11:59:05 +0000 (UTC) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-510-kNEYeASDMRS31PfNgNYc0w-1; Wed, 13 May 2020 07:59:03 -0400 Received: by mail-wm1-f68.google.com with SMTP id d207so8749205wmd.0 for ; Wed, 13 May 2020 04:59:03 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.59.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:59:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371158; 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=EGeF8lirIChV0ZmCrwHluYfRjM4ncTFqcqqvZNeadnQ=; b=gcSTmhsPkFShFnsAcI3btMTFp62tBbj8wWjPwCeBrZzx6zUOyLBdiAF7tV/Xrj/nfMpEHK 3shLYv333grfwrytoFuTMFm0fbMb8FumJsYYZECxF4anBdSK5fQxSPmJUaaJQOru8smNeF mxKgF7VHV359jlb7nYHd4LG2D5GOse8= X-MC-Unique: iEMGFumGPzK_c7HF6sTtCA-1 X-MC-Unique: kNEYeASDMRS31PfNgNYc0w-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=EGeF8lirIChV0ZmCrwHluYfRjM4ncTFqcqqvZNeadnQ=; b=K8nK2K//Hh9oR17e92R49S9ulZzdXccozSdL+3sP7wYpFCrjFfBT+5OghfJb8zzFQ2 5JkArCLv0SBR8sro0XDAXtPUIf8NPjkj5EHy+AKeRPMIgX/6feDbYme917jAITK5QB6r HzhvvQ+3x3IEnMY6NuS6JuoPoj2RY+701ELM/v2eNmNVg0spmfm3U3CLRCtvlKPl3kJo e+okPL9u+KAq7zIMwmdXDud99jCl/TjMpmibBeXIvRu+CowDv0SEU5a1aJKyXf6ERrKz rj4aSBYD/ogz7d88oterfuiMMIdxZKUYEveulV/ltW0FMcE3Ofi+KCNLMiVeJGkP37UI VIXg== X-Gm-Message-State: AGi0PuZIArV1tAKybruCZfpoyilY4A5nEbMhidkj1C3BiUIUyd0igFvf MgO7Fa4YuKgJe1c+V0oQhoyX/zje X-Google-Smtp-Source: APiQypImJfDCq+pRxVsQ4zzQY+5JqPFn6LO0y0aV1hfyS1pdwv7ICfqdLcI18G+EN6xVFCauwKK/OQ== X-Received: by 2002:a7b:c2a9:: with SMTP id c9mr35568677wmk.8.1589371141676; Wed, 13 May 2020 04:59:01 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 39/40] conf: convert virSaveCookie to GObject Date: Wed, 13 May 2020 13:57:23 +0200 Message-Id: <20200513115724.157687-40-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.84 on 10.5.11.22 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/conf/snapshot_conf.c | 2 +- src/conf/snapshot_conf.h | 2 +- src/conf/virsavecookie.c | 10 ++++---- src/conf/virsavecookie.h | 14 +++++------ src/qemu/qemu_domain.c | 53 +++++++++++++++++++--------------------- src/qemu/qemu_domain.h | 12 ++++++--- src/qemu/qemu_driver.c | 8 +++--- 7 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 98c296b276..096974a3c9 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -129,7 +129,7 @@ virDomainSnapshotDefDispose(void *obj) for (i =3D 0; i < def->ndisks; i++) virDomainSnapshotDiskDefClear(&def->disks[i]); VIR_FREE(def->disks); - virObjectUnref(def->cookie); + g_clear_object(&def->cookie); } =20 int diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h index b5b1ef2718..97a7b3b4e5 100644 --- a/src/conf/snapshot_conf.h +++ b/src/conf/snapshot_conf.h @@ -84,7 +84,7 @@ struct _virDomainSnapshotDef { size_t ndisks; /* should not exceed dom->ndisks */ virDomainSnapshotDiskDef *disks; =20 - virObjectPtr cookie; + GObject *cookie; }; =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSnapshotDef, virObjectUnref); diff --git a/src/conf/virsavecookie.c b/src/conf/virsavecookie.c index bdc22bb324..6cdfa4fc5a 100644 --- a/src/conf/virsavecookie.c +++ b/src/conf/virsavecookie.c @@ -34,7 +34,7 @@ VIR_LOG_INIT("conf.savecookie"); =20 static int virSaveCookieParseNode(xmlXPathContextPtr ctxt, - virObjectPtr *obj, + GObject **obj, virSaveCookieCallbacksPtr saveCookie) { *obj =3D NULL; @@ -54,7 +54,7 @@ virSaveCookieParseNode(xmlXPathContextPtr ctxt, =20 int virSaveCookieParse(xmlXPathContextPtr ctxt, - virObjectPtr *obj, + GObject **obj, virSaveCookieCallbacksPtr saveCookie) { xmlNodePtr node =3D ctxt->node; @@ -77,7 +77,7 @@ virSaveCookieParse(xmlXPathContextPtr ctxt, =20 int virSaveCookieParseString(const char *xml, - virObjectPtr *obj, + GObject **obj, virSaveCookieCallbacksPtr saveCookie) { xmlDocPtr doc =3D NULL; @@ -105,7 +105,7 @@ virSaveCookieParseString(const char *xml, =20 int virSaveCookieFormatBuf(virBufferPtr buf, - virObjectPtr obj, + GObject *obj, virSaveCookieCallbacksPtr saveCookie) { if (!obj || !saveCookie || !saveCookie->format) @@ -125,7 +125,7 @@ virSaveCookieFormatBuf(virBufferPtr buf, =20 =20 char * -virSaveCookieFormat(virObjectPtr obj, +virSaveCookieFormat(GObject *obj, virSaveCookieCallbacksPtr saveCookie) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; diff --git a/src/conf/virsavecookie.h b/src/conf/virsavecookie.h index eafffbed66..b17701c727 100644 --- a/src/conf/virsavecookie.h +++ b/src/conf/virsavecookie.h @@ -23,14 +23,14 @@ #include =20 #include "internal.h" -#include "virobject.h" #include "virbuffer.h" +#include =20 =20 typedef int (*virSaveCookieParseFunc)(xmlXPathContextPtr ctxt, - virObjectPtr *obj); + GObject **obj); typedef int (*virSaveCookieFormatFunc)(virBufferPtr buf, - virObjectPtr obj); + GObject *obj); =20 typedef struct _virSaveCookieCallbacks virSaveCookieCallbacks; typedef virSaveCookieCallbacks *virSaveCookieCallbacksPtr; @@ -42,19 +42,19 @@ struct _virSaveCookieCallbacks { =20 int virSaveCookieParse(xmlXPathContextPtr ctxt, - virObjectPtr *obj, + GObject **obj, virSaveCookieCallbacksPtr saveCookie); =20 int virSaveCookieParseString(const char *xml, - virObjectPtr *obj, + GObject **obj, virSaveCookieCallbacksPtr saveCookie); =20 int virSaveCookieFormatBuf(virBufferPtr buf, - virObjectPtr obj, + GObject *obj, virSaveCookieCallbacksPtr saveCookie); =20 char * -virSaveCookieFormat(virObjectPtr obj, +virSaveCookieFormat(GObject *obj, virSaveCookieCallbacksPtr saveCookie); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 554bfa85f2..02f0ccaa08 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -163,21 +163,12 @@ struct _qemuDomainLogContext { }; =20 G_DEFINE_TYPE(qemuDomainLogContext, qemu_domain_log_context, G_TYPE_OBJECT= ); -static virClassPtr qemuDomainSaveCookieClass; +G_DEFINE_TYPE(qemuDomainSaveCookie, qemu_domain_save_cookie, G_TYPE_OBJECT= ); =20 static void qemuDomainLogContextFinalize(GObject *obj); -static void qemuDomainSaveCookieDispose(void *obj); +static void qemuDomainSaveCookieFinalize(GObject *obj); =20 =20 -static int -qemuDomainOnceInit(void) -{ - if (!VIR_CLASS_NEW(qemuDomainSaveCookie, virClassForObject())) - return -1; - - return 0; -} - static void qemu_domain_log_context_init(qemuDomainLogContext *logctxt G_G= NUC_UNUSED) { } @@ -189,8 +180,6 @@ static void qemu_domain_log_context_class_init(qemuDoma= inLogContextClass *klass) obj->finalize =3D qemuDomainLogContextFinalize; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomain); - static void qemuDomainLogContextFinalize(GObject *object) { @@ -204,6 +193,20 @@ qemuDomainLogContextFinalize(GObject *object) G_OBJECT_CLASS(qemu_domain_log_context_parent_class)->finalize(object); } =20 +static void +qemu_domain_save_cookie_init(qemuDomainSaveCookie *cookie G_GNUC_UNUSED) +{ +} + +static void +qemu_domain_save_cookie_class_init(qemuDomainSaveCookieClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D qemuDomainSaveCookieFinalize; +} + + const char * qemuDomainAsyncJobPhaseToString(qemuDomainAsyncJob job, int phase G_GNUC_UNUSED) @@ -12782,13 +12785,15 @@ qemuDomainGetStorageSourceByDevstr(const char *de= vstr, =20 =20 static void -qemuDomainSaveCookieDispose(void *obj) +qemuDomainSaveCookieFinalize(GObject *obj) { - qemuDomainSaveCookiePtr cookie =3D obj; + qemuDomainSaveCookiePtr cookie =3D QEMU_DOMAIN_SAVE_COOKIE(obj); =20 VIR_DEBUG("cookie=3D%p", cookie); =20 virCPUDefFree(cookie->cpu); + + G_OBJECT_CLASS(qemu_domain_save_cookie_parent_class)->finalize(obj); } =20 =20 @@ -12798,11 +12803,7 @@ qemuDomainSaveCookieNew(virDomainObjPtr vm) qemuDomainObjPrivatePtr priv =3D vm->privateData; g_autoptr(qemuDomainSaveCookie) cookie =3D NULL; =20 - if (qemuDomainInitialize() < 0) - return NULL; - - if (!(cookie =3D virObjectNew(qemuDomainSaveCookieClass))) - return NULL; + cookie =3D QEMU_DOMAIN_SAVE_COOKIE(g_object_new(QEMU_TYPE_DOMAIN_SAVE_= COOKIE, NULL)); =20 if (priv->origCPU && !(cookie->cpu =3D virCPUDefCopy(vm->def->cpu))) return NULL; @@ -12818,15 +12819,11 @@ qemuDomainSaveCookieNew(virDomainObjPtr vm) =20 static int qemuDomainSaveCookieParse(xmlXPathContextPtr ctxt G_GNUC_UNUSED, - virObjectPtr *obj) + GObject **obj) { g_autoptr(qemuDomainSaveCookie) cookie =3D NULL; =20 - if (qemuDomainInitialize() < 0) - return -1; - - if (!(cookie =3D virObjectNew(qemuDomainSaveCookieClass))) - return -1; + cookie =3D QEMU_DOMAIN_SAVE_COOKIE(g_object_new(QEMU_TYPE_DOMAIN_SAVE_= COOKIE, NULL)); =20 if (virCPUDefParseXML(ctxt, "./cpu[1]", VIR_CPU_TYPE_GUEST, &cookie->cpu) < 0) @@ -12834,14 +12831,14 @@ qemuDomainSaveCookieParse(xmlXPathContextPtr ctxt= G_GNUC_UNUSED, =20 cookie->slirpHelper =3D virXPathBoolean("boolean(./slirpHelper)", ctxt= ) > 0; =20 - *obj =3D (virObjectPtr) g_steal_pointer(&cookie); + *obj =3D G_OBJECT(g_steal_pointer(&cookie)); return 0; } =20 =20 static int qemuDomainSaveCookieFormat(virBufferPtr buf, - virObjectPtr obj) + GObject *obj) { qemuDomainSaveCookiePtr cookie =3D (qemuDomainSaveCookiePtr) obj; =20 diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 286a422338..01e51d5475 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -682,16 +682,20 @@ void qemuProcessEventFree(struct qemuProcessEvent *ev= ent); G_DECLARE_FINAL_TYPE(qemuDomainLogContext, qemu_domain_log_context, QEMU, = DOMAIN_LOG_CONTEXT, GObject); typedef qemuDomainLogContext *qemuDomainLogContextPtr; =20 -typedef struct _qemuDomainSaveCookie qemuDomainSaveCookie; -typedef qemuDomainSaveCookie *qemuDomainSaveCookiePtr; struct _qemuDomainSaveCookie { - virObject parent; + GObject parent; =20 virCPUDefPtr cpu; bool slirpHelper; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuDomainSaveCookie, virObjectUnref); +#define QEMU_TYPE_DOMAIN_SAVE_COOKIE qemu_domain_save_cookie_get_type() +G_DECLARE_FINAL_TYPE(qemuDomainSaveCookie, + qemu_domain_save_cookie, + QEMU, + DOMAIN_SAVE_COOKIE, + GObject); +typedef qemuDomainSaveCookie *qemuDomainSaveCookiePtr; =20 typedef struct _qemuDomainXmlNsDef qemuDomainXmlNsDef; typedef qemuDomainXmlNsDef *qemuDomainXmlNsDefPtr; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fd425aa3de..02c26d36dd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2873,7 +2873,7 @@ virQEMUSaveDataNew(char *domXML, data->xml =3D g_steal_pointer(&domXML); =20 if (cookieObj && - !(data->cookie =3D virSaveCookieFormat((virObjectPtr) cookieObj, + !(data->cookie =3D virSaveCookieFormat(G_OBJECT(cookieObj), virDomainXMLOptionGetSaveCook= ie(xmlopt)))) goto error; =20 @@ -6840,7 +6840,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, g_autoptr(qemuDomainSaveCookie) cookie =3D NULL; int rc =3D 0; =20 - if (virSaveCookieParseString(data->cookie, (virObjectPtr *)&cookie, + if (virSaveCookieParseString(data->cookie, (GObject **)&cookie, virDomainXMLOptionGetSaveCookie(driver->x= mlopt)) < 0) goto cleanup; =20 @@ -14475,7 +14475,7 @@ qemuDomainSnapshotCreateActiveInternal(virQEMUDrive= rPtr driver, if (ret < 0) goto cleanup; =20 - if (!(snapdef->cookie =3D (virObjectPtr) qemuDomainSaveCookieNew(vm))) + if (!(snapdef->cookie =3D G_OBJECT(qemuDomainSaveCookieNew(vm)))) goto cleanup; =20 if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_HALT) { @@ -15488,7 +15488,7 @@ qemuDomainSnapshotCreateActiveExternal(virQEMUDrive= rPtr driver, if (!(xml =3D qemuDomainDefFormatLive(driver, priv->qemuCaps, vm->def, priv->origCPU, true, true)) || - !(snapdef->cookie =3D (virObjectPtr) qemuDomainSaveCookieNew(v= m))) + !(snapdef->cookie =3D G_OBJECT(qemuDomainSaveCookieNew(vm)))) goto cleanup; =20 if (!(data =3D virQEMUSaveDataNew(xml, --=20 2.26.2 From nobody Fri Apr 26 18:00:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1589371162; cv=none; d=zohomail.com; s=zohoarc; b=U7CaKEwEayORmSZ7ayky8Errjd2OP64elDO2rOmJwbstr2T2/7bTdBeRzN6bAusAa8ClpjLAvWeG3W8oUnkahoKTuaK0Bux0B7/B/8bJQca3H8TiqaKd7JaGCwhy6xt6winOMO8NRwHaQXo41Wexq+ScUej2KYOixUJW2Bk09uE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371162; 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=Qfe4vI3U0dh5/UtX2TTLMc/4mERyZzX8RR40W9POwGg=; b=J0fhnXRCBQUA1ljmaGko3eyMnsHqS88+td73LACAXNr6Jf22yDpoIpFsZvWbOnPvQngNnQpbEYpvFZnAySWcHW+ny9iP8l9hyK8UIkjzLACZYrtAAq4jR2+SBkwaE+h2l8ONzB4FaxGtLpnCgak3R56MV62Gm4Qpv3FjOrEkUU8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1589371162388552.9171869328597; Wed, 13 May 2020 04:59:22 -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-443-MG6zkFvkNTOLKaXobAnAqA-1; Wed, 13 May 2020 07:59:19 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9A159107ACF8; Wed, 13 May 2020 11:59:11 +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 7164210027AF; Wed, 13 May 2020 11:59:11 +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 3FD984EA14; Wed, 13 May 2020 11:59:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx7XX016453 for ; Wed, 13 May 2020 07:59:07 -0400 Received: by smtp.corp.redhat.com (Postfix) id 79558114D0C; Wed, 13 May 2020 11:59:07 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 73D67114CE5 for ; Wed, 13 May 2020 11:59:07 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 56B6485A5B0 for ; Wed, 13 May 2020 11:59:07 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-226-eo_cUua5PPmZu8yHykj7Eg-1; Wed, 13 May 2020 07:59:05 -0400 Received: by mail-wr1-f67.google.com with SMTP id i15so20499570wrx.10 for ; Wed, 13 May 2020 04:59:04 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:59:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371161; 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=Qfe4vI3U0dh5/UtX2TTLMc/4mERyZzX8RR40W9POwGg=; b=RN4yDgweOxH97DD9Hnu4TECLEcUFxggrvhWh4n3QGHVZvM3Mi9PTS+Mb/nTnMYYOt5HJjM ZhuZiwCuvqMjuNF5GBPBQ44BC5KSa8XMkkjtbsV3feK1frjqhE7MefwTMeQpZ04FHtbfde 0CnCxBiNNgxZngalBi17bFw24KP/oM0= X-MC-Unique: MG6zkFvkNTOLKaXobAnAqA-1 X-MC-Unique: eo_cUua5PPmZu8yHykj7Eg-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=Qfe4vI3U0dh5/UtX2TTLMc/4mERyZzX8RR40W9POwGg=; b=heDT8XWPFmmc4gaHpG6gdKNW1PNiqxb0NlC3puHpD2XGqXXHoc1wBvpd4LlxpCqpLM 9dp2fobDrMTSjdziTxJWkZJKrb/F3PdEOuu5LFFIm/6WtkU+np3iUmt6yfCmWLmdEDkM 0cHp2GKqePPj5U0D84UBXA8BqIZmvdGiwGNiOD3K577D7xZd0wkTXLnGfNOHK+HBNbmo Plc3gfSIKgdVzJz/t7vhUQ1y7ylbUz1IZVWNk1jthGeSGDJMoabG/h3yxMM2M/n2dOz0 fqJaJa8m6AOzpnHDnrxvTkqp8E7+zOF8a85JZAsH1n52hHVUQ4ft9bHszLoODkj3vLoG CtSA== X-Gm-Message-State: AGi0PuaWpnwTnngNGAOxHQlWrIQX77Vvo/nvD/cH3MGccPvHgZjxfvYc NIMOFWfpnt7jKBzU82prQykoeUt7 X-Google-Smtp-Source: APiQypKXu20l5DL7qMr/tt9D9rXi0fxAFFwjT1UmIHQuO7q80NFU6EQg+9ALWZnugbtBthGzUJIhSg== X-Received: by 2002:a05:6000:1ca:: with SMTP id t10mr30464017wrx.230.1589371143233; Wed, 13 May 2020 04:59:03 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 40/40] util: convert virStorageSource to GObject Date: Wed, 13 May 2020 13:57:24 +0200 Message-Id: <20200513115724.157687-41-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.84 on 10.5.11.22 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/libvirt_private.syms | 1 + src/qemu/qemu_blockjob.c | 64 ++++++++++++++++----------------------- src/qemu/qemu_domain.c | 10 +++--- src/util/virstoragefile.c | 40 ++++++++++++------------ src/util/virstoragefile.h | 6 ++-- 5 files changed, 55 insertions(+), 66 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 14dace4628..8bc510c5bc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3092,6 +3092,7 @@ virStorageGenerateQcowPassphrase; =20 =20 # util/virstoragefile.h +vir_storage_source_get_type; virStorageAuthDefCopy; virStorageAuthDefFormat; virStorageAuthDefFree; diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 671bfad19b..cd16b81a24 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -91,10 +91,10 @@ static void qemuBlockJobDataDisposeJobdata(qemuBlockJobDataPtr job) { if (job->type =3D=3D QEMU_BLOCKJOB_TYPE_CREATE) - virObjectUnref(job->data.create.src); + g_object_unref(job->data.create.src); =20 if (job->type =3D=3D QEMU_BLOCKJOB_TYPE_BACKUP) { - virObjectUnref(job->data.backup.store); + g_object_unref(job->data.backup.store); g_free(job->data.backup.bitmap); } } @@ -105,8 +105,8 @@ qemuBlockJobDataFinalize(GObject *obj) { qemuBlockJobDataPtr job =3D QEMU_BLOCK_JOB_DATA(obj); =20 - virObjectUnref(job->chain); - virObjectUnref(job->mirrorChain); + g_clear_object(&job->chain); + g_clear_object(&job->mirrorChain); =20 qemuBlockJobDataDisposeJobdata(job); =20 @@ -185,7 +185,7 @@ qemuBlockJobRegister(qemuBlockJobDataPtr job, =20 if (disk) { job->disk =3D disk; - job->chain =3D virObjectRef(disk->src); + job->chain =3D g_object_ref(disk->src); QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob =3D g_object_ref(job); } =20 @@ -337,9 +337,9 @@ qemuBlockJobNewCreate(virDomainObjPtr vm, return NULL; =20 if (virStorageSourceIsBacking(chain)) - job->chain =3D virObjectRef(chain); + job->chain =3D g_object_ref(chain); =20 - job->data.create.src =3D virObjectRef(src); + job->data.create.src =3D g_object_ref(src); =20 if (qemuBlockJobRegister(job, vm, NULL, true) < 0) return NULL; @@ -370,7 +370,7 @@ qemuBlockJobDiskNewCopy(virDomainObjPtr vm, if (!(job =3D qemuBlockJobDataNew(QEMU_BLOCKJOB_TYPE_COPY, jobname))) return NULL; =20 - job->mirrorChain =3D virObjectRef(mirror); + job->mirrorChain =3D g_object_ref(mirror); =20 if (shallow && !reuse) job->data.copy.shallownew =3D true; @@ -399,7 +399,7 @@ qemuBlockJobDiskNewBackup(virDomainObjPtr vm, return NULL; =20 job->data.backup.bitmap =3D g_strdup(bitmap); - job->data.backup.store =3D virObjectRef(store); + job->data.backup.store =3D g_object_ref(store); =20 /* backup jobs are usually started in bulk by transaction so the caller * shall save the status XML */ @@ -688,14 +688,12 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr v= m, /* discard any detected backing store */ if (virStorageSourceIsBacking(n->backingStore) && n->backingStore->detected) { - virObjectUnref(n->backingStore); - n->backingStore =3D NULL; + g_clear_object(&n->backingStore); break; } } =20 - virObjectUnref(persistDisk->src); - persistDisk->src =3D g_steal_pointer(©); + g_set_object(&persistDisk->src, copy); } =20 =20 @@ -729,8 +727,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPt= r driver, disk->dst); } =20 - virObjectUnref(disk->src); - disk->src =3D disk->mirror; + g_set_object(&disk->src, disk->mirror); } else { if (disk->mirror) { virDomainLockImageDetach(driver->lockManager, vm, disk->mirror= ); @@ -740,7 +737,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPt= r driver, * Remove security driver metadata so that they are not leaked= . */ qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->mirr= or); =20 - virObjectUnref(disk->mirror); + g_object_unref(disk->mirror); } =20 qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->src); @@ -817,8 +814,7 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver, * Remove security driver metadata so that they are not leaked= . */ qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->mirr= or); =20 - virObjectUnref(disk->mirror); - disk->mirror =3D NULL; + g_clear_object(&disk->mirror); } disk->mirrorState =3D VIR_DOMAIN_DISK_MIRROR_STATE_NONE; disk->mirrorJob =3D VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN; @@ -930,8 +926,7 @@ qemuBlockJobClearConfigChain(virDomainObjPtr vm, if (!virStorageSourceIsSameLocation(disk->src, cfgdisk->src)) return; =20 - virObjectUnref(cfgdisk->src->backingStore); - cfgdisk->src->backingStore =3D NULL; + g_clear_object(&cfgdisk->src->backingStore); } =20 =20 @@ -997,14 +992,14 @@ qemuBlockJobProcessEventCompletedPull(virQEMUDriverPt= r driver, if (baseparent) baseparent->backingStore =3D NULL; qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, tmp= ); - virObjectUnref(tmp); + g_clear_object(&tmp); =20 if (cfgdisk) { tmp =3D cfgdisk->src->backingStore; cfgdisk->src->backingStore =3D cfgbase; if (cfgbaseparent) cfgbaseparent->backingStore =3D NULL; - virObjectUnref(tmp); + g_clear_object(&tmp); } } =20 @@ -1171,8 +1166,7 @@ qemuBlockJobProcessEventCompletedCommit(virQEMUDriver= Ptr driver, if (job->data.commit.deleteCommittedImages) qemuBlockJobDeleteImages(driver, vm, job->disk, job->data.commit.t= op); =20 - virObjectUnref(job->data.commit.top); - job->data.commit.top =3D NULL; + g_clear_object(&job->data.commit.top); =20 if (cfgbaseparent) { cfgbase =3D cfgbaseparent->backingStore; @@ -1183,7 +1177,7 @@ qemuBlockJobProcessEventCompletedCommit(virQEMUDriver= Ptr driver, else cfgdisk->src =3D cfgbase; =20 - virObjectUnref(cfgtop); + g_clear_object(&cfgtop); } } =20 @@ -1249,7 +1243,7 @@ qemuBlockJobProcessEventCompletedActiveCommit(virQEMU= DriverPtr driver, cfgbaseparent->backingStore =3D NULL; cfgdisk->src =3D cfgbase; cfgdisk->src->readonly =3D cfgtop->readonly; - virObjectUnref(cfgtop); + g_clear_object(&cfgtop); } =20 /* Move security driver metadata */ @@ -1265,11 +1259,9 @@ qemuBlockJobProcessEventCompletedActiveCommit(virQEM= UDriverPtr driver, if (job->data.commit.deleteCommittedImages) qemuBlockJobDeleteImages(driver, vm, job->disk, job->data.commit.t= op); =20 - virObjectUnref(job->data.commit.top); - job->data.commit.top =3D NULL; + g_clear_object(&job->data.commit.top); /* the mirror element does not serve functional purpose for the commit= job */ - virObjectUnref(job->disk->mirror); - job->disk->mirror =3D NULL; + g_clear_object(&job->disk->mirror); } =20 =20 @@ -1302,8 +1294,7 @@ qemuBlockJobProcessEventConcludedCopyPivot(virQEMUDri= verPtr driver, qemuBlockJobRewriteConfigDiskSource(vm, job->disk, job->disk->mirror); =20 qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, job= ->disk->src); - virObjectUnref(job->disk->src); - job->disk->src =3D g_steal_pointer(&job->disk->mirror); + g_set_object(&job->disk->src, job->disk->mirror); } =20 =20 @@ -1321,8 +1312,7 @@ qemuBlockJobProcessEventConcludedCopyAbort(virQEMUDri= verPtr driver, return; =20 qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, job= ->disk->mirror); - virObjectUnref(job->disk->mirror); - job->disk->mirror =3D NULL; + g_clear_object(&job->disk->mirror); } =20 =20 @@ -1343,8 +1333,7 @@ qemuBlockJobProcessEventFailedActiveCommit(virQEMUDri= verPtr driver, * not leaking security driver metadata is more important. */ qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->mirror); =20 - virObjectUnref(disk->mirror); - disk->mirror =3D NULL; + g_clear_object(&disk->mirror); } =20 =20 @@ -1394,8 +1383,7 @@ qemuBlockJobProcessEventConcludedCreate(virQEMUDriver= Ptr driver, * it will handle further hotplug of the created volume and also that * the 'chain' which was registered is under their control */ if (job->synchronous) { - virObjectUnref(job->chain); - job->chain =3D NULL; + g_clear_object(&job->chain); return; } =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 02f0ccaa08..336a2f53c3 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1184,7 +1184,7 @@ qemuDomainDiskPrivateFinalize(GObject *obj) { qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 - virObjectUnref(priv->migrSource); + g_clear_object(&priv->migrSource); VIR_FREE(priv->qomName); VIR_FREE(priv->nodeCopyOnRead); g_clear_object(&priv->blockjob); @@ -2270,10 +2270,8 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePt= r priv) =20 virHashRemoveAll(priv->blockjobs); =20 - virObjectUnref(priv->pflash0); - priv->pflash0 =3D NULL; - virObjectUnref(priv->pflash1); - priv->pflash1 =3D NULL; + g_clear_object(&priv->pflash0); + g_clear_object(&priv->pflash1); =20 virDomainBackupDefFree(priv->backup); priv->backup =3D NULL; @@ -3410,7 +3408,7 @@ qemuDomainObjPrivateXMLParseBlockjobData(virDomainObj= Ptr vm, =20 if (mirror) { if (disk) - job->mirrorChain =3D virObjectRef(disk->mirror); + job->mirrorChain =3D g_object_ref(disk->mirror); else invalidData =3D true; } diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 173a6a75f3..7f56a20215 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -45,7 +45,21 @@ =20 VIR_LOG_INIT("util.storagefile"); =20 -static virClassPtr virStorageSourceClass; +G_DEFINE_TYPE(virStorageSource, vir_storage_source, G_TYPE_OBJECT); +static void virStorageSourceFinalize(GObject *obj); + +static void +vir_storage_source_init(virStorageSource *src G_GNUC_UNUSED) +{ +} + +static void +vir_storage_source_class_init(virStorageSourceClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virStorageSourceFinalize; +} =20 VIR_ENUM_IMPL(virStorage, VIR_STORAGE_TYPE_LAST, @@ -2654,8 +2668,7 @@ virStorageSourceBackingStoreClear(virStorageSourcePtr= def) VIR_FREE(def->backingStoreRaw); =20 /* recursively free backing chain */ - virObjectUnref(def->backingStore); - def->backingStore =3D NULL; + g_clear_object(&def->backingStore); } =20 =20 @@ -2707,34 +2720,21 @@ virStorageSourceClear(virStorageSourcePtr def) =20 =20 static void -virStorageSourceDispose(void *obj) +virStorageSourceFinalize(GObject *obj) { - virStorageSourcePtr src =3D obj; + virStorageSourcePtr src =3D VIR_STORAGE_SOURCE(obj); =20 virStorageSourceClear(src); -} =20 - -static int -virStorageSourceOnceInit(void) -{ - if (!VIR_CLASS_NEW(virStorageSource, virClassForObject())) - return -1; - - return 0; + G_OBJECT_CLASS(vir_storage_source_parent_class)->finalize(obj); } =20 =20 -VIR_ONCE_GLOBAL_INIT(virStorageSource); - =20 virStorageSourcePtr virStorageSourceNew(void) { - if (virStorageSourceInitialize() < 0) - return NULL; - - return virObjectNew(virStorageSourceClass); + return VIR_STORAGE_SOURCE(g_object_new(VIR_TYPE_STORAGE_SOURCE, NULL)); } =20 =20 diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index 58e8e1d8cf..c8bab3aaf8 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -275,7 +275,7 @@ typedef virStorageSource *virStorageSourcePtr; * IMPORTANT: When adding fields to this struct it's also necessary to add * appropriate code to the virStorageSourceCopy deep copy function */ struct _virStorageSource { - virObject parent; + GObject parent; =20 unsigned int id; /* backing chain identifier, 0 is unset */ int type; /* virStorageType */ @@ -386,7 +386,9 @@ struct _virStorageSource { bool ssh_host_key_check_disabled; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageSource, virObjectUnref); +#define VIR_TYPE_STORAGE_SOURCE vir_storage_source_get_type() +G_DECLARE_FINAL_TYPE(virStorageSource, vir_storage_source, VIR, STORAGE_SO= URCE, GObject); + =20 =20 #ifndef DEV_BSIZE --=20 2.26.2