From nobody Wed May 1 20:24:32 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=1587477020; cv=none; d=zohomail.com; s=zohoarc; b=g7j1fhSTJDnpMPsh6wJTLBKUfmgvvJm0Z72415KemLmMG6AGWyPb4Vwsxbx1W083iRHq7FK65+yYZIk6iM+VeJxj4W7YLavZ6D7CBA0u+YmMQGU18OAldzlcmFjyFc29WeVynRrWbSY9XvO0gopHbxf+UnG97cNqSVe3wEVdFTA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477020; 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=7oHoQtsIkfGHzgvO9INxHKVS6PiUt6UZUNPnQEOZeSU=; b=b1iLo9ivOdRAs8VkTzwJtr8icpM8An8Fe7YHiS3QVJp6KleTpZZugb9i3UqwJW050/gdZ4hSy2Zsic0NVfV0rmW8vPuzzpE8kx4zDmcvrqLbH6ajH6mkhMRo+52cAGuAZa9zNS4Dm8qACYG4sncKAMEyjUyFCrib8D+f5N7Y2Z4= 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 1587477020079832.101404008644; Tue, 21 Apr 2020 06:50: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-208-2R-VWIMaPJeqy_E9Fm_FnA-1; Tue, 21 Apr 2020 09:50:16 -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 2A2F81B2C980; Tue, 21 Apr 2020 13:50:10 +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 6B6505C1B2; Tue, 21 Apr 2020 13:50:09 +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 CB3C6941A1; Tue, 21 Apr 2020 13:50:04 +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 03LDo2Oe003201 for ; Tue, 21 Apr 2020 09:50:02 -0400 Received: by smtp.corp.redhat.com (Postfix) id B708C1C0EEB; Tue, 21 Apr 2020 13:50:02 +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 B248E9D60 for ; Tue, 21 Apr 2020 13:50:00 +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 3C3C91019E13 for ; Tue, 21 Apr 2020 13:50:00 +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-471-7aJn3rF1OmihD6jexOVgEA-1; Tue, 21 Apr 2020 09:49:58 -0400 Received: by mail-wm1-f65.google.com with SMTP id u127so3775741wmg.1 for ; Tue, 21 Apr 2020 06:49:57 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:49:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477018; 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=7oHoQtsIkfGHzgvO9INxHKVS6PiUt6UZUNPnQEOZeSU=; b=GvN6amdGSa79NIeL/KwQd33xb82wxfTFQg2HOkd89QS8oHSB+xKDlWeLng7xL1Fu+IaErI nv0nD7gkzTV8NlrRVYMXyLmjw2j79vulNHbLs9Uk/gaJI7/wRA8UyJ9Et5rtNQxf+3JuBg 7vcbloypfLWKhFz4yISZ/CQaeBZPGxE= X-MC-Unique: 2R-VWIMaPJeqy_E9Fm_FnA-1 X-MC-Unique: 7aJn3rF1OmihD6jexOVgEA-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=P9tRI8edfkoms4Da9N2fYh86OzaYVKV0p/WcfRqoq3Q=; b=DgFvLg6lTCj0BopLmHj8gO8ASwYZeipyKgLDwQzBv7/rn/GUayq9rO06f7Zd06i783 xHkfxELTvUuAVnGOyY4SMkykdxyn9VbYNfqSKyzTCi3cDsJtRgnZYVmazajH7HyLCEnh h/wvxCj6RrE9aM1W/JEnI8ZmZds1jv0HXZQN6QNxfZx4/8RxN9Mhwz2+L4rlCzTIXkHk wgA3cmfxarMrJfUyMNSbcilOHj1gg45417taQtlQgFn9l+rlNasKNEOEiE4voEy14EI3 eypgVBKsJxlRRCZbXTH+DBrRNIwV7RzDoOY2i5MPbuUiXjQhaeylaGyrWN1948jx8Wvz 2bsg== X-Gm-Message-State: AGi0Pua4nwmN0EBA/ovuIORI7ABH5Iwq/wGM0bFD41r2W+9dpIBux+Ok P+wJaimIFcpiGI71jbFdU8ThHNHFJPk= X-Google-Smtp-Source: APiQypKd47T17msTpfInSTQnL0o4laF5MpJhhQF3SGfaoAE7SY/CaRL6mMelbi+xOvnfGwhiodzgsA== X-Received: by 2002:a7b:c5d8:: with SMTP id n24mr4933096wmk.158.1587476996100; Tue, 21 Apr 2020 06:49:56 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 01/40] util: virresctrl: convert classes to GObject Date: Tue, 21 Apr 2020 15:48:42 +0200 Message-Id: <20200421134921.3717019-2-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDo2Oe003201 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 | 164 ++++++++++++++++++++------------------- src/util/virresctrl.h | 15 ++-- tests/virresctrltest.c | 3 +- 6 files changed, 107 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 8700d56761..674cfa408e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3304,7 +3304,7 @@ virDomainResctrlMonDefFree(virDomainResctrlMonDefPtr = domresmon) return; =20 virBitmapFree(domresmon->vcpus); - virObjectUnref(domresmon->instance); + g_clear_object(&domresmon->instance); VIR_FREE(domresmon); } =20 @@ -3320,7 +3320,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); @@ -19950,11 +19950,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"); @@ -20064,7 +20059,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: @@ -20111,8 +20106,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) @@ -20297,10 +20291,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 182a570382..7bba191b03 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2916,6 +2916,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 c537d606cc..ce11a24a54 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,71 @@ 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) +virResctrlMonitorDispose(GObject *obj) { - virResctrlMonitorPtr monitor =3D obj; + virResctrlMonitorPtr monitor =3D VIR_RESCTRL_MONITOR(obj); + + g_clear_object(&monitor->alloc); + + G_OBJECT_CLASS(vir_resctrl_alloc_parent_class)->dispose(obj); +} + +static void +virResctrlMonitorFinalize(GObject *obj) +{ + virResctrlMonitorPtr monitor =3D VIR_RESCTRL_MONITOR(obj); =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->dispose =3D virResctrlMonitorDispose; + obj->finalize =3D virResctrlMonitorFinalize; +} =20 /* Common functions */ static int @@ -793,21 +830,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 +1063,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 +1795,7 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl, =20 error: VIR_FREE(schemata); - virObjectUnref(*alloc); - *alloc =3D NULL; + g_clear_object(alloc); return -1; } =20 @@ -1779,9 +1804,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 +1859,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 +1904,7 @@ virResctrlAllocNewFromInfo(virResctrlInfoPtr info) virBitmapFree(mask); return ret; error: - virObjectUnref(ret); - ret =3D NULL; + g_clear_object(&ret); goto cleanup; } =20 @@ -1907,7 +1926,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 +1946,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 +1967,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 +2245,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 +2255,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 +2281,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 +2297,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 +2305,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 @@ -2506,10 +2517,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 @@ -2623,7 +2631,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.25.3 From nobody Wed May 1 20:24:32 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=1587477032; cv=none; d=zohomail.com; s=zohoarc; b=W0f6aURSOPVPCtp9BSiVm4e6tOoFxFYVYxTaqqFTqwpUsVBmlvUNgqjPoMnYDtSD81AmKeEnzdeNg2KNztd2O8+84366afOcq/c7ytkS62wRcJSyThBYR5TPMe7MW6aAsA0kWuG8ykrJiPvAFTFVCZC9SU2f67Ju2H9F33HHfFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477032; 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=1S8aIB+B01diI+YFFDtfL/7zahtU0OWToPhV+fVsXAg=; b=jqTZ1iZ6xMBwO/QfC+YYrJVuQgE1Obq6kpx38OPuIWnH9n54tLoTMKmhT+0ukhEXleBz8Hm5EvWGzCHIb+WTjGuQu5ZyrnJ4GEJwUS/8faCyHDEC2VrqJfpZN9iHiVT7R2tYR5D5mV4ZLU6x9g9pjQ1P3RCMPBm/VXXovHqCwdY= 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 1587477032858372.03439983161843; Tue, 21 Apr 2020 06:50: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-105-LscizHmVOv-MIqaj98y-Pg-1; Tue, 21 Apr 2020 09:50:28 -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 140B01B2C983; Tue, 21 Apr 2020 13:50:22 +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 D218E28988; Tue, 21 Apr 2020 13:50: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 79C1B18089D0; Tue, 21 Apr 2020 13:50:21 +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 03LDo6YG003225 for ; Tue, 21 Apr 2020 09:50:06 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0D58D2093CE6; Tue, 21 Apr 2020 13:50:06 +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 0805D2026E1C for ; Tue, 21 Apr 2020 13:50: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 9B5511019E15 for ; Tue, 21 Apr 2020 13:50:03 +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-370-b0QNQUM2OAWT51U1rkIdfQ-1; Tue, 21 Apr 2020 09:50:01 -0400 Received: by mail-wr1-f50.google.com with SMTP id d17so16514029wrg.11 for ; Tue, 21 Apr 2020 06:50:00 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.49.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:49:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477031; 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=1S8aIB+B01diI+YFFDtfL/7zahtU0OWToPhV+fVsXAg=; b=GeiSoT/mSr9hgulRyZKjblz921G8O9pefAiDuQ2nyyAARupl3vqiLFcTcDFYEZN1v1YkdS ig/H2BZCFTPig6OtJ2R+jbS+/pKC6g1xK5nqwU2o4hvcNpgx1IdWn5FxnuoliuHN1JWd93 Rb96Ue6Z3FVAWvd8RlGTfzBKgw4iHi8= X-MC-Unique: LscizHmVOv-MIqaj98y-Pg-1 X-MC-Unique: b0QNQUM2OAWT51U1rkIdfQ-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=sDS3jTB5WqwP/GKNg+yjjRngsbyzVj6u02mEkw859aU=; b=fVBvwbB63RXRU2tnpg+qOzfZkAly8krG7n3QcgqHCI9PM5MmiDmpbOok9ioF8QhNEs lsGoO63oeh9dxFh0FzcUf/30u2VpsrICVj5lXafyq3PLMQn1hjgNhdUNHc3Teb0yKPJk ySwLXSctbVDy2fJ6CkVuIDzLj9+kqFXxc4gJr0EAHEi0hmNULMwlZlw0+gA3OA/Q2wIP FbJ/2KnnjrQrlcPA7/izukop+495CTHU6duDM+afEBocKb46YZNDBNbim53NvMc+/409 VlWwTYt0xVdGk2l3jTJMmyhLoUPoU8rnSvGg4o+BntuV0ug0GiNC+PUWEf6lH8d1KboZ ZADw== X-Gm-Message-State: AGi0PuYQNO6XHZgppiReTW0+UrqGKDBF05qcyXYX9iGIa7pOL2TpiYZ1 x744cLaaJJ0zUiIlvlwacrttEWkst7k= X-Google-Smtp-Source: APiQypLpRMfYdxdp2LjFtM/S9042si6luVFLHzxC7/nnbtbbiASAggQFxn+UkAaQVfCkxD08S68yEQ== X-Received: by 2002:adf:ca0e:: with SMTP id o14mr26048587wrh.254.1587476998349; Tue, 21 Apr 2020 06:49:58 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 02/40] conf: capabilities: convert virCaps to GOBject Date: Tue, 21 Apr 2020 15:48:43 +0200 Message-Id: <20200421134921.3717019-3-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDo6YG003225 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_capabilities.c | 16 ++++------- src/bhyve/bhyve_driver.c | 29 +++++++------------ src/conf/capabilities.c | 51 +++++++++++++++++++-------------- 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, 167 insertions(+), 266 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..7da67a6ce3 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,19 @@ virCapabilitiesClearSecModel(virCapsHostSecModelPtr se= cmodel) } =20 static void -virCapsDispose(void *object) +virCapsDispose(GObject *object) +{ + virCapsPtr caps =3D VIR_CAPS(object); + + g_clear_object(&caps->host.resctrl); + + G_OBJECT_CLASS(vir_caps_parent_class)->dispose(object); +} + +static void +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++) @@ -266,7 +260,22 @@ virCapsDispose(void *object) VIR_FREE(caps->host.netprefix); 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->dispose =3D virCapsDispose; + 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 7bba191b03..2cde3c9aa5 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 b3f67f817a..b7c119366e 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 851894c459..0cce0d70b7 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 @@ -1623,7 +1611,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 @@ -1802,7 +1790,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; @@ -1924,7 +1912,6 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, cleanup: virDomainDefFree(persistentDefCopy); virDomainObjEndAPI(&vm); - virObjectUnref(caps); virObjectUnref(cfg); return ret; } @@ -4477,7 +4464,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; @@ -4563,7 +4550,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 fe311048d4..840373bae9 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1067,13 +1067,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"); @@ -1101,13 +1099,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 c59824006c..c29b543b16 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 dfe0adaad8..bf0a817ff1 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 8526b7b985..02c0dc7fbc 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 7759847c2d..00ee8f7c59 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 fd62bb96f7..c8115ede3c 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 d9244dca44..b7ba016306 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 @@ -464,7 +463,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 5fd81b70a2..5383df083d 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -909,9 +909,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 cb68ac0488..73a92a2830 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.25.3 From nobody Wed May 1 20:24:32 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=1587477029; cv=none; d=zohomail.com; s=zohoarc; b=BLu/Wd77uplI6giwHc/kptTPd5AQ/5eYsFsMPq2Urg29xi3MBJZ3uvI9YsRl5dt4cx9Rux6WvZA0litHyYq2A6ojvwJX0f7JSj8cIhoFOnu8sUgIsM7wVco7t5GUOz1NPWR8Xl0H5EwP/uS/EVsOLKIC/XBqrWL1gnhKJQesQqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477029; 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=C9hta9PTKo31sRy07yTwG5IkzEstXShhOhZrQbHb8zw=; b=HnM8L69Cv6iyEHM9wiBiaxvBl63RdRfX2NAt5LDgL2z6ZvEMrDCoCuo7OP4CXE+TC1XF65Et9Sc0IIiJ3fItQsmVgOt1GjTYNgMqCPQ3jipj7tmXDIiVlDgwYur2LmNBgIimf8aSVq+/0PHYxnZ7fi2VIiIv+hIDKez+CmVW1uU= 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 158747702907758.82282891635532; Tue, 21 Apr 2020 06:50: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-349-vnPlzdLHMSKbuftyICQS6Q-1; Tue, 21 Apr 2020 09:50:22 -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 13E10107B275; Tue, 21 Apr 2020 13:50:17 +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 C7754B3A6B; Tue, 21 Apr 2020 13:50:15 +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 6F18E941A8; Tue, 21 Apr 2020 13:50:15 +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 03LDo8LH003240 for ; Tue, 21 Apr 2020 09:50:08 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7757B2024517; Tue, 21 Apr 2020 13:50:08 +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 72A5620292BF for ; Tue, 21 Apr 2020 13:50:08 +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 492C68001E4 for ; Tue, 21 Apr 2020 13:50:08 +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-189-Go9bXlvuOie-rqBPZZeAdg-1; Tue, 21 Apr 2020 09:50:02 -0400 Received: by mail-wr1-f54.google.com with SMTP id x18so16586857wrq.2 for ; Tue, 21 Apr 2020 06:50:01 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.49.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477025; 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=C9hta9PTKo31sRy07yTwG5IkzEstXShhOhZrQbHb8zw=; b=imWRLWxTD4hspqVGO0LWSTw+SxcYWBZ9q5cWCFsaci7q5crKGfJ1ovht8XKPNKiT65bO9e cuHkiA+KdzJhyBGUPp5ZaNj0Fgt80zzfMrNstyJD3L5qs8pm5DMmLX8QVQUL5BbWZwIaHL tXC1pTQvvxqLAseZ/1VKSWCTpAMcuL4= X-MC-Unique: vnPlzdLHMSKbuftyICQS6Q-1 X-MC-Unique: Go9bXlvuOie-rqBPZZeAdg-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=sV3egSxyOTajv2qHXwiuDIc7PWit1ZZ4nZiB4a8WZOs=; b=OXiutTBQXmjmEGxsT58iz5/0lp72wXpBWYhw0BOAZirYubDHN87ORsKRTAcAdnMtD8 7b9xm/tTo7tyVimdeVYLYxVVq88Av2kT38XLpE8i6qU1/VcZSNLJSaR1R8Lh86CweZRt j5+etV1UtHQh6afgICGo5CHd/BIfCc6n93xmIwRqehUlCSRckZTQJa7aFCa6xOqmZeMV HFCuGj/TqU4l2lRFrndoCRVCJUtzCgp5cmxIYbxNdUBi18TU9wNaSn0bY8VxzdrStSqq A/Q9yR6fzuqXjuT2Geu8gPXM+nWJdo7tcYSXkgMm/seHWXfeC0bGEIZIcDK8Mcqn+Vgh MRzg== X-Gm-Message-State: AGi0Pubt5WXwzV1g+eqU64hZaF5+DdYBwcJJx4Ms5hr6oqiW+p05Lqb3 Dmj8XCqZLzT/11zy7PG16g5PpzJVzWM= X-Google-Smtp-Source: APiQypL2ouN0rCoRSEREbaE8TBhJ4lDmmxvRA47uCEauLwt7YsM9WHPKH8gkDVYjxpfQHQie43dflQ== X-Received: by 2002:a5d:4b49:: with SMTP id w9mr24451450wrs.359.1587476999855; Tue, 21 Apr 2020 06:49:59 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 03/40] qemu: convert virQEMUCaps to GObject Date: Tue, 21 Apr 2020 15:48:44 +0200 Message-Id: <20200421134921.3717019-4-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDo8LH003240 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" 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 | 162 +++++++++++++++++------------------ 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, 172 insertions(+), 208 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 840373bae9..f764c368a1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -644,7 +644,7 @@ static void virQEMUDomainCapsCacheDispose(void *obj) * And don't forget to update virQEMUCapsNewCopy. */ struct _virQEMUCaps { - virObject parent; + GObject parent; =20 bool kvmSupportsNesting; =20 @@ -682,14 +682,25 @@ 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 virQEMUCapsDispose(GObject *obj); +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->dispose =3D virQEMUCapsDispose; + obj->finalize =3D virQEMUCapsFinalize; +} =20 +static int virQEMUCapsOnceInit(void) +{ if (!(VIR_CLASS_NEW(virQEMUDomainCapsCache, virClassForObjectLockable(= )))) return -1; =20 @@ -869,7 +880,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); @@ -887,7 +898,6 @@ virQEMUCapsInitGuest(virCapsPtr caps, guestarch); =20 VIR_FREE(binary); - virObjectUnref(qemuCaps); =20 return ret; } @@ -1650,7 +1660,7 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, virFileCachePtr capsCache, unsigned int *version) { - virQEMUCapsPtr qemucaps; + g_autoptr(virQEMUCaps) qemucaps =3D NULL; virArch hostarch; virCapsDomainDataPtr capsdata; =20 @@ -1673,7 +1683,6 @@ int virQEMUCapsGetDefaultVersion(virCapsPtr caps, return -1; =20 *version =3D virQEMUCapsGetVersion(qemucaps); - virObjectUnref(qemucaps); return 0; } =20 @@ -1699,26 +1708,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 @@ -1835,7 +1835,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) @@ -1859,10 +1859,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]; @@ -1870,13 +1870,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 @@ -1897,11 +1893,20 @@ virQEMUCapsAccelClear(virQEMUCapsAccelPtr caps) } =20 =20 -void virQEMUCapsDispose(void *obj) +static void virQEMUCapsDispose(GObject *obj) { - virQEMUCapsPtr qemuCaps =3D obj; + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(obj); =20 virObjectUnref(qemuCaps->domCapsCache); + qemuCaps->domCapsCache =3D NULL; + + G_OBJECT_CLASS(vir_qemu_caps_parent_class)->dispose(obj); +} + +static void virQEMUCapsFinalize(GObject *obj) +{ + virQEMUCapsPtr qemuCaps =3D VIR_QEMU_CAPS(obj); + virBitmapFree(qemuCaps->flags); =20 VIR_FREE(qemuCaps->package); @@ -1914,6 +1919,8 @@ void virQEMUCapsDispose(void *obj) =20 virQEMUCapsAccelClear(&qemuCaps->kvm); virQEMUCapsAccelClear(&qemuCaps->tcg); + + G_OBJECT_CLASS(vir_qemu_caps_parent_class)->finalize(obj); } =20 void @@ -4522,14 +4529,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) { @@ -4635,15 +4645,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 @@ -5160,18 +5173,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 @@ -5182,11 +5195,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; @@ -5202,48 +5215,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 @@ -5359,15 +5366,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 @@ -5471,8 +5476,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 @@ -5480,14 +5484,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) { @@ -5496,7 +5500,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, } =20 if (!(qemuCaps =3D virQEMUCapsCacheLookup(cache, binary))) - goto cleanup; + return NULL; =20 arch_from_caps =3D virQEMUCapsGetArch(qemuCaps); =20 @@ -5510,7 +5514,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, "match given architecture '%s'"), virArchToString(arch_from_caps), virArchToString(arch)); - goto cleanup; + return NULL; } =20 if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) @@ -5525,7 +5529,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) { @@ -5536,7 +5540,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); @@ -5549,11 +5553,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 1681fc79a8..8ae727b0e1 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" @@ -558,10 +560,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 98ffd23a71..0ee0972902 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2250,8 +2250,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 @@ -4955,7 +4954,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 @@ -5910,7 +5909,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) { @@ -5998,7 +5997,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 @@ -6031,9 +6030,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 @@ -6876,7 +6875,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 8ea470f75f..b35377d42b 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5490,7 +5490,7 @@ qemuProcessPrepareQEMUCaps(virDomainObjPtr vm, qemuDomainObjPrivatePtr priv =3D vm->privateData; size_t i; =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 869d016ffc..0a91892f4e 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -519,8 +519,7 @@ cpuTestMakeQEMUCaps(const struct data *data) return qemuCaps; =20 error: - virObjectUnref(qemuCaps); - qemuCaps =3D NULL; + g_clear_object(&qemuCaps); goto cleanup; } =20 @@ -529,7 +528,7 @@ static int cpuTestGetCPUModels(const struct data *data, virDomainCapsCPUModelsPtr *models) { - virQEMUCapsPtr qemuCaps; + g_autoptr(virQEMUCaps) qemuCaps =3D NULL; =20 *models =3D NULL; =20 @@ -542,8 +541,6 @@ cpuTestGetCPUModels(const struct data *data, =20 *models =3D virQEMUCapsGetCPUModels(qemuCaps, VIR_DOMAIN_VIRT_KVM, NUL= L, NULL); =20 - virObjectUnref(qemuCaps); - return 0; } =20 @@ -876,7 +873,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; @@ -898,7 +895,6 @@ cpuTestJSONCPUID(const void *arg) ret =3D cpuTestCompareXML(data->arch, cpu, result); =20 cleanup: - virObjectUnref(qemuCaps); virCPUDefFree(cpu); VIR_FREE(result); return ret; @@ -909,7 +905,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; @@ -924,7 +920,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 f9fbfc98f2..ec97e399c8 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 c7e8f3309d..f3705a1ed5 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)) { @@ -78,7 +78,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 73a92a2830..440c91868f 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 @@ -358,7 +354,7 @@ int qemuTestCapsCacheInsert(virFileCachePtr cache, } =20 if (virFileCacheInsertData(cache, qemu_emulators[i], tmpCaps) < 0)= { - virObjectUnref(tmpCaps); + g_object_unref(tmpCaps); return -1; } } @@ -662,7 +658,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; @@ -779,7 +775,6 @@ testQemuInfoSetArgs(struct testQemuInfo *info, ret =3D 0; =20 cleanup: - virObjectUnref(qemuCaps); va_end(argptr); =20 return ret; @@ -791,5 +786,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.25.3 From nobody Wed May 1 20:24:32 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=1587477034; cv=none; d=zohomail.com; s=zohoarc; b=NdGpfvKrIkrKk8M3WiC3s1kKKcsuBMR4TErBCOer+aydbOU8ywLveBeIUIftn8PX3lbqSqPiMqmte/WMZSbshfsNOdipipcHhtbbE1x7RS/NOvNYZ2fn0RKFafSexwWmTZyu01YOVKJ2IXsKiGE5+C9TEYV2JWjZMtdGFtq2tFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477034; 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=IfDxAU4M6t6JE1wAVtfF8pmPsC8Md21j/LrhUEA+jUQ=; b=Bum0zQn5Ql49SCGtfF0yMGPpGfMLAQbgZKEpO4pGOOJmPeo26h4YqfXiaCVwsWLMS6RaTqbzzURZ3L37AAh55+SBAA2wg9Dm8jhyjlXie//rGgYcybmwvZpIBGchnLK2rTvVYY7R1R2O8oWRVeJx35flfiSc3dcbi34ENzpoIng= 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 1587477033998401.6905468451208; Tue, 21 Apr 2020 06:50: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-485-VHt8jDeeMLemNIUs4uOwzA-1; Tue, 21 Apr 2020 09:50:18 -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 846E5107ACC7; Tue, 21 Apr 2020 13:50:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2FCF819925; Tue, 21 Apr 2020 13:50:13 +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 B032418089CD; Tue, 21 Apr 2020 13:50:12 +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 03LDo94K003253 for ; Tue, 21 Apr 2020 09:50:09 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5C92211921A3; Tue, 21 Apr 2020 13:50:09 +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 565C011921A5 for ; Tue, 21 Apr 2020 13:50:05 +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 8F891185A78E for ; Tue, 21 Apr 2020 13:50:05 +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-451-50zO7brBNEe88po1nXR1cg-1; Tue, 21 Apr 2020 09:50:03 -0400 Received: by mail-wr1-f48.google.com with SMTP id s10so7411528wrr.0 for ; Tue, 21 Apr 2020 06:50:02 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477032; 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=IfDxAU4M6t6JE1wAVtfF8pmPsC8Md21j/LrhUEA+jUQ=; b=SJmmmz/a/pYLOYUy8DrWivWTgrTObNLftnLOIhTSsZHUqe4zdBsmx6Di+1/1WS0T8NmGWc c0EqP+nP44e2Dv+XNdn8IyNj4PIDzLuHXuLCNX3sCASOWbww3c4MQdKDfK1FHi5yDTfrrm U+iLCzzn7Ejlk9XJ6KiLSKUnfd+lg1A= X-MC-Unique: VHt8jDeeMLemNIUs4uOwzA-1 X-MC-Unique: 50zO7brBNEe88po1nXR1cg-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=Gh/i1jHHCJqfRy3yQ8hxEOAl+9xgIkk9ve1w1Lc8m9A=; b=ne8sbBLuOU+QkdTeCRQjAgU5mrD+SekZjwWB/kEgqCgvTqWwvWPCGIA5Tv8raCNF1A dE4LhwJVPaplNtnA5caN/m37dLQFKMfLf/PDZV70RWu+twEv7FkRD9wnCDkokfKxK/1f lFmv7ENB6a5aTRFcpA6vX8g2Lqb1IxyDT0wZhmURcnyhD+6MUV6+lmRSNtoD6JFy1ISf A0i3XJz2+NKF6FE6dl2CRBIMupI055Ylc3yICQEP4lang1UL9w0tEzqMs1mwyQcma6us XcWhqQu+JhY3Dc+XGftFVEmNv+jI5gyZGE3ol3vfRcV04KMS0qr9E6NNlWN/QvEVYyoP 9w1Q== X-Gm-Message-State: AGi0Puab+YWz+ajDRJouMQKkGnzxRFZmPBJL0UYfO+8RjRFFNDw2mb7b Hpcrcd4eVx/f+R2ypdqiiIPHGtmE4y8= X-Google-Smtp-Source: APiQypLCYpZsV6cHrfPJQE808Q3lr54uLUdKXPUY7gqgQcbfdhZz1sYyYhKQJc5eUVNfpj7F/gxeaA== X-Received: by 2002:adf:f98e:: with SMTP id f14mr23978034wrr.253.1587477001621; Tue, 21 Apr 2020 06:50:01 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 04/40] util: add function to unref array of GObjects Date: Tue, 21 Apr 2020 15:48:45 +0200 Message-Id: <20200421134921.3717019-5-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDo94K003253 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" 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 2cde3c9aa5..4286efdd36 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2734,6 +2734,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.25.3 From nobody Wed May 1 20:24:32 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=1587477039; cv=none; d=zohomail.com; s=zohoarc; b=OhOXQoRMn8nU4dTSMe2meb9k9DSBbWilGcW/xY8cTi5fm4xyuE/MIyt5WY9A0Sse3SkyTgCqvd/z0gmeFEVP3KZGJW4K7hCV23ZlmOJbj5krfPN4Sle7aGBABYLq7ewxfclTod5AGMfG5UWd5sz1/4V+4n48cRuXfL/MomXd/sw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477039; 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=tWGJ2vlVDbqXboD1QmGCg00gBVMmI3aanqu3yNxVQZY=; b=D49xOZfKr/WMqOK9eUG52UDZFWYpy8rrEZfVd0Ait3JSlvvvpw+nawYwTZG4blkbxdiSnQOn1C/UO44niI0zNdahg60SVj+6p6V7mdJV/1SZALrNftk32Qu2DCKsQgs7igk/VbJKPuBlicg4A3iwD8bt9GYbiFyTXBBGv/id6us= 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 1587477039106683.125820344268; Tue, 21 Apr 2020 06:50:39 -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-244-IZd_xghFOZCPd2_R8EDHrw-1; Tue, 21 Apr 2020 09:50:35 -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 CFC08149C3; Tue, 21 Apr 2020 13:50:27 +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 91F5BB3A60; Tue, 21 Apr 2020 13:50:27 +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 37FB2941A4; Tue, 21 Apr 2020 13:50:27 +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 03LDoEqj003301 for ; Tue, 21 Apr 2020 09:50:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id EEF792166B2D; Tue, 21 Apr 2020 13:50: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 E3C322166B2F for ; Tue, 21 Apr 2020 13:50:07 +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 665208FF66A for ; Tue, 21 Apr 2020 13:50:07 +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-306-ekrV0q8MNUq3kQMmx80v5w-1; Tue, 21 Apr 2020 09:50:04 -0400 Received: by mail-wr1-f42.google.com with SMTP id i10so16524945wrv.10 for ; Tue, 21 Apr 2020 06:50:04 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477037; 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=tWGJ2vlVDbqXboD1QmGCg00gBVMmI3aanqu3yNxVQZY=; b=SwYUY5gQm5vTU11jUivuNdL0ygYV49G4jHRhumHjkBMdKtLiaX3STTUdS2jNugKnX7I0Ev O+tLr0f5flgJTU7wlRHeoUJBfCcWrzj6fVIWW1Av08HT8hk62oQx6bER6HRX8DIZCtnsKr QGUDgMLQ16fZwLATTwwU+Oow1+jmrek= X-MC-Unique: IZd_xghFOZCPd2_R8EDHrw-1 X-MC-Unique: ekrV0q8MNUq3kQMmx80v5w-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=InGDjbBASTTu3K3qNG10IXNaPHGbCxhzom9l31+JqpE=; b=Nj3u3RaFVvtMCcjPukqAi7awVojudlk/nbMsrb6v70BZz8bGA6e98jSh+S7/83MdiL fsSST16euaVN4l/AqnuPykCN7GclhEh+FSy8PkjBMBHcCmy0W13R5s5IO/wYFkOyJqAK 3jhytIbA4h+qR7mBQ19pv3f9W2InLvK8B0kDlhRLB9UBAkSM1OLcNDvgIsF+hjYt8Bdm 26r9M+y3lshWgXfmNfhCMAjkKHLvtX7wzZ+lI5PD1lRF8DDliYKc9qJ5kQvAABG0sT0E +ejJLSB4QvuQDNZdpX+ZWB9V2XPo4a8NSCl9MNYPr1yZgoLW+Pb4SP7sTNu6NeIWfLkQ i6bQ== X-Gm-Message-State: AGi0PubY+E9uiHut3ILJN0YKqzRjTdpDXgIcLqYss2fcAO+7qIz6TC04 hG9ZaUf7nH2tyoXED81euFXusbQEuxM= X-Google-Smtp-Source: APiQypKnAkcOlWBcyUamNDMn14N3Njx/8wEJDR2kVd8kDY758QMNISn4ILARdRyFssxYB5qVffk24g== X-Received: by 2002:adf:e586:: with SMTP id l6mr20175926wrm.184.1587477003075; Tue, 21 Apr 2020 06:50:03 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 05/40] rpc: convert virNetClientProgram to GObject Date: Tue, 21 Apr 2020 15:48:46 +0200 Message-Id: <20200421134921.3717019-6-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoEqj003301 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/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 7bae0c2514..09e3e8c51b 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.25.3 From nobody Wed May 1 20:24:32 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=1587477031; cv=none; d=zohomail.com; s=zohoarc; b=CpKr9mRyaF5mSN5L0nk23tM9M+U0JhtWKV0bVLm7O7DRGeRhYRDcIr2PSnHlsEuFwOJoRuOrtvgZCu2+yq+iVhHgN+G0N0f1CfiqogFG1CO5I4Ex0zIvcmX39MNZiFFjYrEEAShe3DVd+6PwTNixyA3wEl+thdWnV0aqe+iIM0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477031; 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=Z9B59qnYVooXiX8pJ1hBBPkAucfTx3XTD3HzYIJPuVU=; b=Hd2Xohgue4Tg3Zc0IOlMt/orStyP571J1xH1fRoHo3+U5xDcRtaHkgx66Mb0cXiJOo2DJ5BDwzdJ/nDUKcWmVhdL5/m7tiKdhgYytuc6b3r/JLKwqYWpWiQGXxa5SI3zbe1Wu5Yff+0ixN7QU/JwWNeboHDmCACfvCcHuGVV9E0= 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 1587477031883667.8712104695584; Tue, 21 Apr 2020 06:50: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-214-PHmi_vL-PkSxaP4jqBs7KQ-1; Tue, 21 Apr 2020 09:50:27 -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 38512149C9; Tue, 21 Apr 2020 13:50:22 +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 03CA75C290; Tue, 21 Apr 2020 13:50:22 +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 A0E4A18089D5; Tue, 21 Apr 2020 13:50:21 +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 03LDoBqw003267 for ; Tue, 21 Apr 2020 09:50:11 -0400 Received: by smtp.corp.redhat.com (Postfix) id 02E9711921A3; Tue, 21 Apr 2020 13:50:11 +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 F17DA11921A2 for ; Tue, 21 Apr 2020 13:50:10 +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 D40F0185A78E for ; Tue, 21 Apr 2020 13:50:10 +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-100-lNRioXhVO4uMB9ZwIqLUvw-1; Tue, 21 Apr 2020 09:50:06 -0400 Received: by mail-wm1-f46.google.com with SMTP id z6so3775801wml.2 for ; Tue, 21 Apr 2020 06:50:06 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477030; 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=Z9B59qnYVooXiX8pJ1hBBPkAucfTx3XTD3HzYIJPuVU=; b=HYrbkPoQVI/3eYt1KyL9SNk+xRTAupKCGVwgnhkW/yGTF0pM/1LAsJPkNoiGlmvEqVcdmi RzY0U/C46i0sSiqmiaPQqTNEiGo6rBO0zknPF3iiSDi0GaWDIZuYqZjTi817LAknMVgjjy l+SNvcj26pQ40e6KhublSmhKimZgHqs= X-MC-Unique: PHmi_vL-PkSxaP4jqBs7KQ-1 X-MC-Unique: lNRioXhVO4uMB9ZwIqLUvw-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=xOMVfgJnDJ/MY1XN9IHJOYF1ymexuKmOLNvuPbvKhbQ=; b=tI8zMoh/of657ZNm7Gna4PmhxYDz/5wllYtLdyfvwmIvceFiyZSbWpBsuS1BTBonxx gIIFurssZtXe5WAAfKR8iI5AvISpjoKfy2Y/FXYUyL1HD5gmK+3p8EUCKNPNRSGrRUda a3LYtL7lVkeAdI9mVkEK/yKMbSFyr1tmI+A/6jwjxSCIkTdb2aZtNXc8Fxiacj0mZ8Gh SupBranVVqnUqOhxa6xDhx92IaIAn1U9M8LUcaXN2M3PQ//NSsTVAODbnc0yUHNnCld2 KVR14vyY/kRwx4h2qSKlp8+E9ZWqmepgKSxy+S2aGekrE9ndRlpUTSQFIcCr+xYT9kne cLUg== X-Gm-Message-State: AGi0PuYqDKXcsMNpjfzNegzj/cpihyd2/nElFdzjl+ICYxM+vrwEqDNz lrQ/J6MUbvT8zUnUUh9SohZ9TD3bRGk= X-Google-Smtp-Source: APiQypJhlOnvA3PtxCmIbVxDt3ZbxnR4H0huLvuRYtsh9+kzV2sR9uyZj/bmVTqcHR5mr/6RLrBxTg== X-Received: by 2002:a7b:ce13:: with SMTP id m19mr4801778wmc.76.1587477004670; Tue, 21 Apr 2020 06:50:04 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 06/40] rpc: convert virNetServerProgram to GObject Date: Tue, 21 Apr 2020 15:48:47 +0200 Message-Id: <20200421134921.3717019-7-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoBqw003267 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/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 4eff63014a..260a74a81a 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -860,8 +860,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; @@ -1134,13 +1134,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; @@ -1148,13 +1145,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; @@ -1191,8 +1185,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 f37054706e..98f8b9c68b 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -641,8 +641,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; @@ -916,26 +916,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; @@ -971,8 +965,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 7eec599177..46b6b4fdc7 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 c5506c2e11..5f9aa7e8a6 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 242052754f..284d68a88a 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 { @@ -825,7 +825,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; @@ -917,9 +917,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.25.3 From nobody Wed May 1 20:24:32 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=1587477040; cv=none; d=zohomail.com; s=zohoarc; b=aoqkNn/urZrMCTZjbB34iz/SwKVnDYgUH9lnR8R8tFnpcNCQbwcez55BWpwPL0zx5EIzLEI9koiFgf5OB0XjtQISuHf42mgwuACuG3StU2DCsqgebQgUY1W3EU+J/CqHs8W/AetCO0szI507begu5A6om809zVMyJcbuhD4171A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477040; 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=7vq8Sm6BHKa0xJbJMVVPyHxkViioSFvUA2GNxjDmQm8=; b=Bs35HH7py/UQ8Q55jOMzuEvZwfvdze+33X3kT5Th+uNdsNgGrMJibfXOL3Rmr6JsCDlVtOrpsA1DetNTuIuTjtQcMji6IkVJkPUQFrhBcwQtCSDY2rn2An0EsiWBqNevDI2mP4oje3bzwL293JEoBGBaxjmCWnv2qcbTWF7poxo= 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 1587477040923947.1538847542329; Tue, 21 Apr 2020 06:50:40 -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-51-Y8kDv7PyNNyhuqyncJyNMQ-1; Tue, 21 Apr 2020 09:50:36 -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 A9750149C9; Tue, 21 Apr 2020 13:50: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 847835DA85; Tue, 21 Apr 2020 13:50: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 3A56C941A8; Tue, 21 Apr 2020 13:50:30 +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 03LDoA4v003261 for ; Tue, 21 Apr 2020 09:50:10 -0400 Received: by smtp.corp.redhat.com (Postfix) id A22AD2093CE5; Tue, 21 Apr 2020 13:50:10 +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 9D5B32026E1C for ; Tue, 21 Apr 2020 13:50: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 777EB1019E16 for ; Tue, 21 Apr 2020 13:50:10 +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-411-JYB6p8vBPBu5giZI86EVRg-1; Tue, 21 Apr 2020 09:50:08 -0400 Received: by mail-wm1-f67.google.com with SMTP id u16so3747193wmc.5 for ; Tue, 21 Apr 2020 06:50:07 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477039; 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=7vq8Sm6BHKa0xJbJMVVPyHxkViioSFvUA2GNxjDmQm8=; b=DUxEl1tw9n4cGCvMy4r9PdoVeYBCJT239nhlgRLxAU6VbyAah9CTzSCHf+MFMPL7iAZozv VD5Bc/4BcuazRB/Z7fSrdtsH82UAlRW6Kwke1ikkdDmXXf1NFChDG1udkiMv+A0svrBip9 I9xSXrQwz654t8WQyWPlZO3C0I7NyfM= X-MC-Unique: Y8kDv7PyNNyhuqyncJyNMQ-1 X-MC-Unique: JYB6p8vBPBu5giZI86EVRg-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=bwFIuLN0L1Q+Fn/brMLH+m8lVyntWXtFixqGxrj2kpQ=; b=PjuGQ1FdJSGONnaSCeegsSaFFlACbYPjAOoiro9bTtxt9GUPGE2jAhlgDoBDfOkduM Sz9LPq+/1LbSxo71gnkOXq5WPNG3Z8jQhHiHfHtxNKeijnquajayslEovZEBl7msW9nk u5cI5bNKUKxpVrb66VmmHAJpR6cUaLzC4D7H0AX2wWe5GMX91WDFIPd9GrfgYdmHlW5V NI1YUF/cwuPjzJ+8wIxZKRR4GtAk9V5QM6AJJjmUdrFB4XzGkLtd0RHyhSs717/D+klN b0J0Tip6rZqH4ooGu+poM4c7Oafk+xkuSMpFWCATID9eHflvMnlOrB1sNuJke1oo4xVf w/Ww== X-Gm-Message-State: AGi0Pua8BRi5aX/RDIHePMoZonF93Nt+7C6Ecy3KWm2ms7kaQ+SYU4FG Gz50egaLcz4CBvZZYUGHiZQ837Oqn1k= X-Google-Smtp-Source: APiQypKeDIuT8KJbOQLXShXSpJzhQt/S8j3a/UmmIRpx3cLnjHzt8w4gE+OVESNaCCLKwZNBY+ovXg== X-Received: by 2002:a1c:40c4:: with SMTP id n187mr4861668wma.28.1587477006084; Tue, 21 Apr 2020 06:50:06 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 07/40] conf: convert virDomainXMLOption to GObject Date: Tue, 21 Apr 2020 15:48:48 +0200 Message-Id: <20200421134921.3717019-8-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoA4v003261 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/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 674cfa408e..8126423a18 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; @@ -1280,18 +1280,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 @@ -1299,12 +1307,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 /** @@ -1431,8 +1441,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 7d8f1aa31b..964f51f8d5 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, @@ -2816,6 +2818,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 4286efdd36..043a3afae8 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 980984b199..0fce6225d8 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 0cce0d70b7..09a2721ca3 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1613,7 +1613,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 bf0a817ff1..9b353c6f07 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 b35377d42b..509e47926d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8565,9 +8565,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); @@ -8579,25 +8578,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 02c0dc7fbc..dcfd3e95f8 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 00ee8f7c59..5b9a49d685 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 c8115ede3c..f9471752d2 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 440c91868f..eece670aa0 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.25.3 From nobody Wed May 1 20:24:32 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=1587477044; cv=none; d=zohomail.com; s=zohoarc; b=GBGVDR10S6G1P+rGy2JT5SwmfOghTm+VQpon7dcB2MyNN+gDtMzbvnmiqRdkWrYR39ULmmll75GWaQbaDTpPLGGIuibQpwNqktMDQccBqE6m7I/EPISyvVTaz4JjPsbkzuLHNFlXKYHZnZELePMNhV5tIWc0/UsXv5U3ZDRjVj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477044; 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=b7aMa/NUrkd/xinMekN1GaKN4Fsaekg6UioUsLY3tW8=; b=LeB+FZUWEsTQv8IxhWHPWPYc3WYnVwcdEGoLq1dAmm36I+jjV2OEycbWrC2/b60svYIK5Y7LUU2EeiUt+uSNHudAtAiZ+2atT6KzQ/nT0qEaEZrkaIU9RH1EC1C05HDGDboHUhR3Nxqz2OCInso33bC3ebt9b0SNouPp8V2sQbM= 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 1587477044000864.7016457851015; Tue, 21 Apr 2020 06:50:44 -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-31-ElwPU-fePYa_iWxmaECH3w-1; Tue, 21 Apr 2020 09:50:40 -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 A956A1B2C995; Tue, 21 Apr 2020 13:50: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 7E750A18B2; Tue, 21 Apr 2020 13:50: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 310C9941BE; Tue, 21 Apr 2020 13:50:34 +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 03LDoBHe003275 for ; Tue, 21 Apr 2020 09:50:11 -0400 Received: by smtp.corp.redhat.com (Postfix) id C047611921A3; Tue, 21 Apr 2020 13:50:11 +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 BC45111921A2 for ; Tue, 21 Apr 2020 13:50: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 A11031019E12 for ; Tue, 21 Apr 2020 13:50:11 +0000 (UTC) Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-443-k48r70CUP6yRmMIR_5hZSw-1; Tue, 21 Apr 2020 09:50:09 -0400 Received: by mail-wr1-f44.google.com with SMTP id i10so16525269wrv.10 for ; Tue, 21 Apr 2020 06:50:08 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477042; 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=b7aMa/NUrkd/xinMekN1GaKN4Fsaekg6UioUsLY3tW8=; b=Ff9x++Y5x8gbMIXitfcJ/+MxRAJ2UszbH2bGVRktAtQjhvYLBfhte3fYKqKBYZlMsv0dRq l7GYj0WJBDlgbxg3ErgNL4e/leWGAb1Ss47zmbirOkOlGNVA06RtZUasNzHvM4U6vufHs5 paQFZOPLWhRe81YoFbWGqTS9Atvuw8o= X-MC-Unique: ElwPU-fePYa_iWxmaECH3w-1 X-MC-Unique: k48r70CUP6yRmMIR_5hZSw-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=GnkIIfcs/3vJJXthugOEEb7GgpDy1oV9nYRTqyL9HHc=; b=E2tBj5D5gLEHJVLYm0Y702HOJs2qzG7aRfGN8BqaNYtE6/1h75HUuFc3JpvqL9Id61 57N9WbdQcyY8Uxf4awsM/0wJtQJTr8P9BdNSKneKgwYH1Ygq+Af3KCbxp+UcO11pTB8+ GxGTYeNGWJkW4ePq+4GlZWcwc+d45Q5MVJrA2oaJV7OQoi5t1bVk+koQt4+DRUV8MNGM v6GwT7pNsxJpOUyMQu7uv1TnO953AvUYxhqFvBoOETm/UX2jjs+ubto5iF6nOxEw1O+A yhtDAB6Ply8b093PKayaTZ4DnmvdKtZD404YAqlDYNojiyozyHlDoYRjncOGxn5mCb7q hqtQ== X-Gm-Message-State: AGi0PuZ4DNhT5mgHUXhScJXMJdHyZ2vXMj3KDTBZP4hCp7h86P96gXq9 yOS9r6iOGGszjAeNxqNKO1NIMPztDCI= X-Google-Smtp-Source: APiQypIw+/nVP0sqSLkXF0UmgFv07wNzHLbUcjXrdtls3sodltZHn4mUBWpuu1+5WlUIzGJSp2qCig== X-Received: by 2002:a5d:4b49:: with SMTP id w9mr24451999wrs.359.1587477007533; Tue, 21 Apr 2020 06:50:07 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 08/40] bhyve: convert bhyveMonitor to GObject Date: Tue, 21 Apr 2020 15:48:49 +0200 Message-Id: <20200421134921.3717019-9-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoBHe003275 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_monitor.c | 48 +++++++++++++++++++++++++-------------- src/bhyve/bhyve_monitor.h | 3 ++- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index e5cd39a086..3efa3323ff 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,59 @@ struct _bhyveMonitor { bool reboot; }; =20 -static virClassPtr bhyveMonitorClass; +G_DEFINE_TYPE(bhyveMonitor, bhyve_monitor, G_TYPE_OBJECT); =20 static void -bhyveMonitorDispose(void *obj) +bhyveMonitorDispose(GObject *obj) { - bhyveMonitorPtr mon =3D obj; + bhyveMonitorPtr mon =3D BHYVE_MONITOR(obj); =20 - VIR_FORCE_CLOSE(mon->kq); virObjectUnref(mon->vm); + mon->vm =3D NULL; + + G_OBJECT_CLASS(bhyve_monitor_parent_class)->dispose(obj); } =20 -static int -bhyveMonitorOnceInit(void) +static void +bhyveMonitorFinalize(GObject *obj) { - if (!VIR_CLASS_NEW(bhyveMonitor, virClassForObject())) - return -1; + bhyveMonitorPtr mon =3D BHYVE_MONITOR(obj); + + VIR_FORCE_CLOSE(mon->kq); + + G_OBJECT_CLASS(bhyve_monitor_parent_class)->finalize(obj); +} =20 - return 0; +static void +bhyve_monitor_init(bhyveMonitor *mon G_GNUC_UNUSED) +{ } =20 -VIR_ONCE_GLOBAL_INIT(bhyveMonitor); +static void +bhyve_monitor_class_init(bhyveMonitorClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D bhyveMonitorDispose; + 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 +196,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 +252,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.25.3 From nobody Wed May 1 20:24:32 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=1587477049; cv=none; d=zohomail.com; s=zohoarc; b=JPXfDB5ylolwxHjvZXYvN9Iqc48Aks2gHPdGdcg0jMn4H1+H+dBleVoDyMciuUjjDi/XuMmUuMhjm5VMV5SGl/HNi055YMQWk3SS4R5gTImpsc3NqPY8aMGKwKDON/+/jfIo+smPhOkdrmDr43DFTmBITH9hCxLtr171KFzvDyY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477049; 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=YKE+nZqPBCiKwWD6XZ1nH1mKNMz6aT6AbL2QcOFT3dA=; b=hDBlewZdw8nWyCv/yetADXLo1mi7bK1yc8fmG20KPkHX84CD3nq5E7T+4GrB/Rp3Oc0r8RmMdgoR/ZdFHAYUiAj/Cr0MKG0yus6DXPnAdepU/49P0zliOzIHmu2qEgwRosLgonQSnKAIePDffxAP/o6QX6jRmLNgUObHEBur1xI= 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 1587477049045933.7861667074682; Tue, 21 Apr 2020 06:50:49 -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-213-1A7SSmftP6urJcnVm6dTOg-1; Tue, 21 Apr 2020 09:50:45 -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 A17B01085927; Tue, 21 Apr 2020 13:50:39 +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 739041001B0B; Tue, 21 Apr 2020 13:50: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 039291800B74; Tue, 21 Apr 2020 13:50:39 +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 03LDoDYm003291 for ; Tue, 21 Apr 2020 09:50:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 85A4C11921A4; Tue, 21 Apr 2020 13:50:13 +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 81A9211921A2 for ; Tue, 21 Apr 2020 13:50:13 +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 654CA1019E13 for ; Tue, 21 Apr 2020 13:50:13 +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-413-42KOwee6OYOGGXKj5B_Kbw-1; Tue, 21 Apr 2020 09:50:10 -0400 Received: by mail-wr1-f67.google.com with SMTP id x18so16587454wrq.2 for ; Tue, 21 Apr 2020 06:50:10 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477047; 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=YKE+nZqPBCiKwWD6XZ1nH1mKNMz6aT6AbL2QcOFT3dA=; b=QCM13C5E+pTH/GQEHSQ/UccmSBHPelyNbLGE+QOYH27nch/LzHBhCeiOGGH2RzpJqrDbMA Jn2iAeGviwSoDLpX+EepnGX/zN/4jXqiFxQ4hQS1e3vmgevX0wrPAjGF72Ar7ic8T7GiyQ FGFWuX0nCXjpj/JZLLToiUWzIEl6JdY= X-MC-Unique: 1A7SSmftP6urJcnVm6dTOg-1 X-MC-Unique: 42KOwee6OYOGGXKj5B_Kbw-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=y8R0Wo8uybik1tOs5L/YwunBQHuz4AME+2l7uinqlRU=; b=ARy4DzSQGLrAcCeqOQT95UhWWcXQ9sD9rru58XG1KRrgwb1RbsiQEyLnGOAH6u6iJZ AFzfbtaEJvx7+M1t6oHxvnK2sj304LODz5sU1KgyYZZWLNfdewT08R2ormNiSmY4mttU eZdzlUCtuBwGsgxrq4jVBTTJ0Hyu1wVjc/8HgPw0HRUql9au2R1+Z/w148gn+VO2Lmz0 +5LdtYUaphV0+ZCH9YNGtE37ElJ2GhpgOKVAM9jZLLJAgp/VAC3IbA+ScuVTLsi0+3nl I/vvoSF5i4rDwpSNYmSlhLQkYjf0E2SSNix36wFB1gVXA1bx9hASoyhiMXxCXcQY1Itv s3/A== X-Gm-Message-State: AGi0Pub9TXLbBc0G96/xZ7OJD23LqWNMAEOM09vYUa7g3PBz/ZYqEoGm a1iuaXv3Iwgc+fWB2hZ+GdVNrlNRFVE= X-Google-Smtp-Source: APiQypKODKyYx3Xs61ibBOF9XTmg8moJOBNmSmiEJWstQXaei870qhjYSt+PbpK+kRO1aWDfwAO9YQ== X-Received: by 2002:adf:f98e:: with SMTP id f14mr23978553wrr.253.1587477009067; Tue, 21 Apr 2020 06:50:09 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 09/40] bhyve: convert virBhyveDriverConfig to GObject Date: Tue, 21 Apr 2020 15:48:50 +0200 Message-Id: <20200421134921.3717019-10-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoDYm003291 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/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.25.3 From nobody Wed May 1 20:24:33 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=1587477042; cv=none; d=zohomail.com; s=zohoarc; b=R+ctdBat6mCH3n/UAmvWWdGE1XthabZq/FcGVMeNrwvZnN5b5VbommxciDXXUo40NWrBYM9Scg0gb326iK+D5/g5OLyi6tigUi8ncQDrvCy93LvQbHgdGApc7BmJ04lb5pKLNy5YFfSCxNP/F/PVSY30fz5hFkgV3O4gwFUF50Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477042; 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=ceSC2RnMvjBKHfqqiemo+OJNhyHd50rMQs2C8S15iDE=; b=brQiNsyhh3GYUTcE0RisFv3+wEkTefZiIZIwHZQOv47ci3ZrRz6b+Jwy4QODtCXAkNXUwA7xLGwsgUGxtpV1fLU9Ceh7c/3pEs74FaZbLB7bngGOvAaFm/vsI1/0WlwwlpY9tX5o6shQP9HJzCCQgv4ctacG5FjEJG+tTMSiWGU= 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 1587477042905490.9330749824701; Tue, 21 Apr 2020 06:50: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-264-DWXn1YEYNPW8HS8wk2nBVw-1; Tue, 21 Apr 2020 09:50:38 -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 6BBB71B2C98C; Tue, 21 Apr 2020 13:50: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 19C2EA18B0; Tue, 21 Apr 2020 13:50: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 C8E1D941B2; Tue, 21 Apr 2020 13:50:31 +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 03LDoEH9003314 for ; Tue, 21 Apr 2020 09:50:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id DAAFC11921A3; Tue, 21 Apr 2020 13:50:14 +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 D67A011921A2 for ; Tue, 21 Apr 2020 13:50:14 +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 B9006185A79B for ; Tue, 21 Apr 2020 13:50:14 +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-392-phmOZHiSMwOPYt9qjlXllQ-1; Tue, 21 Apr 2020 09:50:12 -0400 Received: by mail-wr1-f52.google.com with SMTP id b11so16530484wrs.6 for ; Tue, 21 Apr 2020 06:50:12 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477041; 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=ceSC2RnMvjBKHfqqiemo+OJNhyHd50rMQs2C8S15iDE=; b=Jvxx67MsqCsnYIg1sCuyROwjtxoRQkqwg5clx15cEOqDwlKN4HruWo3w2qTAcwQS/idsKl rG975WzfugXlm4Ei9KinfOo/ixihvvPgGsu2cGKPeogE9hCdtmHcitnDCuBa0LATjY93i7 C9SE/8wu12I1r6CpZuUm4B7l1uGolAE= X-MC-Unique: DWXn1YEYNPW8HS8wk2nBVw-1 X-MC-Unique: phmOZHiSMwOPYt9qjlXllQ-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=VsYxVhtCXSxX/UXDhsbZ9E9k6p8oNxh1qRGvQv3Hzok=; b=ZPEgxdz2DfsNZYf9d6ICVZcFo432ry0TgbpHRMLwoHKG/Fbyjbl9Z4vgsPWe0Quc0W WWqmBBHexWuBKq69sroMQnuBcFPeAbdjaLT05CisHXKJiBbVaLGeVH6iSHa8xeWn0J3S TDZfqsCUeuJv7xRNz7RJErpE9oGb+HXxTcN3pB/nweNc8NpryLeLFEq7GVGm22riLT9Y NTgPVHj5K7L5uo2l4RRDzIfhGvv8qbFOeQOqOfN+fcjmMG7ThPetfoIkYx8OB+Asfdqp PV9DDCPFAmpmNwr1Y7bm0gwKyE0fmINB/0jQ7eAbP5qrTgk9qA6j/KjEXZm3d+/mvfXe UNJg== X-Gm-Message-State: AGi0PuY7kAJZAa9pDujvyfsnkk9UD3BW1Y22AorpWozPtjN0GB8PtPqW ZXTfKtr2iOja68wjxb5s3fhQZWfTicg= X-Google-Smtp-Source: APiQypKwn62fXiARWOT98EWZfGO5uwF/VuLGcp/DA/8Jwaa9k4dkNH5KMJmYiVNV5OdsXi6KPHSzPg== X-Received: by 2002:a5d:5745:: with SMTP id q5mr26042586wrw.351.1587477010997; Tue, 21 Apr 2020 06:50:10 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 10/40] rpc: convert virNetServerService to GObject Date: Tue, 21 Apr 2020 15:48:51 +0200 Message-Id: <20200421134921.3717019-11-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoEH9003314 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/lxc/lxc_controller.c | 5 +- src/rpc/virnetserver.c | 7 +-- src/rpc/virnetserverprogram.h | 7 ++- src/rpc/virnetserverservice.c | 103 +++++++++++++++++----------------- tests/virnetdaemontest.c | 4 +- 5 files changed, 61 insertions(+), 65 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 284d68a88a..bb645bd103 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -658,7 +658,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, @@ -913,10 +913,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..946db729c5 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,21 @@ 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 virNetServerServiceDispose(GObject *obj); +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->dispose =3D virNetServerServiceDispose; + obj->finalize =3D virNetServerServiceFinalize; +} =20 static void virNetServerServiceAccept(virNetSocketPtr sock, int events G_GNUC_UNUSED, @@ -97,17 +99,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 +118,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 +251,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 +300,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,16 +400,28 @@ void virNetServerServiceSetDispatcher(virNetServerSer= vicePtr svc, } =20 =20 -void virNetServerServiceDispose(void *obj) +void virNetServerServiceDispose(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++) + for (i =3D 0; i < svc->nsocks; i++) { virObjectUnref(svc->socks[i]); - VIR_FREE(svc->socks); + svc->socks[i] =3D NULL; + } =20 virObjectUnref(svc->tls); + + G_OBJECT_CLASS(vir_net_server_service_parent_class)->dispose(obj); +} + +void virNetServerServiceFinalize(GObject *obj) +{ + virNetServerServicePtr svc =3D VIR_NET_SERVER_SERVICE(obj); + + VIR_FREE(svc->socks); + + 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.25.3 From nobody Wed May 1 20:24:33 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=1587477054; cv=none; d=zohomail.com; s=zohoarc; b=nKvgzksi0f+Jfl9E+8+apJhPjLIKbxI9UdkgAmML6dvBW+Iks9FxK66zUsktVVYwNQffnBVjUoE+GmHBc5e/xceYMylDMlPFsINShSqg+Sz9QCZWKgFx/WGUVf6pKodRaLYp3YEUNoCLCroAopsNVI5slGA+uFrrY1yxGTp6B+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477054; 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=Xdl5ZWPrwYh4KI0uNfJNYT9zI55rnHRzFeFiY6NQwlk=; b=e8mayCUvHONeRc2TKVgQqMi/ImMa0fYxAmXjGMt18PXYBnqUURI99rPYWC/Py0i3eNzyRaPoKuQwpodnP8bBif7x2yWXn0/UxhgTPEP/B+RMkF2dJU3tvcX+2c3CkEi/PS+XqvxiwqexLPGM6bqRgramcgaBxvniALOyGC/DL7g= 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 1587477054024133.56773487292696; Tue, 21 Apr 2020 06:50:54 -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-400-o8fa2yD6MheASyMyQu_mcQ-1; Tue, 21 Apr 2020 09:50:50 -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 18B9D149C8; Tue, 21 Apr 2020 13:50:45 +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 E2DDDB3A7F; Tue, 21 Apr 2020 13:50: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 8DBA418034EA; Tue, 21 Apr 2020 13:50:44 +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 03LDoIou003349 for ; Tue, 21 Apr 2020 09:50:18 -0400 Received: by smtp.corp.redhat.com (Postfix) id EF20C11921A4; Tue, 21 Apr 2020 13:50:17 +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 EB18511921A2 for ; Tue, 21 Apr 2020 13:50:16 +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 F132B86BCC0 for ; Tue, 21 Apr 2020 13:50:15 +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-309-TJXmNzgKNvGWDq7hJ_NYXQ-1; Tue, 21 Apr 2020 09:50:13 -0400 Received: by mail-wm1-f42.google.com with SMTP id u16so3747649wmc.5 for ; Tue, 21 Apr 2020 06:50:13 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477052; 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=Xdl5ZWPrwYh4KI0uNfJNYT9zI55rnHRzFeFiY6NQwlk=; b=R9FqmnRrrwlyTXYlLRXJww38yVhWZC91zB5/FkuWaWyLa2XD11sj2vnA9HutJQ31UxSNMP pGWceZnlisrJ0sV5FLSH4YyOIoanutanYLFxNEieFGUf2hZdITKQ+f+w6wRaLqKUfa4xIx nmb/FRvtSnjIRnvmJ2lci/yHuIiouiU= X-MC-Unique: o8fa2yD6MheASyMyQu_mcQ-1 X-MC-Unique: TJXmNzgKNvGWDq7hJ_NYXQ-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=Er98LkU8IqqSPhvgm96O4wJ9DlHTyuHtNLCvLuVcBdA=; b=oqf2gTPnueom+PVK5Dasd7wwQPoRDBfjIlsn6noESzzbxEzV23Eg2OcrMbML2LCBCH A9LZxoJ7ZtuSYKWLPLpTLagkj9hxxdy93gg+2J0mZxjQ759H/3zOkil1kyGLdYRn+Onr WVlHIwyzeS3De98r8Npe0l5/3GWtc+R9xJyCaPvrKoRRYG7m4Pb4alWPxbUTfuT+OA3w HKnqRLDUA7RVOF8HXx3w0aEpjUrzeG69/9ib7VXuLiAHsImbmdviqFueaJYeCqWR9Aem PKOC2aKJL1twhKANCjnmq6YZD9+yqufX+zfXpTdAKCDouIMaGxwjuuP4b3vfXNkgx0GT toxw== X-Gm-Message-State: AGi0PuZGpBQ4prECWQs5Ktcj8OjAKFvMAjPtuI7m6GYQsw68w13P4qio bMhwUCHeC1tOAWRQYCiVEZWL/qj82XY= X-Google-Smtp-Source: APiQypIPLF6GfpYYS3Ogdj6/Ff6pMtCepNtxm6dhba7q5urCJtuLcE73dO7NfuJCUtrwBG+TlUTnvg== X-Received: by 2002:a1c:5f46:: with SMTP id t67mr5380532wmb.156.1587477012221; Tue, 21 Apr 2020 06:50:12 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 11/40] conf: convert virDomainCapsCPUModels to GObject Date: Tue, 21 Apr 2020 15:48:52 +0200 Message-Id: <20200421134921.3717019-12-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoIou003349 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_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 043a3afae8..33ee7069de 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 0a91892f4e..ad19721717 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -571,7 +571,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); @@ -613,7 +613,6 @@ cpuTestCPUID(bool guest, const void *arg) virCPUDataFree(hostData); virCPUDefFree(cpu); VIR_FREE(result); - virObjectUnref(models); return ret; } =20 @@ -785,8 +784,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); @@ -862,8 +861,6 @@ cpuTestUpdateLive(const void *arg) virCPUDataFree(disabledData); VIR_FREE(expectedFile); virCPUDefFree(expected); - virObjectUnref(hvModels); - virObjectUnref(models); return ret; } =20 @@ -935,7 +932,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))) @@ -944,25 +941,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 @@ -1273,12 +1266,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.25.3 From nobody Wed May 1 20:24:33 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=1587477053; cv=none; d=zohomail.com; s=zohoarc; b=e5YGbjl2EHHgyt9EOSoIriM4jaFounTBVZj0Gxr9QccHTlpqRcueOwn62/l1S4KQdSeDjmStC8wKwWE+yqwH/mohNOosDoh3yLBNj2vccQOuPJiVGif3klQpDLasNpg6UIa1Y84yf5B8KAkECf3AOF1flcECmclPaEYBXrkOa8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477053; 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=4iE4Y2YaGz2YZX70h4gSMscRzc/S7dAO9HSBazStZOw=; b=fqMVHTEyFd+ndIi75+2eS7Arjm4OL5wbSqmnFO5kDYZUCp+GgWrXDRgKRNJi8Ip3CDWj9QM8hK7wg1T+fzYvqdXX+39RliiPIqt0W7LlITxEhTfabkDw6yx4OURBZoFriyxi8lieOof5OEIMt/youhWyB6tGylEJDwfeuqt/ksw= 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 1587477053749459.59768473696477; Tue, 21 Apr 2020 06:50: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-259-NN4z47-5P7mSwEHgchdjEw-1; Tue, 21 Apr 2020 09:50:50 -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 1F1EE1B2C98C; Tue, 21 Apr 2020 13:50: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 E07385DA7C; Tue, 21 Apr 2020 13:50:43 +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 3AB50941AF; Tue, 21 Apr 2020 13:50: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 03LDoNLd003380 for ; Tue, 21 Apr 2020 09:50:23 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1786C2166B29; Tue, 21 Apr 2020 13:50:23 +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 135A62166B27 for ; Tue, 21 Apr 2020 13:50:23 +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 DD7F98FF66C for ; Tue, 21 Apr 2020 13:50:22 +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-509-geHHAvTIODabO9Mj1xqwvA-1; Tue, 21 Apr 2020 09:50:15 -0400 Received: by mail-wm1-f67.google.com with SMTP id y24so3756144wma.4 for ; Tue, 21 Apr 2020 06:50:15 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477052; 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=4iE4Y2YaGz2YZX70h4gSMscRzc/S7dAO9HSBazStZOw=; b=giOxNP+WPMr5OAHdkiytOt5qr9jvvZPLExMrkYYmlw2rUly6QPnM+iLoHjWz+hR3bOP3kk URt2nYOd+6wggm5IVBHUvsjS1vlx5CZkcpPxtVjJS/jIJTClv6ZCCwXGKL/xFuM4HowrZ0 8y+RI5lPmETDW6BuXhlVsm93qhJ/FmM= X-MC-Unique: NN4z47-5P7mSwEHgchdjEw-1 X-MC-Unique: geHHAvTIODabO9Mj1xqwvA-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=sy+dlrCunlJq/YNYV5vKXHF/qZXo4fk+AgoEZhup/tc=; b=U+ARlI80NBnJcnVH0cVT9Tn3pmMWgzn0GyHz+KbX/Dq1f+edZr6F1zanmdKH/8xS1g 39u+OAgiupahSm0oNmjSsnzEOvlFER/FCeb0EUg7RZANj1VY2tTmgOcUTKEvKXclFVfr nKr1UkNKjm7GlqabIfBHWT6AZ1Y6z+Ne0wf+M8Q2C5BF1QPhs9F2baHjAAO8c8Gd124C mNyCsFP4KOzsJM+AiK6BnnI57IsVIqBBdFilCpx4TvL8oBqstM0qgAT0a9IyYNBrAv01 XCfer9rdHEPBXTcikZYPpiLkhI4LfgWPhua/Yf1S5Jbz6TyCVyKZJ/6YPkNV4vUJQLS7 CH/w== X-Gm-Message-State: AGi0PuY/B7di6zDbb7ZCrlwVZZLQOj25lhCGnFs0x3ABItUoSJN6dUb+ 967SI0QSWLCEJtBSWjuHByE7mhkbiKQ= X-Google-Smtp-Source: APiQypIE13qRNPm/dvwAj89o2KzMqvjWWDmuafHKDgjt1wrWberdgPNJrD9WQEX4hFjOAtk/r0ewww== X-Received: by 2002:a1c:a7c2:: with SMTP id q185mr5086124wme.42.1587477014061; Tue, 21 Apr 2020 06:50:14 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 12/40] util: convert dnsmasqCaps to GObject Date: Tue, 21 Apr 2020 15:48:53 +0200 Message-Id: <20200421134921.3717019-13-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoNLd003380 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/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 33ee7069de..5b6f97bd97 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1939,6 +1939,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 f06099297a..728d432c4c 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; @@ -543,7 +544,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; @@ -629,7 +630,6 @@ networkUpdateState(virNetworkObjPtr obj, ret =3D 0; cleanup: virObjectUnlock(obj); - virObjectUnref(dnsmasq_caps); VIR_FREE(macMapFile); return ret; } @@ -905,7 +905,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 @@ -1544,7 +1544,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; @@ -1587,7 +1587,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); @@ -1911,7 +1910,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; @@ -1989,7 +1988,6 @@ networkStartRadvd(virNetworkDriverStatePtr driver, =20 ret =3D 0; cleanup: - virObjectUnref(dnsmasq_caps); virCommandFree(cmd); VIR_FREE(configfile); VIR_FREE(radvdpidbase); @@ -2003,14 +2001,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 */ @@ -2019,7 +2016,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 adc6f96bb6..a8fb22a368 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 ff0e56d635..9cbbd5562d 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 a8355272b9..ed3a2cf6ae 100644 --- a/tests/networkxml2conftest.c +++ b/tests/networkxml2conftest.c @@ -101,11 +101,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) \ @@ -143,10 +143,6 @@ mymain(void) DO_TEST("ptr-domains-auto", dhcpv6); DO_TEST("dnsmasq-options", dhcpv6); =20 - virObjectUnref(dhcpv6); - virObjectUnref(full); - virObjectUnref(restricted); - return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } =20 --=20 2.25.3 From nobody Wed May 1 20:24:33 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=1587477046; cv=none; d=zohomail.com; s=zohoarc; b=Tzjd1AISh5JRfDD0yTx5xB+HmCQcenM61j8kw4ldVJuvJ+i0+gTMA21OtATMdnzQDs1htLMenUL4hdOcNq3ZzkweIB4wfgns2oXYLfnqANvcANeGVcaBDJON9/3UI040U3TimM/F8glAJTZLLgOU38LEK8jZzCBVgJCN10wVktU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477046; 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=5oNoHxb3xGPy+JMD0042qNc2umxzZU5u8QH5+LZCoO8=; b=iYG0jz2nHt+V+VuBwmiD9IAZoSX4PtCSFmZ90wrBGkMcrMceqdElNAeX0w2aI0osf2bpGi70rBuR+wtX+7+dGshT9aWgRuAIyL32KhaL+kUzYGN/Gk2SY9eHDs7mtH3/vM3JtNkwmhU82SPS67wdwoqXoQnh03ytu1ljaY2zZcg= 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 158747704689094.59121736382372; Tue, 21 Apr 2020 06:50:46 -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-290-WYjccwSCNe6aPX4U5H_zew-1; Tue, 21 Apr 2020 09:50:42 -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 52CC280256C; Tue, 21 Apr 2020 13:50:36 +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 2168B28981; Tue, 21 Apr 2020 13:50:36 +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 CB18A941C3; Tue, 21 Apr 2020 13:50:35 +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 03LDoJkQ003358 for ; Tue, 21 Apr 2020 09:50:19 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8DEFC11921A5; Tue, 21 Apr 2020 13:50:19 +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 88D5D11921A3 for ; Tue, 21 Apr 2020 13:50:19 +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 6736A800298 for ; Tue, 21 Apr 2020 13:50:19 +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-397-h8Cn0NBFMluT1jqG88aJRA-1; Tue, 21 Apr 2020 09:50:17 -0400 Received: by mail-wm1-f47.google.com with SMTP id r26so3783398wmh.0 for ; Tue, 21 Apr 2020 06:50:16 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477045; 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=5oNoHxb3xGPy+JMD0042qNc2umxzZU5u8QH5+LZCoO8=; b=jImpoelduh8njlT/UMf5sp7m9VqdeE8XfBor1+88gQcyai5Ix+J5sYg2YeCzB/gIe3X81e Z4JId5KnOiQJvoedgG+7cEtr+aBeGwjkIj2KAjK3HL5XjzNa6az1YgvyqMYP5jsPUWb0lH If8XG3X3IzwnSZIz/jhwV9NZea9Rnes= X-MC-Unique: WYjccwSCNe6aPX4U5H_zew-1 X-MC-Unique: h8Cn0NBFMluT1jqG88aJRA-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=uVola8ssuf/ow3WQMTuoU70PoziuNZknt7gkb1TRs8Q=; b=XCMOxF443ACwjwWVjKCDlDCbKzpp3JgUAf59kzRPiSIQfTuApGXQcGGjKIp/zoUpiC 3b1Ilk5679mzm2dvh76ITm02tzcjj4YFO//j/ipUcFGMjO9fguqQFG5joZ01GToRiOCC 0GDfsXtk2W25bNFyrTvhVttYXkLYNynA1xHxMF6E3HfQyamEH71Qp96gSV+/I0s43k16 y/zwd6MJFg1whvIWSaUWn4gBI9Qack7BS1NXvFUeacK8ptLWQBpzoCRxUiv5gGVR3kCP goyKrZcrKWmbfP3KyYev8r6aZkUSPo2H9sU6rOKKw4fekl0piP3UiiCJ7AQ+zKf1WikQ V+8g== X-Gm-Message-State: AGi0PuYnNckqCK6lf0ARaSlcWAsV9eXuqj4bzDw3j7KuyI+w9shTPaTT NIyFFwSmInI4XIEuqVeLfHy5ajBQSEY= X-Google-Smtp-Source: APiQypK4Rkn4kERT9JXh+Amcix/pYFNzxqAmnzCuw33P9ioh/a0NQIwYJytQXcKvSN4lQpoTw9xJoA== X-Received: by 2002:a7b:ce13:: with SMTP id m19mr4802462wmc.76.1587477015369; Tue, 21 Apr 2020 06:50:15 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 13/40] conf: convert virDomainChrSourceDef to GObject Date: Tue, 21 Apr 2020 15:48:54 +0200 Message-Id: <20200421134921.3717019-14-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoJkQ003358 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 | 52 +++++++++++++++++++++++----------------- 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, 47 insertions(+), 35 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8126423a18..85afadeb06 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2439,8 +2439,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: @@ -2515,6 +2514,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) @@ -2647,19 +2647,31 @@ virDomainChrSourceDefCopy(virDomainChrSourceDefPtr = dest, } =20 static void -virDomainChrSourceDefDispose(void *obj) +virDomainChrSourceDefDispose(GObject *obj) { - virDomainChrSourceDefPtr def =3D obj; + virDomainChrSourceDefPtr def =3D VIR_DOMAIN_CHR_SOURCE_DEF(obj); + + virObjectUnref(def->privateData); + def->privateData =3D NULL; + + G_OBJECT_CLASS(vir_domain_chr_source_def_parent_class)->dispose(obj); +} + +static void +virDomainChrSourceDefFinalize(GObject *obj) +{ + virDomainChrSourceDefPtr def =3D VIR_DOMAIN_CHR_SOURCE_DEF(obj); size_t i; =20 virDomainChrSourceDefClear(def); - virObjectUnref(def->privateData); =20 if (def->seclabels) { for (i =3D 0; i < def->nseclabels; i++) virSecurityDeviceLabelDefFree(def->seclabels[i]); VIR_FREE(def->seclabels); } + + G_OBJECT_CLASS(vir_domain_chr_source_def_parent_class)->finalize(obj); } =20 =20 @@ -13276,37 +13288,33 @@ 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->dispose =3D virDomainChrSourceDefDispose; + 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 964f51f8d5..c9a44ecfd8 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1188,7 +1188,7 @@ struct _virDomainChrSourceReconnectDef { =20 /* The host side information for a character device. */ struct _virDomainChrSourceDef { - virObject parent; + GObject parent; int type; /* virDomainChrType */ virObjectPtr privateData; union { @@ -1234,6 +1234,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 5b6f97bd97..1a46ec3e3e 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 0ee0972902..c6980a53b6 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2315,7 +2315,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); @@ -3934,8 +3934,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 509e47926d..d7a7389f8f 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7388,8 +7388,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.25.3 From nobody Wed May 1 20:24:33 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=1587477049; cv=none; d=zohomail.com; s=zohoarc; b=X6EPkPaqfmJYpE+9CEP/9S1VMHDZoXh2SAfABXMHaC0z/9GXbMnteF7gHpH46bMX8P5usVuabvlboFOuP5HZOIcM7zHenqaCMgmKy7cXj32xQ+m8javr8hocdxJp/1LvzvXa1iHS1q4/g8C/t+gD2HBWSXVDoTi/br8171fjnWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477049; 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=Fz4vYSgB+C2QlF4WGnRfv3LKLlmZ40EIUlBGLnaFi9c=; b=kJSQfoAR6hWNvFN+CF7h/ojNa1Yr9kKkfTxIQg0SCPOjbN4cqqv2AoFeVZ+S1Z8v7huIRIWtuD7MMgirzbYvzPXxAcvV66xh7RFaWixVeNjLtecze3f9Fsbv9WodoLuW3WbkemBildmBE9u0p9pbvPjE4k0xriypuPdWcp+34vk= 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 1587477049216321.3468379622458; Tue, 21 Apr 2020 06:50:49 -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-215-CNNg2_zbMYyc99ziDhO7KQ-1; Tue, 21 Apr 2020 09:50:45 -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 D5040107B27E; Tue, 21 Apr 2020 13:50: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 AE9815DA87; Tue, 21 Apr 2020 13:50: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 63614941B2; Tue, 21 Apr 2020 13:50: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 03LDoLVb003368 for ; Tue, 21 Apr 2020 09:50:21 -0400 Received: by smtp.corp.redhat.com (Postfix) id F3DB92026E1C; Tue, 21 Apr 2020 13:50:20 +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 EF7992024517 for ; Tue, 21 Apr 2020 13:50: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 C383F1019E14 for ; Tue, 21 Apr 2020 13:50:20 +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-351-NuVsao1oODmNawZADhPnsA-1; Tue, 21 Apr 2020 09:50:18 -0400 Received: by mail-wm1-f66.google.com with SMTP id z6so3776589wml.2 for ; Tue, 21 Apr 2020 06:50:18 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477047; 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=Fz4vYSgB+C2QlF4WGnRfv3LKLlmZ40EIUlBGLnaFi9c=; b=VjwGd8zzj4Bg1lkOcMeKY4z0GSv2U1B8g064qCP1kf7yIV+dJcxIscida/PPzsRPhCF5Lx /FoJgKn/4dPM3XkySOm6+rA8GwQLJmIwl2QBXCOvEssA9ooS5lUNiKrLIoWVWOFWe0Z4O6 EmlPiPSgHofa9ivxd8iLOK6WwikGL5M= X-MC-Unique: CNNg2_zbMYyc99ziDhO7KQ-1 X-MC-Unique: NuVsao1oODmNawZADhPnsA-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=cXhCkeloVxO8IeSIdL0w6xNOMVQR9Wpxq+CkRA92kHI=; b=s/OAHsrc8/dtbX9ePKPvzctgIsj0J9jftht0xt3W1HyHxBONVmK0QeUuOlp33zbi40 oE4eWBXXIXXeRDtSZSt72siTQi7fUze+geNQ1KroDNl6V0Xk2cpSa7TCR7wc5qwoVvpT 14E974lfOboXjEP0SLzRqVcp5Cwpwf8/kxJxZzxAGDDJwRQe+VwFPuxGwLc7yFXHQkX8 P99DhxniG+SLEHiv8N7PxYtYX6XCO+pGx6WI6YY2vjRd6EML4lpGHeIdZ2NvYNNwyUOH WqTUUMpdm+6Zp++3gGvWnFyaBW93eqRUED2JRuTFxCGRrcA43WpqsoD9iJArIeggvLNH SJxA== X-Gm-Message-State: AGi0PuZ0ULYLFjxpnMzobwgFkDzEvuTxDbRcNxNrp5/GSU6aerbJVzcm Jx+tynsfN1Di1oeRbW5l/Pq5CnPZX6Q= X-Google-Smtp-Source: APiQypLC/lpxwpLIbO55PVnpmWJ0TmIwy1H3k0glE7b7frPFZP59xKq8skqkWO02r5K0LVKgS4PGDQ== X-Received: by 2002:a1c:148:: with SMTP id 69mr5175777wmb.181.1587477016781; Tue, 21 Apr 2020 06:50:16 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 14/40] rpc: gendispatch: prepare for GObject conversion Date: Tue, 21 Apr 2020 15:48:55 +0200 Message-Id: <20200421134921.3717019-15-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoLVb003368 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" 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.25.3 From nobody Wed May 1 20:24:33 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=1587477062; cv=none; d=zohomail.com; s=zohoarc; b=COd2qIh7ezqprHU584KyNpQqIbAt5KExK+Cyz3BVWpXkb3mBNlkbrHxWadwFaUzBcV27N00IjGHqe04tSPhybDr5PK+Yqno79Pmh8qUPAA4bmxcQVjr7LT0jvz556FJcR+E1yug3dfSBjKqoT2LpWvVQ3xXAvi1B6n3Ew0vqQKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477062; 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=E7TkZSgIrU6KSnUetZ2rWrwMhf0B3Eigg3GEE9dJvfg=; b=n4v7VLbRQ0Piom+RLXwqYi9NK58x5s/y9Nc9rNX6vOxQxMa42bnXaw6jeW7anY/zOM+C3TjGdFniof/1/xCBZUWRzFeVZkp605tMOJSHR/NV+G7iKZz3Z0fBrzYV54DN3c1f/hUhwozfuPfotWOWiYcQ1qn6zyJCEBPhxsnYqm0= 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 1587477062755215.05583916297053; Tue, 21 Apr 2020 06:51:02 -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-32-OAzl5uGWNUeYVxN_gxt9rw-1; Tue, 21 Apr 2020 09:50:58 -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 684DF149C0; Tue, 21 Apr 2020 13:50: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 3F447B3A7E; Tue, 21 Apr 2020 13:50: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 E12BE941B8; Tue, 21 Apr 2020 13:50:50 +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 03LDoP1o003390 for ; Tue, 21 Apr 2020 09:50:25 -0400 Received: by smtp.corp.redhat.com (Postfix) id EDE731C0EEB; Tue, 21 Apr 2020 13:50:24 +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 E68F49D60 for ; Tue, 21 Apr 2020 13:50:22 +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 7519280206A for ; Tue, 21 Apr 2020 13:50:22 +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-111-IejQPIWSP62gPkAEse6xVw-1; Tue, 21 Apr 2020 09:50:20 -0400 Received: by mail-wm1-f54.google.com with SMTP id h2so3629472wmb.4 for ; Tue, 21 Apr 2020 06:50:19 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477061; 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=E7TkZSgIrU6KSnUetZ2rWrwMhf0B3Eigg3GEE9dJvfg=; b=UhPys4vqm71HW0vZBq9O6MAvBFBoZ/8KtXiUtiWhokLgqzwISAm+YvpQxGPzpilnB2WUIp 3nVHsPHcn7lPbelTJi68K9/7lxc0fWBrLUTYNdO1m2Uaivqr6eQ/ewjN+UI1Hs68C/6ZhN yQ56w0TCGN5JImZIvU1f/+M3b40Ooak= X-MC-Unique: OAzl5uGWNUeYVxN_gxt9rw-1 X-MC-Unique: IejQPIWSP62gPkAEse6xVw-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=wrSH9tdbJnNrh+oPkUv7Wj7aocts9a1iPI3egG0aP2U=; b=GmZsYrGPmCmAFxek7dtqD978mdr/b2zRy+0jxYpm5CcWv+Z3/OlgWb4N4c/Nqi2tAs t04h0WTzwKWfwmFTmlqms5lQCW+9aerVUyW6NakU3bnCKX/HokbaHVtV6MclqFgA0Iff 9nHRuVJxMm5e/AF6WkG55+Y8G+KkdB2odgcJ8zw8NSRhrziLbhruLa8xpCNIwzgP8Q+u eKqRYdvAU9JsaoGHz8yuEJvMD+QU1Xjhzy0LKbrVPLGDa1qDxE6zLrDuvWqPTYZaWPrl DmqgGvkDKNTEnndZIhCR01sS9fsEdYICCKEiYo5MDGdaHBUmKylJsMP9pVCOZe3XFYNf kwHw== X-Gm-Message-State: AGi0PuZu6hmZhOSktpdnS9PJ9Si4/V0JtiCppYoVBBR6/nG0UJxniOnb d+/oK+K00VJonx2XblsdisrlbJhy3Qc= X-Google-Smtp-Source: APiQypL7rLW8LL50k/9+q4Wgt7tfXSOkRqAu0LBJK6lml+ZiNBp+3996iD9BUSBRFRakFiZtQFFqrw== X-Received: by 2002:a05:600c:4096:: with SMTP id k22mr4607422wmh.99.1587477018638; Tue, 21 Apr 2020 06:50:18 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 15/40] admin: convert virAdmServer to GObject Date: Tue, 21 Apr 2020 15:48:56 +0200 Message-Id: <20200421134921.3717019-16-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoP1o003390 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/admin/libvirt-admin.c | 2 +- src/admin/libvirt_admin_private.syms | 2 +- src/datatypes.c | 56 ++++++++++++++++++++-------- src/datatypes.h | 20 ++++++---- src/rpc/gendispatch.pl | 1 + 5 files changed, 55 insertions(+), 26 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..cfdb9f9650 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -71,11 +71,27 @@ 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 virAdmServerDispose(GObject *obj); +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->dispose =3D virAdmServerDispose; + obj->finalize =3D virAdmServerFinalize; +} + static int virDataTypesOnceInit(void) { @@ -105,7 +121,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 +1188,40 @@ 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) +virAdmServerDispose(GObject *obj) { - virAdmServerPtr srv =3D obj; + virAdmServerPtr srv =3D VIR_ADM_SERVER(obj); + + virObjectUnref(srv->conn); + srv->conn =3D NULL; + + G_OBJECT_CLASS(vir_adm_server_parent_class)->dispose(obj); +} + +static void +virAdmServerFinalize(GObject *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 +1239,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 +1253,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.25.3 From nobody Wed May 1 20:24:33 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=1587477042; cv=none; d=zohomail.com; s=zohoarc; b=PqGbXBIsOgThs2QVzkvUwpseQIA/45hqNDI11vVi+23qgrMQyY4DTfZrEISaYayanEBcSM+TNhDuL0n5kRcl5/zNXL/qbceIniwZWSYnDUQ56BKNYThw6V1vy9b7BZTEsFQjHD8VbvZK+2RZRXecLrXhnf5n91g8aKSp3/F1uNQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477042; 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=XiGmkUCG/NMOl7+MzJautMZEKE4buxxEJg+3xIju3zk=; b=G4pbJDdjrL7/Hyg3bzvzzRLk1AaLaJnfNBMnmenuYzsiVlZ2OkrIrOBUX5nlowYNwL+PxFhjudq41BtYm4GO1Dt6p7d3E4NWG9g8zRPsOJTWMCZriKYiLRtMZX5EH0Ndzb9MfmjlPXA7/qQnEhL6cUE7w5xxlyZhyHnr9E3gEMw= 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 1587477042221318.3222870693803; Tue, 21 Apr 2020 06:50: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-230-ybSGMxqIPFuYDk1-j28LJA-1; Tue, 21 Apr 2020 09:50:37 -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 417998017F3; Tue, 21 Apr 2020 13:50:31 +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 13C72B3A7B; Tue, 21 Apr 2020 13:50:31 +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 B71C718089CD; Tue, 21 Apr 2020 13:50:30 +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 03LDoPgp003395 for ; Tue, 21 Apr 2020 09:50:25 -0400 Received: by smtp.corp.redhat.com (Postfix) id 92A772166B29; Tue, 21 Apr 2020 13:50:25 +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 8E1E12166B27 for ; Tue, 21 Apr 2020 13:50:25 +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 6AA91101A55A for ; Tue, 21 Apr 2020 13:50:25 +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-455-izOe9LhKMwO13NqI7YLsjQ-1; Tue, 21 Apr 2020 09:50:23 -0400 Received: by mail-wr1-f42.google.com with SMTP id x18so16588264wrq.2 for ; Tue, 21 Apr 2020 06:50:22 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477040; 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=XiGmkUCG/NMOl7+MzJautMZEKE4buxxEJg+3xIju3zk=; b=B5NjND18/1jiPpaIRos5lFC/AgmfkMau9pRpM/GTgrMpENXAn4DAyfNsJ+uziIuX2reVe4 AZXUVBXrxRh4USusG7WrZo8xs3X+hnA2QQsNZJbJm1IUU2gJVVmMb6eg9byFisLZ+vPv3S b3IKZZ8aGneoUfZma6tSyfYIjLIDmGA= X-MC-Unique: ybSGMxqIPFuYDk1-j28LJA-1 X-MC-Unique: izOe9LhKMwO13NqI7YLsjQ-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=mjJ6yCqKRNHq7m0AsVEouQBbkN3PxGQawPMBAetFWU0=; b=fld6YGZhsFlI9k2jl8SHLAE004x3uhj+5Dt6J6DvPgj17kJKgudlvthSgDD0VHQq66 dQzs3sWM+lno6ZluBxFfqk62l5K1Z0CoSyEupb2kOphIrxOHjbdV5kKydhPpS4B2Fexo Gqvy4HlgtrASj8YraLGasqugu44V5ZRGKsWo4hcP7k6A3NAqlU/QL+x1eYJvNIfHMRSS ex2tNmAwNafRxUXuesaCo8sOKyTG+Aml1PUU8pYKwtYo6mCIWoaEHehyPrOckP1BHFe3 RCoyVoQI/R/5a6nlvbGAP3trGPB+NK741/VwmXnmV2B2FxXRtfucVEikYlhbFEJOlD2A Tpyg== X-Gm-Message-State: AGi0PubrA7D/1zspRHjYgJJiLAlgZsNfH35h1E5KXRLqPU2diKSmjb7Y R16dbPnxONlBM3PJScokxBdzL1btc7Y= X-Google-Smtp-Source: APiQypKNm8s56NkEc68EJLgVI7qOlrU5Q9Jcb0ZYzgnRs2DMHyIuLXWZPKhIkuGG/jFk+Aam9Z16Jg== X-Received: by 2002:adf:fc11:: with SMTP id i17mr26263503wrr.152.1587477020348; Tue, 21 Apr 2020 06:50:20 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 16/40] admin: convert virAdmClient to GObject Date: Tue, 21 Apr 2020 15:48:57 +0200 Message-Id: <20200421134921.3717019-17-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoPgp003395 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/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 cfdb9f9650..83028708da 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 virAdmClientDispose(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->dispose =3D virAdmClientDispose; +} =20 G_DEFINE_TYPE(virAdmServer, vir_adm_server, G_TYPE_OBJECT); static void virAdmServerDispose(GObject *obj); @@ -121,7 +134,6 @@ virDataTypesOnceInit(void) =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); - DECLARE_CLASS(virAdmClient); =20 #undef DECLARE_CLASS_COMMON #undef DECLARE_CLASS_LOCKABLE @@ -1228,30 +1240,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) +virAdmClientDispose(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.25.3 From nobody Wed May 1 20:24:33 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=1587477044; cv=none; d=zohomail.com; s=zohoarc; b=iB7//XsAa2PmVYrIrswMrHVLYyNDb/U7bYvrMBGM4A7jX8Dhl87jiwXNOPOg79UQwxu5lheCOyemQyov0uEVILOruLUzPNsm4XNLaC3PTYZ2PeSXVpbtWfim1y6ykSFK7etPJmCsSGs8PiHACr87exjGtf//qF4AAYN3RZO/n4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477044; 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=7gICtV1f1tQz0lq0itzsgy/eECpoa+CNjWrF5UxQ9MM=; b=D0oCPCVUnCYoEHz9CP21eDn9tcMjrujztcg6VhJuvjFGLTpjHbV831jCwYjyZGwBCex08uX2YgVHG/YfPm4/lyJ2ADtbLhbYRTB/OZynxeGKdMF4JGgJwjnuz2cv7Ufy3B1OHcDEv0oRTg7pFn5kQP3/jwkT8kMBa74l5VBIqm0= 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 1587477044381399.54564250953626; Tue, 21 Apr 2020 06:50:44 -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-417-nXzvHadOMuSQpS8af909Vg-1; Tue, 21 Apr 2020 09:50:40 -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 5354E149C6; Tue, 21 Apr 2020 13:50:35 +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 2262AB3A60; Tue, 21 Apr 2020 13:50:35 +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 C8729180880B; Tue, 21 Apr 2020 13:50:34 +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 03LDoR38003409 for ; Tue, 21 Apr 2020 09:50:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id DEBEF1C0EF4; Tue, 21 Apr 2020 13:50:26 +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 D8BFA1C0EEB for ; Tue, 21 Apr 2020 13:50:26 +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 B06E480029A for ; Tue, 21 Apr 2020 13:50:26 +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-401-FaIx7C24Mu6FBLI-vsyONQ-1; Tue, 21 Apr 2020 09:50:23 -0400 Received: by mail-wr1-f48.google.com with SMTP id d17so16515503wrg.11 for ; Tue, 21 Apr 2020 06:50:23 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477043; 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=7gICtV1f1tQz0lq0itzsgy/eECpoa+CNjWrF5UxQ9MM=; b=JLEDVydBqmtwGolodxmm/vISO2ucwRF1dsEeJQwfUEAdEIq/npCqeL7AL9iVLPRYQXCVtt tNNUwSKU4jXOJqspdlJ4Xm0aIabsrmBOjGPBJnVnQEpxhyyzwbNpVQVSMSBVMieYrHYysH 7ntfh/CyEl2/8Kf7FIcJ4MwnnA7oGyk= X-MC-Unique: nXzvHadOMuSQpS8af909Vg-1 X-MC-Unique: FaIx7C24Mu6FBLI-vsyONQ-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=HcpuAa3lWHYYERPDjriV9NNERG6hHBRoOm8gjHoHtlw=; b=lJkfsJhb1kypzq++AqxpD9JGvGpAsjGnOiv/+rkmVUWp0O+CyPXsrJqKYMN3W/5iF0 Req+/YN+9CJ2TmhgCBV3wai9Elg4g+lcre8vOnCEDVsZQJwmVsJInkgSHFVdPNBV/8QB 28oDEHEmV+zZg7bSYas2HNP54yPaYLZyJpWC0URybDHY/vFpAjMYEBIHEOBkIg4wiXsn 9TZNAI6u7xcfkbdwfeGLecAWRiworJvD2BofhjGKTRi2/Bcb6AtKQdCFxC/XXaE7OIx2 kuBVDWw+DgvUB95pdvACD4IOS82N/o+wuUoQyIOIq0t3Mv6BHfp/eYU6Q2P1WxIKODKZ usxw== X-Gm-Message-State: AGi0Pubb5S3jicOPXeSCIEYFfoCPkw98Ec+/+zxnNq3FSN4qWlIq7Prm 5jDWniVCNoKVU6NzTF6KjE9SyxGkOvQ= X-Google-Smtp-Source: APiQypJyA0uQU/TSApPsMO7NKyTsfMVBiavHADz+XEv721d6JLDIho8hnWv9XkFj6UvV5CCyoS8j6g== X-Received: by 2002:adf:8b1d:: with SMTP id n29mr23740562wra.196.1587477021837; Tue, 21 Apr 2020 06:50:21 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 17/40] datatypes: convert virDomainCheckpoint to GObject Date: Tue, 21 Apr 2020 15:48:58 +0200 Message-Id: <20200421134921.3717019-18-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoR38003409 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/virdomaincheckpointobjlist.c | 7 +-- src/datatypes.c | 68 ++++++++++++++++++--------- src/datatypes.h | 14 ++++-- src/libvirt-domain-checkpoint.c | 7 ++- src/libvirt_private.syms | 2 +- src/rpc/gendispatch.pl | 1 + 6 files changed, 64 insertions(+), 35 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 83028708da..8a044a2ab3 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,24 @@ 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 virDomainCheckpointDispose(GObject *obj); +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->dispose =3D virDomainCheckpointDispose; + obj->finalize =3D virDomainCheckpointFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -119,7 +135,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); @@ -986,7 +1001,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. */ @@ -994,25 +1009,20 @@ 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 @@ -1020,20 +1030,36 @@ virGetDomainCheckpoint(virDomainPtr domain, * virDomainCheckpointDispose: * @obj: the domain checkpoint to release * - * Unconditionally release all memory associated with a checkpoint. - * The checkpoint object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virDomainCheckpointDispose(GObject *obj) +{ + virDomainCheckpointPtr checkpoint =3D VIR_DOMAIN_CHECKPOINT(obj); + + virObjectUnref(checkpoint->domain); + checkpoint->domain =3D NULL; + + G_OBJECT_CLASS(vir_domain_checkpoint_parent_class)->dispose(obj); +} + +/** + * virDomainCheckpointFinalize: + * @obj: the domain checkpoint to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a checkpoint. + * The checkpoint object must not be used once this method returns. */ 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 1a46ec3e3e..bfce1b0b8f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1346,13 +1346,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.25.3 From nobody Wed May 1 20:24:33 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=1587477050; cv=none; d=zohomail.com; s=zohoarc; b=E63EqsxXIMjRDfz/ndzcHS074dumngNgkSUI5sGoffN6eK5VgVqGQnd7+E0JF3PECTK4cTfNlPMgSQ+oCQ8YVZe5C+hbq1pbSiahaTdEWZe/D7Ub+j8xJTXW4r+8dLUxsBEmDoXq/m2IAXM6IGBTmTKMbFxn2CKYF8u0dkn16tE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477050; 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=ECcG0wwllU3HiczIrqHduN8vyJpBpvPOTywzee01oBc=; b=V5PToXGCcFp6ysLljG3ZhUlRBjkFqsW1rlx4wnUWslSU3pZW0Nqc7u/UmjyV22/SQeQRYmsVjxnTmCJmPAwkot3n4JRLb5P1TyS1pcQr7QXJSfvAtnKpOL0NFaumKv5kkscnLtnSqBGcKVobghpqcrISG67ku6Bj9IM36oetOPM= 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 1587477050359715.1887741654951; Tue, 21 Apr 2020 06:50: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-315-eNTl3YEeP2Olzd_bPLkluQ-1; Tue, 21 Apr 2020 09:50:45 -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 3E40E149D4; Tue, 21 Apr 2020 13:50:40 +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 055142898A; Tue, 21 Apr 2020 13:50:40 +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 AF66E1803C33; Tue, 21 Apr 2020 13:50: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 03LDoTPS003426 for ; Tue, 21 Apr 2020 09:50:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id AFD3720292BF; Tue, 21 Apr 2020 13:50:29 +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 ABC3D2093CE5 for ; Tue, 21 Apr 2020 13:50: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 4275E86BCA9 for ; Tue, 21 Apr 2020 13:50:27 +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-384-16lGn3myPGiDlwSjqPHIaw-1; Tue, 21 Apr 2020 09:50:25 -0400 Received: by mail-wm1-f47.google.com with SMTP id e26so3632029wmk.5 for ; Tue, 21 Apr 2020 06:50:24 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477049; 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=ECcG0wwllU3HiczIrqHduN8vyJpBpvPOTywzee01oBc=; b=Z7a4qbOXN84eLKymevLwkST/FMT3fCxkHn1cklXUWO/DV56hZaDfVFOru8l8EPcnLyxu8w 60IuqsOyNJqqC8mhE7vUiw3LaPpkKmGvdDGN13BgrAT3bsQW01jQgTfqXMfKRTKhKcveNr atuZHLGDBdmUm76hWYpQLbQVK4EqzcY= X-MC-Unique: eNTl3YEeP2Olzd_bPLkluQ-1 X-MC-Unique: 16lGn3myPGiDlwSjqPHIaw-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=We+bOAw3b961PgQ1W/vpM3KWaGd32b5F/OTtDeF1shQ=; b=DiarN918NdaTfMeTHtio5f/+AEczwj78fKuOYXPJQIJ/w6PH2Kx+ebtbb9j2AxsQPb YeEHSONCeYNpOEJr2koFjwOtWVfXZ1DpHjeZ5tkw6JDbWLeVkTxdhEDtCUFuGtyuGHpp HsnYpdmJdbQdb85J0USUUyOtlZd+hyZlC0Do9dfbxv10+md4nsz8ZpoPZsplzt3oY/E0 5lqeAyY5A1rZS9AaAfPSooXeKXSlj0Js73JBwknrk0vsQqYusgcKRiAxM6YhMgCivOWK XOvTn2Gz1sAxW30VWZ0/0hLyf3M3bDK2Z1iTJZqQgoWkZovazW2hOM6ISKKsC3dE1Cao 8mGQ== X-Gm-Message-State: AGi0PuaZ24swWr64wHVQ+4Apmi8zuDmPbHomOsB9+nJUY1F6cUC4+k8k aMXJRYm/cDnwkAy0ZNz6gGZX5DNGUE4= X-Google-Smtp-Source: APiQypKjSwEtv4H6CXPHEkk/LJ+eAAC8XDoMZi99uJifPPDYvwhMrnsVDekmJaG85/A992jR7ckO8A== X-Received: by 2002:a1c:2e0a:: with SMTP id u10mr4980265wmu.146.1587477023308; Tue, 21 Apr 2020 06:50:23 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 18/40] datatypes: convert virDomainSnapshot to GObject Date: Tue, 21 Apr 2020 15:48:59 +0200 Message-Id: <20200421134921.3717019-19-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoTPS003426 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/virdomainsnapshotobjlist.c | 7 +-- src/datatypes.c | 68 ++++++++++++++++++++--------- 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, 64 insertions(+), 36 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 8a044a2ab3..334d9d8638 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); @@ -81,6 +79,24 @@ 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 virDomainSnapshotDispose(GObject *obj); +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->dispose =3D virDomainSnapshotDispose; + obj->finalize =3D virDomainSnapshotFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -135,7 +151,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); @@ -1069,32 +1084,27 @@ 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 @@ -1102,20 +1112,36 @@ virGetDomainSnapshot(virDomainPtr domain, const cha= r *name) * virDomainSnapshotDispose: * @obj: the domain snapshot to release * - * Unconditionally release all memory associated with a snapshot. - * The snapshot object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virDomainSnapshotDispose(GObject *obj) +{ + virDomainSnapshotPtr snapshot =3D VIR_DOMAIN_SNAPSHOT(obj); + + virObjectUnref(snapshot->domain); + snapshot->domain =3D NULL; + + G_OBJECT_CLASS(vir_domain_snapshot_parent_class)->dispose(obj); +} + +/** + * virDomainSnapshotFinalize: + * @obj: the domain snapshot to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a snapshot. + * The snapshot object must not be used once this method returns. */ 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 bfce1b0b8f..33d6d4950d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1347,6 +1347,7 @@ virCPUx86FeatureFilterSelectMSR; =20 # datatypes.h vir_domain_checkpoint_get_type; +vir_domain_snapshot_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1354,7 +1355,6 @@ virConnectCloseCallbackDataGetCallback; virConnectCloseCallbackDataRegister; virConnectCloseCallbackDataUnregister; virDomainClass; -virDomainSnapshotClass; virGetConnect; virGetDomain; virGetDomainCheckpoint; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 9b353c6f07..46851d063e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15846,8 +15846,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.25.3 From nobody Wed May 1 20:24:33 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=1587477061; cv=none; d=zohomail.com; s=zohoarc; b=L6zvZ5UA9h67wmHYGTIS7OGyccVj01V6UzKrSz0L4hBIluFmxwhh9q+R7urhxnctRfSt/3rMlKmzVPycGsaiHLP9yk1wKm2IkWM4ucBHDdzPBLmcRPRic6otHC5qYyZIMPiSLFtDDUtVq7su/SWhdXk0fJK0LmDm07etLfXJ9IQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477061; 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=kKSzlO80Jb9C1oBM9KusZEcAVMqgZv9AXzZ7YbSY+5k=; b=DqXeuJFU9KN8Prx3YWjNLwpuGQPT2Hq8CSamdSpuk65wt0E0AQZrspr5lj3CxlEDMFjJVZpGmtWAjgqukYPFR6PENFqQJjclmJPOFmcYsKaId88svoBVaJdjpQJGL8n846NDiDGD7AEIjTn//I3gPkiwHE86lsz7S1ZtzqYjqEw= 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 1587477061902833.9240511420259; Tue, 21 Apr 2020 06:51: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-491-d0X_JY-fONejoSDt4Xuuww-1; Tue, 21 Apr 2020 09:50:58 -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 27E3C149D7; Tue, 21 Apr 2020 13:50:50 +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 EDA4528980; Tue, 21 Apr 2020 13:50:49 +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 A200D18034EE; Tue, 21 Apr 2020 13:50:49 +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 03LDoUjj003433 for ; Tue, 21 Apr 2020 09:50:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 49F432024517; Tue, 21 Apr 2020 13:50:30 +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 45FCC2093CE5 for ; Tue, 21 Apr 2020 13:50:30 +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 232858FF689 for ; Tue, 21 Apr 2020 13:50:30 +0000 (UTC) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-87-mBP38wupOUWJetTbxukQNA-1; Tue, 21 Apr 2020 09:50:27 -0400 Received: by mail-wr1-f45.google.com with SMTP id b11so16531474wrs.6 for ; Tue, 21 Apr 2020 06:50:26 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477060; 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=kKSzlO80Jb9C1oBM9KusZEcAVMqgZv9AXzZ7YbSY+5k=; b=NlWs1EkUfD4dWXCM4BYgGkAQxWH+b5UsTbnl8qnBToiFQQnedRyM8Ads1Q/UGDoOsIKloA 7kSqXg0Bd4OLAZ+5PaKvtaYjFiVUzT3FuONjdh3svm+8k9vHDpnjjkKe004Nj6b7uKFVSO EZlCMFCd+f/WLVDkhQNmTX/U6Wq3sXw= X-MC-Unique: d0X_JY-fONejoSDt4Xuuww-1 X-MC-Unique: mBP38wupOUWJetTbxukQNA-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=mWwT33ZDM4MCR51S9GS7o/a8X64V2+UhaEyrd55hMZ4=; b=c73b3qyubMMEQVy0TzaobWnplGEI4ik+G7krzekzEDhGLkXhPnQBqkz89JwbP4sso0 x5IlBdCC2ZtYa3bQvXrZsnNceDT+zP5nkS3OSQ3eUk+m115eYtMDfL4XcA+cVQElpDHV AcWF8BUJ8x/ua/8LSJyQrsv+YKdaPWpegNzosGclqIgBoMjXgB9GeGqdwYU8zlPzI2pX wVnk4tgLP9XpvqILLvhg6F0ty951w3mCQ04ku513DMt846ZqQUmDNF6G5GPUtKFJUHMm Yv2JjKTpL9pN/8KB4gtLtqcZ9D+msIz1/HPo9nJaFFXfSRszR82x/fAHVS+zJlznjZOK XPzA== X-Gm-Message-State: AGi0PuZhT6wHOYj1j287y+BuDJ5UqdXmRPLqRrN31lg4egVZhEqbvKjf X8E+MT85gS1Wn+2MH2/SteNG3nfS3tY= X-Google-Smtp-Source: APiQypL+QRhH9EFyotpmUErNDkdNTO0Htq4/3FSRxoKpzQbocQMpUz/NM6Eybg+HWlKM7rGEndLm0Q== X-Received: by 2002:adf:e586:: with SMTP id l6mr20177388wrm.184.1587477024945; Tue, 21 Apr 2020 06:50:24 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 19/40] datatypes: convert virNWFilter to GObject Date: Tue, 21 Apr 2020 15:49:00 +0200 Message-Id: <20200421134921.3717019-20-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoUjj003433 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/virnwfilterobj.c | 7 +--- src/datatypes.c | 70 +++++++++++++++++++++++++++------------ src/datatypes.h | 10 +++--- src/libvirt-nwfilter.c | 7 ++-- src/libvirt_private.syms | 2 +- src/rpc/gendispatch.pl | 1 + 6 files changed, 60 insertions(+), 37 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 334d9d8638..e9f6cafd72 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); @@ -97,6 +95,24 @@ 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 virNWFilterDispose(GObject *obj); +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->dispose =3D virNWFilterDispose; + obj->finalize =3D virNWFilterFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -155,7 +171,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); - DECLARE_CLASS(virNWFilter); DECLARE_CLASS(virNWFilterBinding); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); @@ -889,7 +904,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. */ @@ -897,17 +912,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 @@ -915,11 +929,7 @@ 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 @@ -927,23 +937,39 @@ virGetNWFilter(virConnectPtr conn, const char *name, * virNWFilterDispose: * @obj: the network filter to release * - * Unconditionally release all memory associated with a nwfilter. - * The nwfilter object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virNWFilterDispose(GObject *obj) +{ + virNWFilterPtr nwfilter =3D VIR_NW_FILTER(obj); + + virObjectUnref(nwfilter->conn); + nwfilter->conn =3D NULL; + + G_OBJECT_CLASS(vir_nw_filter_parent_class)->dispose(obj); +} + +/** + * virNWFilterFinalize: + * @obj: the network filter to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a nwfilter. + * The nwfilter object must not be used once this method returns. */ 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); VIR_DEBUG("release nwfilter %p %s %s", nwfilter, nwfilter->name, uuids= tr); =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 33d6d4950d..44ffeb6abc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1348,6 +1348,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_nw_filter_get_type; virConnectClass; virConnectCloseCallbackDataCall; virConnectCloseCallbackDataClass; @@ -1374,7 +1375,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.25.3 From nobody Wed May 1 20:24:33 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=1587477068; cv=none; d=zohomail.com; s=zohoarc; b=GrDcXroeC6ITP5ODiF4KSRU7s23MjBei3GMoPlDF7R9ng0uvEN8zCUBXQCfet877yyItVtqALIxksemSmC4EnfX53CO8YxdJFyyB2pKpvXuiqT4H+veeBLEPHKMtqSzoK847OMVxr9YQt7k2I8ZSJBMIYN5A0DK4nnEsFFR3E2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477068; 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=ImIZ7VJeHcGm1BEx7YFYBbce2KTmZ/em/lEZrRG8cJM=; b=ZFz93eNfy10As9TYp5nX0ocEF5xAPYdDh1KVKyJd0DDzAnCJn4MG5zt+f3L3GkfXkQHCsCQYX8VL6jVUowarOpQFsWkIMShZJGiUQfIAhsxVecZFClScBeOpUf7K+/jV+FKVDqO18AzZQul33HlBtdxCbJRguosodGO4f4lqgLE= 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 1587477068332820.0499784839191; Tue, 21 Apr 2020 06:51: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-11-1TIbv-tRO0WyE6ciL6ezSg-1; Tue, 21 Apr 2020 09:51:02 -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 2DA878024D2; Tue, 21 Apr 2020 13:50:56 +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 056E65DA83; Tue, 21 Apr 2020 13:50: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 AFBA91803500; Tue, 21 Apr 2020 13:50:55 +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 03LDobY1003472 for ; Tue, 21 Apr 2020 09:50:38 -0400 Received: by smtp.corp.redhat.com (Postfix) id BD1AD11921A6; Tue, 21 Apr 2020 13:50:37 +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 B8C8511921A2 for ; Tue, 21 Apr 2020 13:50:33 +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 1131686BCD5 for ; Tue, 21 Apr 2020 13:50:33 +0000 (UTC) Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-262-jK5boiKMMyiODiDQi0CQow-1; Tue, 21 Apr 2020 09:50:28 -0400 Received: by mail-wm1-f49.google.com with SMTP id h2so3629984wmb.4 for ; Tue, 21 Apr 2020 06:50:28 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477067; 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=ImIZ7VJeHcGm1BEx7YFYBbce2KTmZ/em/lEZrRG8cJM=; b=EAXe/ATqjtI/4Noe1lCVn6/pFHa5b8fCGkjMXRevlFmQCFD1dQjFWvOJWLXWN7FTIlW3Tg ogNGr5O042EhTqskeZYkWKWAHOaUuugtNWkHfo5D2Cha5SKX1A2mrNn/wLRg7G8FYQ+mnm IcPWfIQ6QZIKSaj2vxn4KmZaTLjHVNE= X-MC-Unique: 1TIbv-tRO0WyE6ciL6ezSg-1 X-MC-Unique: jK5boiKMMyiODiDQi0CQow-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=RrX5deWTCIzIwtRra6lN7Xrj5vNwd69xo5zjfkn6RT0=; b=GoC8LNGEzUpVdiXFuRvkn6MNOHq4iAfpn0uM0/O6FHgRnMGBxqndrUE93GejVOi4Q+ +Mw9Poa2OEPrDq5k6pSQHtPuy+tpkboEKDxyj1Y/JcVvlH84Ajk1qVr18hQyi04qVPvA a6d7YgKgGFYkRXCJ9gdgPwBgRtQ7NWQH+AMMoUtl2lDVp8DDhyjQ5gLZ16mzyhmOTsRh fyJc6xVCWH9tAZZ8F5f3pbWfVYmuO4UZSgWy/GAKXBWVHq+/kakqn9OBpmr17B8/KdTM IQExasV+3xuxtbokr6yEVvvqzwdq6chUQEVPmbO1Qlz4jJfPpVuvvdgpGqTHumObHu0A FcTg== X-Gm-Message-State: AGi0PuaecfeagC+V43DZiGrsFYS2VmqoFAGZahJ3myxytshFG8frOHps 9/HFTcIaDNMNKyYCE3CZd+PTgYQ7WY8= X-Google-Smtp-Source: APiQypKIjOI5PisfaSpTvJBEIjtjcvtTY60bVDR2h1aUTmjNG8Jf/zobB+D4IqXFXLbmfv0OSwTlzw== X-Received: by 2002:a1c:a7c2:: with SMTP id q185mr5086975wme.42.1587477026565; Tue, 21 Apr 2020 06:50:26 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 20/40] datatypes: convert virNWFilterBinding to GObject Date: Tue, 21 Apr 2020 15:49:01 +0200 Message-Id: <20200421134921.3717019-21-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDobY1003472 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/virnwfilterbindingobjlist.c | 2 +- src/datatypes.c | 68 +++++++++++++++++++--------- 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, 64 insertions(+), 32 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 e9f6cafd72..a562b5da5f 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); @@ -113,6 +111,24 @@ 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 virNWFilterBindingDispose(GObject *obj); +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->dispose =3D virNWFilterBindingDispose; + obj->finalize =3D virNWFilterBindingFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -171,7 +187,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); - DECLARE_CLASS(virNWFilterBinding); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); DECLARE_CLASS(virStorageVol); @@ -980,7 +995,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. */ @@ -988,16 +1003,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 @@ -1005,11 +1019,7 @@ 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 @@ -1017,22 +1027,38 @@ virGetNWFilterBinding(virConnectPtr conn, const cha= r *portdev, * virNWFilterBindingDispose: * @obj: the network filter binding to release * - * Unconditionally release all memory associated with a nwfilter binding. - * The nwfilter binding object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virNWFilterBindingDispose(GObject *obj) +{ + virNWFilterBindingPtr binding =3D VIR_NW_FILTER_BINDING(obj); + + virObjectUnref(binding->conn); + binding->conn =3D NULL; + + G_OBJECT_CLASS(vir_nw_filter_binding_parent_class)->dispose(obj); +} + +/** + * virNWFilterBindingFinalize: + * @obj: the network filter binding to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a nwfilter binding. + * The nwfilter binding object must not be used once this method returns. */ 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 44ffeb6abc..ba4a5f0986 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1348,6 +1348,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.25.3 From nobody Wed May 1 20:24:33 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=1587477072; cv=none; d=zohomail.com; s=zohoarc; b=nP/EQdtAA/xYXW0WLGqr3eDceXUESg8gNZQk9kKOX3WsHZkxE5uwM9O0Oil8Kp5NEMaLoh3c9bvYXlbxvJMCB/mY8eS3ltQMb1crsrj6HDaNVVLLTeMKve1dOa7aFqaiBTkm9WZicv1W3rD40yiiMKjJpjQGRBw7mXZh5s6BQUg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477072; 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=bEg7Xs/IbBJ30L7ZMJpBM4JiJLah6iOn53YAPwphy48=; b=P/frUTOaXb+brhyi7sfAFZFjqteqqzMM8OglQYgcy9wCRNONGU6RZGZis/NhDMLd/F1+FAJ69uGgxJSeISq9EWNjVqkTGHX6pnzpdmamL2q+BE0jO9ft0RnmDmhUFEXpjElOJFjxV8PsmshXG9jYlR2s89CHvLeki4c5QPa7lsM= 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 1587477072463488.1886531679095; Tue, 21 Apr 2020 06:51:12 -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-426-wOJXxqftMVewNJoXrFPAoA-1; Tue, 21 Apr 2020 09:51:08 -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 89E3B149DD; Tue, 21 Apr 2020 13:51:00 +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 5EA6C76E94; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 0AB16180350A; Tue, 21 Apr 2020 13:51:00 +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 03LDohbL003511 for ; Tue, 21 Apr 2020 09:50:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id A9F6E1C0EF5; Tue, 21 Apr 2020 13:50:43 +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 A57421C0EED for ; Tue, 21 Apr 2020 13:50:41 +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 4EA938FF686 for ; Tue, 21 Apr 2020 13:50:41 +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-463-Vrax-Tf-OcuV7gQh1Bsmlg-1; Tue, 21 Apr 2020 09:50:29 -0400 Received: by mail-wm1-f66.google.com with SMTP id v8so2587571wma.0 for ; Tue, 21 Apr 2020 06:50:29 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477071; 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=bEg7Xs/IbBJ30L7ZMJpBM4JiJLah6iOn53YAPwphy48=; b=FJUSa0QS9jYOJOfrbOAquPoIMkgY61FJcgyM9ft/K6rxOix350ObOvtebfQFo++QFA80q5 eaVzLOgLwaG5rBOvbQGaE7oXkjq9iGhzWU8UA5SsT/fBkyCT51muOmHLNAFntq9YS5dK8W ZPuUWxWtc2M8IRHtuowlvYY+rbTuwE4= X-MC-Unique: wOJXxqftMVewNJoXrFPAoA-1 X-MC-Unique: Vrax-Tf-OcuV7gQh1Bsmlg-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=RtDDAlbMohuRZJtSWKfGZFkqXM3J8Qut6S459Dk3HRg=; b=AnVqpzyZVyu2TigFQH9iUhUzuxQPvgKuhz1QmAGdZwXt63kX68o7/7FFh67hO3bQYL 5616VtVPtyWxV8vBaHt/lV1KMy4MloLrXOPQzl+km+75e+bhMj/z2WT19tHQGDgwD1eZ 8fhkibat9dtA8AUeWROqFFZGbPmbMdK6WM3vGnbc52AoG5nQuVNIqcX+tfA29q1hA4ml 2h+VHJNe6yq3cOKzoNfz5LkB4EHGYMskbwA4BFY4tz2+9KA2pcZv2pIxVgbe+IKtGAKb xztZGcNWBA9mjz0cUEN6g/HSrw+Wp873osoJAt31XdbjDSn17cOgfvPuqf/YFobi3UDt echQ== X-Gm-Message-State: AGi0PuaxwIHZIwbHz5+zLAsww3TSWWBnaddXNKU4WNH65ZeZnviPUonE bjwQQ/XhmKc6zHuZ2Eh4Y5ueNtVJ/6M= X-Google-Smtp-Source: APiQypI+w65RXkqE5ysjae2PFKanOZO4f28wwCm1xJk7zfCND24Zpzd04FuPeUTM0sGyOi8svjOqWQ== X-Received: by 2002:a1c:80c3:: with SMTP id b186mr5424975wmd.117.1587477028020; Tue, 21 Apr 2020 06:50:28 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 21/40] datatypes: convert virNetwork to GObject Date: Tue, 21 Apr 2020 15:49:02 +0200 Message-Id: <20200421134921.3717019-22-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDohbL003511 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/conf/domain_conf.c | 6 +-- src/conf/network_event.c | 7 +-- src/conf/virnetworkobj.c | 5 +- src/datatypes.c | 74 +++++++++++++++++++---------- 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, 79 insertions(+), 67 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 85afadeb06..57a2c09b91 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31571,7 +31571,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 @@ -31592,7 +31592,6 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, =20 cleanup: virObjectUnref(port); - virObjectUnref(net); return ret; } =20 @@ -31645,7 +31644,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; @@ -31672,7 +31671,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 a562b5da5f..cb4c5705b2 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); @@ -93,6 +91,24 @@ vir_domain_snapshot_class_init(virDomainSnapshotClass *k= lass) obj->finalize =3D virDomainSnapshotFinalize; } =20 +G_DEFINE_TYPE(virNetwork, vir_network, G_TYPE_OBJECT); +static void virNetworkDispose(GObject *obj); +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->dispose =3D virNetworkDispose; + obj->finalize =3D virNetworkFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterDispose(GObject *obj); static void virNWFilterFinalize(GObject *obj); @@ -184,7 +200,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); @@ -421,58 +436,69 @@ 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: * @obj: the network to release * - * Unconditionally release all memory associated with a network. - * The network object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virNetworkDispose(GObject *obj) +{ + virNetworkPtr network =3D VIR_NETWORK(obj); + + virObjectUnref(network->conn); + network->conn =3D NULL; + + G_OBJECT_CLASS(vir_network_parent_class)->dispose(obj); +} + +/** + * virNetworkFinalize: + * @obj: the network to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a network. + * The network object must not be used once this method returns. */ 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); VIR_DEBUG("release network %p %s %s", network, network->name, uuidstr); =20 VIR_FREE(network->name); - virObjectUnref(network->conn); + + G_OBJECT_CLASS(vir_network_parent_class)->finalize(obj); } =20 =20 @@ -500,7 +526,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; @@ -529,7 +555,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 ba4a5f0986..b41eee4e59 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1348,6 +1348,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; @@ -1372,7 +1373,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virInterfaceClass; -virNetworkClass; virNetworkPortClass; virNewConnectCloseCallbackData; virNodeDeviceClass; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index b7c119366e..be37e0835d 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -1201,7 +1201,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; @@ -1400,7 +1400,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 9a385eba0d..3fc4456c75 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -1709,7 +1709,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", @@ -1717,7 +1717,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 5f9aa7e8a6..f0f2a075fb 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 09e3e8c51b..d479c3a9df 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.25.3 From nobody Wed May 1 20:24:33 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=1587477066; cv=none; d=zohomail.com; s=zohoarc; b=OYjS1+eWN8rxRcTsj5vleoQBmZFZ1F/vmB9j2aqvGqruho5JsvUokUy0+BhI738j3WeOsAzovYlDpoU85N/q2hznkjqdR7rWdiPC1QJebmo+wbhTC1MoqHEAW3a+BsPLQPaXl0aM83RBqPRxnLjf9TtG5T2Ib+ryMRZGf7LQMqY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477066; 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=0MrwKPyy7OUohNEcsFXPLZdfu2qDFDBfaidjY/D7m+4=; b=UIzueDPSBQCXF/jMi574XdTeJlOASEIcXKgDJsWIn3ENxYUxAuhlv48GAJDvsQiMsPqgBu1Rrq49HGO1MmOwkszpw7dIq0guP7N5PUwx+tgrTgEek0WCl1fMbmahZ5RAT0fmodrAKlq4qQPfeXV7viT02f0ADeTiDIfcEVrYe84= 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 1587477066426291.6827854235803; Tue, 21 Apr 2020 06:51:06 -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-i1lbw3Z6MG2W2K6wZsmlxA-1; Tue, 21 Apr 2020 09:51:01 -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 2A2E8149CA; Tue, 21 Apr 2020 13:50:55 +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 EE0D110027BA; Tue, 21 Apr 2020 13:50:54 +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 9C59818034FB; Tue, 21 Apr 2020 13:50:54 +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 03LDoYYr003449 for ; Tue, 21 Apr 2020 09:50:35 -0400 Received: by smtp.corp.redhat.com (Postfix) id D0B101C0EF2; Tue, 21 Apr 2020 13:50:34 +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 CC5D01C0EF6 for ; Tue, 21 Apr 2020 13:50:34 +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 AF4FD185A7A4 for ; Tue, 21 Apr 2020 13:50:34 +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-390-j9mxoEe5OtKIZWeSzYTXpw-1; Tue, 21 Apr 2020 09:50:31 -0400 Received: by mail-wm1-f68.google.com with SMTP id g12so3762258wmh.3 for ; Tue, 21 Apr 2020 06:50:31 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477065; 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=0MrwKPyy7OUohNEcsFXPLZdfu2qDFDBfaidjY/D7m+4=; b=QO8MytuXC6HDEc/Pc9Axw3lcuF4i/iQMpdWY7vaglzVgZxnlD/gbueTsm75REu+uVdpaaN mTZWZMGOU57yZfJl4vhwDjYfD4j45OWElQ6lNJ1+GXxnxvqrqdcAWuiuYMNwO8Y4Q3stOG 9hfTeRLpQ1XagWoneYx2UzOWs0WxMvw= X-MC-Unique: i1lbw3Z6MG2W2K6wZsmlxA-1 X-MC-Unique: j9mxoEe5OtKIZWeSzYTXpw-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=p/gl3IhJFoLnw4c4gdkVpIZwzbPhn+69u6gvWnOXH9Q=; b=CjwvPPARxk783d6Wb/yD6Ptasotq1qbGu++o/ZsDNSSCuzeA9YEU3qUTlVzw7/Bd5V ssPm/LKGgKDjWW2IVAEPZUOQhAcT3WlTYO1Swn25vYjFxm8HpnBkPM4GWhK8zIcTpVOe /jDO1yhIhGS4zPqusqSRfRK9PUpop0O1L3OwEEw3q932Sllj2ydkCmmbTAdoUJUyXerO /rwbpo7XoBOghjdR2jlzbB8oMVCAZa14a1mNh+Qfzh8HPoWF0l6W7pvrigPzVng3wYE0 UZxaskJX5ylY2nS3XUM1NoCtMnfUjUJgytLj/NNkjV5svBXwyDONMoo+zHvSy5Yq2jDq mStQ== X-Gm-Message-State: AGi0Pubx643EF+0EeVKB8EBqKQCdaB3baMjRefM2f9pvvtdH3lMrtNlL JBWpl9rJPyG+GM3bIQtdmYbaBL6MlEI= X-Google-Smtp-Source: APiQypKc0YivMUSeNFkPMgVGZd6xeZ+8vTVwmPqejq9a4eCNAwNVU3ExYpjpCXtmbgm7Li/OXcrTog== X-Received: by 2002:a1c:7416:: with SMTP id p22mr5213539wmc.80.1587477029689; Tue, 21 Apr 2020 06:50:29 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 22/40] datatypes: convert virNetworkPort to GObject Date: Tue, 21 Apr 2020 15:49:03 +0200 Message-Id: <20200421134921.3717019-23-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoYYr003449 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/domain_conf.c | 6 +-- src/conf/virnetworkobj.c | 5 +-- src/datatypes.c | 66 ++++++++++++++++++++--------- 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, 64 insertions(+), 49 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 57a2c09b91..fa87fb0590 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31572,7 +31572,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 */ @@ -31591,7 +31591,6 @@ virDomainNetReleaseActualDevice(virConnectPtr conn, goto cleanup; =20 cleanup: - virObjectUnref(port); return ret; } =20 @@ -31645,7 +31644,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; @@ -31670,7 +31669,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 cb4c5705b2..f06438c1c3 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); @@ -109,6 +107,24 @@ vir_network_class_init(virNetworkClass *klass) obj->finalize =3D virNetworkFinalize; } =20 +G_DEFINE_TYPE(virNetworkPort, vir_network_port, G_TYPE_OBJECT); +static void virNetworkPortDispose(GObject *obj); +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->dispose =3D virNetworkPortDispose; + obj->finalize =3D virNetworkPortFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterDispose(GObject *obj); static void virNWFilterFinalize(GObject *obj); @@ -200,7 +216,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); @@ -508,54 +523,63 @@ 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: * @obj: the network port to release * - * Unconditionally release all memory associated with a network port. - * The network port object must not be used once this method returns. + * Unreferences the associated network object, which may also be + * released if its ref count hits zero. + */ +static void +virNetworkPortDispose(GObject *obj) +{ + virNetworkPortPtr port =3D VIR_NETWORK_PORT(obj); + + g_clear_object(&port->net); + + G_OBJECT_CLASS(vir_network_port_parent_class)->dispose(obj); +} + +/** + * virNetworkPortFinalize: + * @obj: the network port to release * - * It will also unreference the associated network object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a network port. + * The network port object must not be used once this method returns. */ 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_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 b41eee4e59..69134087c1 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1349,6 +1349,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; @@ -1373,7 +1374,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 f0f2a075fb..2e4e1a65db 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 d479c3a9df..9373ba78b7 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.25.3 From nobody Wed May 1 20:24:33 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=1587477055; cv=none; d=zohomail.com; s=zohoarc; b=FjH5Ljbh40SweYP1LT08oMe1Tromdl5Aate8NqyvT1a6UyVGLT8bHVQL8Xq7SVxWRT6JLwwhYjkbrN7R+FVrl2Jgc/mTzJkj3QCUmj59+Q5hJw6S86W3sgfS3aMDB8MVanWOERQBERAGTGA6IazEyXoNxtdn6FUH6877aL1hnec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477055; 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=xLc6HMg+Vem64MKGRjyqnAa2OlcMjldVeJolUj+TRUg=; b=IGlL4JKaxwDkFUSaBXpJpMCM92gC5U9jOXblRHPF1ujqN1qglA8QgTlFpoGhDsbiiWsHCPtkwhyGv63sV78FgMw1ZJAsDOeE0YxMVx68q/oDstTp6BRClBhN5jz6GfIZRs4Yepvd1EiyHjDkH+LvgdrLkVll+ZPw5JZr/FfL8tw= 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 1587477055547173.67613844539517; Tue, 21 Apr 2020 06:50:55 -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-17-buZMTYwgNFep_S7GRMmqAw-1; Tue, 21 Apr 2020 09:50:51 -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 4761A80256B; Tue, 21 Apr 2020 13:50: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 1B96DA105B; Tue, 21 Apr 2020 13:50: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 C7E481803C42; Tue, 21 Apr 2020 13:50:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDodD7003483 for ; Tue, 21 Apr 2020 09:50:39 -0400 Received: by smtp.corp.redhat.com (Postfix) id 704CB10027BA; Tue, 21 Apr 2020 13:50:39 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast06.extmail.prod.ext.phx2.redhat.com [10.5.110.77]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6A49B100164D for ; Tue, 21 Apr 2020 13:50:36 +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-mx01.redhat.com (Postfix) with ESMTPS id 9C500801E70 for ; Tue, 21 Apr 2020 13:50:35 +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-484-ytdbkKrRMrqp09YGHLUYoA-1; Tue, 21 Apr 2020 09:50:33 -0400 Received: by mail-wm1-f68.google.com with SMTP id r26so3784334wmh.0 for ; Tue, 21 Apr 2020 06:50:32 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477054; 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=xLc6HMg+Vem64MKGRjyqnAa2OlcMjldVeJolUj+TRUg=; b=S27upqlRiKoCYyzdRxsT39+PRRqCCEcZ+Yf5UnWAkDYIbPgQndJ/uHO64lSI480QvcP5yX 5eiiSPDPqmlppEc0ASO+OmMqY9zsa8RvQAKO+lHEL1bMFHkL4ynna7CoD7lEO5GnPnz4NZ SV/YzHkUc4Dn/CqrzFOHLcrpQN3kDmY= X-MC-Unique: buZMTYwgNFep_S7GRMmqAw-1 X-MC-Unique: ytdbkKrRMrqp09YGHLUYoA-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=Ha5fZam1KeSxdD8DN4KwaHTaQgVKEcYv2NV8sGCRFMc=; b=VEgMRn0fE/sq4Z3h5pkauePhsXU3EYMeygGwWTzMbMQmcaMeCBbSJKYZQlaR088WvC 67FYS0y9mtGvF0Mv03ZFbR8NBhw16qYo+ynlB69UC8gATcs43Tz/+gcJgBKFyH//maOx q6wfIOf4+A1rHFuSBATC0weHi+ydEx2W7AiLB2ffb3vTgsdh0XjRRgP1nHrJQo/uijEM VMzRFembZIdRXXV3Unf10CK9aP8BSnZyP5ZH/O048tyiSdj+TVZsb95FP7/vHMvEkXqd qoWlHQTrWraV/oPHAlNNHu3JBN48LjVpUSaFCqYVFW4GABtK8vJhGgyNuJ88wdoZ2YKG 2kWQ== X-Gm-Message-State: AGi0PublIebiiLm/RZ31LR2iownWvzzZFFmpdnmopq32DqK/Zi44Bk36 pqv7mvd/zRKyaj/SuUzzGDwMgHTbOz4= X-Google-Smtp-Source: APiQypKsQTtlFOJ9ETim/P1em0J9Z6u9KLk6OP3zZKQ3vYl0VxKxeEtzZqSBfFj31gPQ6uzqA/xGxQ== X-Received: by 2002:a1c:7706:: with SMTP id t6mr5020196wmi.110.1587477031211; Tue, 21 Apr 2020 06:50:31 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 23/40] datatypes: convert virInterface to GObject Date: Tue, 21 Apr 2020 15:49:04 +0200 Message-Id: <20200421134921.3717019-24-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDodD7003483 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/virinterfaceobj.c | 5 +- src/datatypes.c | 68 +++++++++++++++++-------- 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, 61 insertions(+), 46 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 f06438c1c3..455bcd70ef 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); @@ -89,6 +87,24 @@ vir_domain_snapshot_class_init(virDomainSnapshotClass *k= lass) obj->finalize =3D virDomainSnapshotFinalize; } =20 +G_DEFINE_TYPE(virInterface, vir_interface, G_TYPE_OBJECT); +static void virInterfaceDispose(GObject *obj); +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->dispose =3D virInterfaceDispose; + obj->finalize =3D virInterfaceFinalize; +} + G_DEFINE_TYPE(virNetwork, vir_network, G_TYPE_OBJECT); static void virNetworkDispose(GObject *obj); static void virNetworkFinalize(GObject *obj); @@ -215,7 +231,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); @@ -590,59 +605,70 @@ 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: * @obj: the interface to release * - * Unconditionally release all memory associated with an interface. - * The interface object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virInterfaceDispose(GObject *obj) +{ + virInterfacePtr iface =3D VIR_INTERFACE(obj); + + virObjectUnref(iface->conn); + iface->conn =3D NULL; + + G_OBJECT_CLASS(vir_interface_parent_class)->dispose(obj); +} + +/** + * virInterfaceFinalize: + * @obj: the interface to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with an interface. + * The interface object must not be used once this method returns. */ 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 69134087c1..1549a85133 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1348,6 +1348,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; @@ -1373,7 +1374,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.25.3 From nobody Wed May 1 20:24:33 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=1587477078; cv=none; d=zohomail.com; s=zohoarc; b=kFQesR/pgv4ISvcjtzJXnUVpdH/vVU5l/pt+HcpexdQFvx7XWX0tXSncmq35iGYrnsDiXpiECiYgd46wMc1AkQQWi5arjoPhL6En/2T9I3a0tgpYJeTY1/gt2m8YxJLKizuCgL4+/K3FFK3N7r6PJmihhPuCTAsYhxrRgBbn9us= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477078; 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=NVfkhM0NvjK9ttTNvnaxqnp8Mf2hX0gxvTo4jG3GGhs=; b=YPTAenk8KswmS1Y/T4Mxs2mr0FzqQnSwkoxsjuN/ITaoncDPE3wG2yDfnj8e+EuAwcKwlHorUJqYs7mbC9a00+mNxRGD5BUQZ/ZLEFtsYFIvff0HpY+Inpw316vd9oIi0IPnz6p9JgzSkFEoYtrIHodBGcDWVPBQjwaS3ixnt98= 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 158747707860151.290099519292085; Tue, 21 Apr 2020 06:51:18 -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-396-9Mzlxn6TPKWh2tQBvNKgng-1; Tue, 21 Apr 2020 09:51:12 -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 28D25149C4; Tue, 21 Apr 2020 13:51:05 +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 EEC77A18A1; Tue, 21 Apr 2020 13:51: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 93608941D7; Tue, 21 Apr 2020 13:51:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDoijM003518 for ; Tue, 21 Apr 2020 09:50:44 -0400 Received: by smtp.corp.redhat.com (Postfix) id 385D05DA7C; Tue, 21 Apr 2020 13:50:44 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast04.extmail.prod.ext.phx2.redhat.com [10.5.110.61]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2FC6C5DA88 for ; Tue, 21 Apr 2020 13:50:37 +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-mx01.redhat.com (Postfix) with ESMTPS id 4A7D0149C4 for ; Tue, 21 Apr 2020 13:50:37 +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-350-4MN6vFhPPe6Emncl5tmysw-1; Tue, 21 Apr 2020 09:50:34 -0400 Received: by mail-wm1-f50.google.com with SMTP id u127so3777946wmg.1 for ; Tue, 21 Apr 2020 06:50:34 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477077; 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=NVfkhM0NvjK9ttTNvnaxqnp8Mf2hX0gxvTo4jG3GGhs=; b=NbpaSyLak/oTGB1oP4k6HAQqs2VtxB3KIws6zD3ISaBMFVUDma95eJZWmMTlbAASlZVQLu asA79IS277yBAAfmpB35HlVOfoN9Mjxg5Ho3wPzu/y0BT347ATCL3WxHmZiaKMHV9AZWqC CfJT5uus2V2Ziaq23GLqNDGCRLKKUqg= X-MC-Unique: 9Mzlxn6TPKWh2tQBvNKgng-1 X-MC-Unique: 4MN6vFhPPe6Emncl5tmysw-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=Exvu1/HZixClOv9QsBtO3dK1P/Viu26v1sa/um4+kj8=; b=cthiFfsOkdEhxb0jG8e98LreD+6LAgc6xo1GtWT+a/6sxypz5R6+422Z5UW1ltPbfq nYLRMiZzIBJ2XKO1GFB8/v0pKG0tPlkWvgv7T41dLXtrvIznS3nvlQX3HhBJL32qVU5e sdWyiW5WYPBAdhmG7w0yLO2BQrZny1hFm5PB+YRHBM4UfWpf2S62zFEIjIhTIV1Dn34f Iw6Mr3iL4o9eGaknjDqpq6lNwA8p6p2YT8HezBputaYALABL1IeONalTuQPIPK3E0KCX qcsEgBVUex6b8VOtnIz2TFhbbx35W3Ktzhxoy9cHoSMXFBH+OxGija7QMwBpxoOAqA1q UQ2A== X-Gm-Message-State: AGi0Pubhodsj3osaK1EiQoYSwmZTmiwFjhoKwRPjDfsPu2Vqskq6bmD4 +biAxW5vn3ExLCeHlU4APNLC4N0l+C0= X-Google-Smtp-Source: APiQypKEF5W7/sNGo7f3K25lN1N79y7hqWpNWYwrH9I6WXcIBIfiFpJ+WrN0NAMHa8Ds1IDS84/Pyg== X-Received: by 2002:a1c:5fc4:: with SMTP id t187mr5258983wmb.181.1587477032460; Tue, 21 Apr 2020 06:50:32 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 24/40] datatypes: convert virStoragePool to GObject Date: Tue, 21 Apr 2020 15:49:05 +0200 Message-Id: <20200421134921.3717019-25-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoijM003518 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/storage_event.c | 15 +++---- src/conf/virstorageobj.c | 2 +- src/datatypes.c | 70 ++++++++++++++++++++--------- 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, 73 insertions(+), 53 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 5cbd30f93c..4c25c9a9f8 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 455bcd70ef..a9a942b3a6 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 virDomainCheckpointDispose(GObject *obj); @@ -177,6 +175,24 @@ 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 virStoragePoolDispose(GObject *obj); +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->dispose =3D virStoragePoolDispose; + obj->finalize =3D virStoragePoolFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -235,7 +251,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); DECLARE_CLASS(virStorageVol); - DECLARE_CLASS(virStoragePool); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -681,7 +696,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. */ @@ -690,17 +705,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 @@ -711,11 +725,7 @@ virGetStoragePool(virConnectPtr conn, 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 @@ -723,16 +733,31 @@ virGetStoragePool(virConnectPtr conn, const char *nam= e, * virStoragePoolDispose: * @obj: the storage pool to release * - * Unconditionally release all memory associated with a pool. - * The pool object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virStoragePoolDispose(GObject *obj) +{ + virStoragePoolPtr pool =3D VIR_STORAGE_POOL(obj); + + virObjectUnref(pool->conn); + pool->conn =3D NULL; + + G_OBJECT_CLASS(vir_storage_pool_parent_class)->dispose(obj); +} + +/** + * virStoragePoolFinalize: + * @obj: the storage pool to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a pool. + * The pool object must not be used once this method returns. */ 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); @@ -742,7 +767,8 @@ virStoragePoolDispose(void *obj) pool->privateDataFreeFunc(pool->privateData); =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 1549a85133..94009505bc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1353,6 +1353,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; @@ -1377,7 +1378,6 @@ virGetStream; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; -virStoragePoolClass; virStorageVolClass; virStreamClass; =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index bc280e856a..de65c730f7 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 2e4e1a65db..e7b2a5f363 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 9373ba78b7..745033befb 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.25.3 From nobody Wed May 1 20:24:33 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=1587477266; cv=none; d=zohomail.com; s=zohoarc; b=NmRL+c2Tp2JlSoTiVseo0swxW4aaOYQmD4ZnMUb1Q/Vgp+zCd2N44CCSElMlPqvSpFQ6mSJwJyPVrGVBBu7Kgh5Zvde93Il8jAyYadqGkcAldqvqB50VTqYFxPDfPWPFHN+i1C9Ai5dXkSAWv5cv59hwQWCjSj+RF2Sxp3vbQO0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477266; 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=05kticGKjZPEQxkbUp+gMCi8NyFceZuYFWExd5i1kx4=; b=WG86Xb3Fps//qCq5Y0MfWN81wHlmoPiezo2wC/Ap+w7NoPUpwEN0wrZUCgObEKSOEqvzyHtJq9jYKXuPcVPOJiEnsfkKxt0Z01hLK6UFnGI4G8AsDnYJgvb7AN8KqQZH0UZCRCi2Ktb4ikY3OETA17QvO7Qa+6byZf20gXFvm5k= 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 1587477266239877.8088233373733; Tue, 21 Apr 2020 06:54: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-495-juMa6x23N--Ab1-_m5Tz4w-1; Tue, 21 Apr 2020 09:54:21 -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 1A31E107ACC4; Tue, 21 Apr 2020 13:54:16 +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 DD75460C87; Tue, 21 Apr 2020 13:54:15 +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 8A7091819ACE; Tue, 21 Apr 2020 13:54:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDqoJ8003924 for ; Tue, 21 Apr 2020 09:52:50 -0400 Received: by smtp.corp.redhat.com (Postfix) id 990AEA18B1; Tue, 21 Apr 2020 13:52:50 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast03.extmail.prod.ext.phx2.redhat.com [10.5.110.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 922E4A18B4 for ; Tue, 21 Apr 2020 13:52:48 +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-mx01.redhat.com (Postfix) with ESMTPS id 963D21B2C981 for ; Tue, 21 Apr 2020 13:52:47 +0000 (UTC) Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-188-5pGDaGAkNOaZnPE2JukDWA-1; Tue, 21 Apr 2020 09:50:36 -0400 Received: by mail-wm1-f52.google.com with SMTP id 188so3653983wmc.2 for ; Tue, 21 Apr 2020 06:50:36 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477263; 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=05kticGKjZPEQxkbUp+gMCi8NyFceZuYFWExd5i1kx4=; b=R/VYDsUFwSkJfdpHvN9cTXTwbJKJTKqlvVYH4csIBr8YPA/sMw3on1R/LqnBlglJ4SBS4e aCp7w2gl0K87OCENygvlOZe3ed+OkdQgt48k1zoYEUL6mlQvP7yF83f55P5Y1Gvbp6Gqn7 UWp1N3Hl5xQVYceWGou4BcdxykLgnOo= X-MC-Unique: juMa6x23N--Ab1-_m5Tz4w-1 X-MC-Unique: 5pGDaGAkNOaZnPE2JukDWA-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=0RdD6RcjFohkq2IIpcmOXjvn7W7UFeAkd7ZmO2iWhnI=; b=g1SCDhujw7hT5QN/IWLoQx4LUlfOaQB4G+mC7wiXAvxzKWIbzlEu0FOLGdlvnvM5M9 VvIMs+uzIkRkpaHFpSe8VWc8mBkM8C4vEvZ4cw3DAfDkfVhdEsBArAUiJN0wXBEcXdcf yJ0keJoY+gWv7zZN8TOpxKFw3D3yqHx48pt48r9q80aGuzgka4id2BGhKLfdb1mH3F1n 4K4keitCTnmd4aK1hqJEKJp4dturkLNuBrSCNOQm1UyQE3VGB6WLjGmuQa8Btid9cVfP 59yKsT56Koyb2DiJvJBkGBUPq3tK+G45AQq6WhstVw/SznmJXiI5EVGm1hQYI2j/GqLU ATmw== X-Gm-Message-State: AGi0PuY6H2csEn/aaxuJ+vmPmwTT541ILQfZxq4QBNC8Se9vQq6libkF amEXqmFnAPRV49nCEnwP8QF2xSByhao= X-Google-Smtp-Source: APiQypJTUn6cRfN+lgE+kiufyxfjRxLN147PjEVf318E7eGH0qcv69IeG2Pgvx43TCgu2lwSbNTulQ== X-Received: by 2002:a7b:c5d8:: with SMTP id n24mr4935650wmk.158.1587477034384; Tue, 21 Apr 2020 06:50:34 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 25/40] datatypes: convert virStorageVol to GObject Date: Tue, 21 Apr 2020 15:49:06 +0200 Message-Id: <20200421134921.3717019-26-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDqoJ8003924 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 | 72 ++++++++++++++++++++++++------------ 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, 74 insertions(+), 53 deletions(-) diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 4c25c9a9f8..d4ea1df81d 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 a9a942b3a6..66d4f478ab 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 virDomainCheckpointDispose(GObject *obj); @@ -193,6 +191,24 @@ vir_storage_pool_class_init(virStoragePoolClass *klass) obj->finalize =3D virStoragePoolFinalize; } =20 +G_DEFINE_TYPE(virStorageVol, vir_storage_vol, G_TYPE_OBJECT); +static void virStorageVolDispose(GObject *obj); +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->dispose =3D virStorageVolDispose; + obj->finalize =3D virStorageVolFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -250,7 +266,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); - DECLARE_CLASS(virStorageVol); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -782,7 +797,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. */ @@ -790,18 +805,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); @@ -813,11 +827,7 @@ 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 @@ -825,16 +835,31 @@ virGetStorageVol(virConnectPtr conn, const char *pool= , const char *name, * virStorageVolDispose: * @obj: the storage volume to release * - * Unconditionally release all memory associated with a volume. - * The volume object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virStorageVolDispose(GObject *obj) +{ + virStorageVolPtr vol =3D VIR_STORAGE_VOL(obj); + + virObjectUnref(vol->conn); + vol->conn =3D NULL; + + G_OBJECT_CLASS(vir_storage_vol_parent_class)->dispose(obj); +} + +/** + * virStorageVolFinalize: + * @obj: the storage volume to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a volume. + * The volume object must not be used once this method returns. */ 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) @@ -843,7 +868,8 @@ virStorageVolDispose(void *obj) VIR_FREE(vol->key); 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 94009505bc..9e559ad1f8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1354,6 +1354,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; @@ -1378,7 +1379,6 @@ virGetStream; virNewConnectCloseCallbackData; virNodeDeviceClass; virSecretClass; -virStorageVolClass; virStreamClass; =20 =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index de65c730f7..07e137e2c9 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 2db763caa5..8c0f7eae44 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.25.3 From nobody Wed May 1 20:24:33 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=1587477069; cv=none; d=zohomail.com; s=zohoarc; b=YZ30scw0JmOMuqFmc46Z+bgtk/rVlRWk48waZzXzJIBViLhBw6XoP//GvYfOBPDm/kBQB47DknDephKQJtFKYczXZymStyuHaFCkEiQ6ia9mleKHmqE4DhFcZMfmww1/MCiaIj4Z3EUPcxg8s6t6z0zfaQEG7w3se17s/KI234M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477069; 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=2+1z+UkffQqSQ8RdacCVTf1dvRS86E15gHAUutrkJ0o=; b=Z1aJejUNHaVxSxa4gGCaHvzDwbGYxPSTKSbI5naSA882q5CQBUa0eUzYrqIsWEpdhSi+vWME75mba1LgCdom1hT7/RUs24a92zlCpc4YPSSjjB+5fk0N3icNLqJG+jW5MQ3YoAeNnjI+61bxZobOu53d+yQsaOFT4/fwmHa2nXE= 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 1587477069711927.1959074661029; Tue, 21 Apr 2020 06:51:09 -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-402-NW1ZTuDfP4mvOZyaf60pKA-1; Tue, 21 Apr 2020 09:51:04 -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 EDB4B8024CE; Tue, 21 Apr 2020 13:50:58 +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 C669A76E8E; Tue, 21 Apr 2020 13:50:58 +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 7ECDD941CF; Tue, 21 Apr 2020 13:50:58 +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 03LDofLN003498 for ; Tue, 21 Apr 2020 09:50:42 -0400 Received: by smtp.corp.redhat.com (Postfix) id C841B202A943; Tue, 21 Apr 2020 13:50:41 +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 C3E4B2024517 for ; Tue, 21 Apr 2020 13:50:41 +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 A52D386BCC7 for ; Tue, 21 Apr 2020 13:50:41 +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-2-C26TWD-oPei_HHyi8GvwGw-1; Tue, 21 Apr 2020 09:50:38 -0400 Received: by mail-wm1-f50.google.com with SMTP id g12so3762734wmh.3 for ; Tue, 21 Apr 2020 06:50:37 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477068; 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=2+1z+UkffQqSQ8RdacCVTf1dvRS86E15gHAUutrkJ0o=; b=WNttR9KWwk67DQ8zW6Uxl4U1GZ0v1Xv8GTtehjCMRIPLNtwpzCugq4EJHLVUmZ/dIVQhAw X7ng04LaRtR0dF7GxmIbnKJfvw0Rp7fusrtqROswXqMOSNpIK0o01p640t7Nh8g2Lqq2gt Ol/iDSwfObOv/H2iK9620YVRpE1a/Q4= X-MC-Unique: NW1ZTuDfP4mvOZyaf60pKA-1 X-MC-Unique: C26TWD-oPei_HHyi8GvwGw-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=mM4ji+t7JYPu7NDJetb1bEbCxYVUtFVFNmqSh6hyYq8=; b=GSqFgWiSwPkDincf4/5P7nIzTG67Tc4znEOQC9Zvti8ZfxSN3ndqeCwAo/OWU4xQOH TfcQaQVZCOKhrlX6f/2O8INm+I0vPHQgTqEf/nfdY87qFNr8Kv9txO/8Cjj7v+kW/He+ +fOQLK9XW3fZ7rQCuxUf4aCRuoaBCX/dWlOP/unmHwdSuxLzb7MJN9QuhFIPm+KK8MMc /rBvzNUnbyOJM93nAmvXj7eZ/KXZLPH24wRUBQQhJ+hL4lUWv1hYVBkCroJkdYz7Z+g/ /iqRunIjn0JgoffBjCagFvPV7fHCtQaIR0fYRVhoKl4NC8lGcYCtwrSpct/enPdtHxtE 2/jg== X-Gm-Message-State: AGi0Pua4HiyzhmYeEm3t5jeLnYTbKWY0ZbxWtVACwetRHAkQKtwaLiPe SNYpBWWdSvqtqNOZeoV6eCipT4tXBgk= X-Google-Smtp-Source: APiQypLZDrIQe//0rU2DrBbtTWo32t1xl7nT0mbcjmIVax878BrRMaosz5duMznaxZAcgdpqcPPTWQ== X-Received: by 2002:a05:600c:4096:: with SMTP id k22mr4608523wmh.99.1587477036191; Tue, 21 Apr 2020 06:50:36 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 26/40] datatypes: convert virNodeDevice to GObject Date: Tue, 21 Apr 2020 15:49:07 +0200 Message-Id: <20200421134921.3717019-27-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDofLN003498 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/conf/node_device_event.c | 11 +++--- src/conf/node_device_util.c | 4 +-- src/conf/virnodedeviceobj.c | 3 +- src/datatypes.c | 67 +++++++++++++++++++++++++----------- 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, 77 insertions(+), 63 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 66d4f478ab..f324a19ada 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 @@ -137,6 +135,24 @@ vir_network_port_class_init(virNetworkPortClass *klass) obj->finalize =3D virNetworkPortFinalize; } =20 +G_DEFINE_TYPE(virNodeDevice, vir_node_device, G_TYPE_OBJECT); +static void virNodeDeviceDispose(GObject *obj); +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->dispose =3D virNodeDeviceDispose; + obj->finalize =3D virNodeDeviceFinalize; +} + G_DEFINE_TYPE(virNWFilter, vir_nw_filter, G_TYPE_OBJECT); static void virNWFilterDispose(GObject *obj); static void virNWFilterFinalize(GObject *obj); @@ -263,7 +279,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); DECLARE_CLASS(virDomain); - DECLARE_CLASS(virNodeDevice); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); =20 @@ -879,32 +894,27 @@ 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 @@ -912,22 +922,37 @@ virGetNodeDevice(virConnectPtr conn, const char *name) * virNodeDeviceDispose: * @obj: the node device to release * - * Unconditionally release all memory associated with a device. - * The device object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virNodeDeviceDispose(GObject *obj) +{ + virNodeDevicePtr dev =3D VIR_NODE_DEVICE(obj); + + virObjectUnref(dev->conn); + dev->conn =3D NULL; + + G_OBJECT_CLASS(vir_node_device_parent_class)->dispose(obj); +} + +/** + * virNodeDeviceFinalize: + * @obj: the node device to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a device. + * The device object must not be used once this method returns. */ 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 9e559ad1f8..2112082277 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1351,6 +1351,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; @@ -1377,7 +1378,6 @@ virGetStoragePool; virGetStorageVol; virGetStream; virNewConnectCloseCallbackData; -virNodeDeviceClass; virSecretClass; virStreamClass; =20 diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 0fce6225d8..0e4d6c56fc 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 46851d063e..b35cca4dcc 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12957,7 +12957,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 @@ -13018,7 +13018,6 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); return ret; } @@ -13040,7 +13039,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; @@ -13078,7 +13077,6 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) virPCIDeviceFree(pci); cleanup: virNodeDeviceDefFree(def); - virObjectUnref(nodedev); virObjectUnref(nodeconn); return ret; } @@ -13094,7 +13092,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; @@ -13132,7 +13130,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 745033befb..0d7f352ae0 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 5b9a49d685..c4065eb00a 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.25.3 From nobody Wed May 1 20:24:33 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=1587477096; cv=none; d=zohomail.com; s=zohoarc; b=cepx/dQ30xoRbqRpvGNb8icPqEIPGlcZs/zgb3LxLHiT0RnbuFzkbpbM3ylaT/wYs3zQEzaO9nrEuebvd/ztCUqyghofOr7pno3ohsTlCgqHk5xtteoXrUDPVXxWLDyPBs8m3u9YdaS0MBuWVHXd4U+nocNIfqDboUOAdM/Fz5k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477096; 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=rxHipEyfpbnQuw08YEpXBqqZNPXwaJTH9NegLihdhaw=; b=RBejGsORTHrJhGHOQ6W0cVaGDScprBQyc7OEuYgDOTkwufHFTwyiuxEWQLeJWsoXkff6vGKwdanyG9+Vx1/dZNjiG+wdmyAD+7veOMTZSxWadM6GD95sz3lJrZsS9UslFEx6tSQX0c8w4BL3/Ug7ljHnJG8KEwMhzMcaWFAHUJU= 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 1587477096282177.9413994341386; Tue, 21 Apr 2020 06:51: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-335-cxlc0bO4NqSFa5AbOYTmHw-1; Tue, 21 Apr 2020 09:51:15 -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 A168C1088380; Tue, 21 Apr 2020 13:51:08 +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 730645C1B2; Tue, 21 Apr 2020 13:51: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 2441218033AF; Tue, 21 Apr 2020 13:51: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 03LDoiNv003528 for ; Tue, 21 Apr 2020 09:50:44 -0400 Received: by smtp.corp.redhat.com (Postfix) id C0741202A940; Tue, 21 Apr 2020 13:50:44 +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 BC3792024517 for ; Tue, 21 Apr 2020 13:50:44 +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 91D12101A55E for ; Tue, 21 Apr 2020 13:50:44 +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-191-HZzfz3GEOvCHZgwEcITTmg-1; Tue, 21 Apr 2020 09:50:39 -0400 Received: by mail-wr1-f50.google.com with SMTP id d17so16516526wrg.11 for ; Tue, 21 Apr 2020 06:50:39 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477095; 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=rxHipEyfpbnQuw08YEpXBqqZNPXwaJTH9NegLihdhaw=; b=cPgKMmrB3BVYfmvbc5g2wvX9k0bJw2BwFJHL8aSUGUj31vlW8NSR5LD5b6Senek78ZeTs2 Ri2RAGPe97squwAP70I4x+466ElaPnLWwLEKnen4Xr7oih2pNvQuw0z8omO/p3r2IR9vMx +T7o130JSW7jGV+hIeA3JRinPkbVaq8= X-MC-Unique: cxlc0bO4NqSFa5AbOYTmHw-1 X-MC-Unique: HZzfz3GEOvCHZgwEcITTmg-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=QgECBPaPTZPXPHI0UeinVFM9x0mOE+00DOlrqEw9Ecg=; b=Vl2k1Y79rPNe5roiqcrx5F5Jj+WpJH5e5tpxhCZBBGdG/7UG3qIPqMOcinykFOYmfn fZOMLWqGzRs1olog3NKuf3CYJy2VhHTgMlcddoY1mK9O57RsSvWmp97/n/KhAmhW/73v y2A1FP5oyBpCzk1CBKMh/lN42dY9JK1LLlSb9+LivK9Aezzx5X/WBIjH6iEFVSVSZF0p XSnZGGkSMV0XI/w6t6tNaM2oNNvhoxwDGFggOf2ejuKBFVgd9nmkvXgJy7dCEN7F1sZj fYWx7f9YFJ2JjX0Ecdm5EbJOTM1lHPzqVi2HxPED5eXmCcjktISEo0Y1RvdbjuQx66tB mKeg== X-Gm-Message-State: AGi0PubXzdWI2s/bp49aC2Z1J+Hd5JYKqX4QDSz9q7i8hvX7PRs/35qt 3Y0GtMmQXUIGFeIIWeJ1PBzGABLSotw= X-Google-Smtp-Source: APiQypIbyOnUqgRt0K4zRiApil3NkTrguAO3sqtKbDCKBEEJPSY7QEchI0vOhNh3uR9CCJHtl6XS4w== X-Received: by 2002:adf:c109:: with SMTP id r9mr24077000wre.265.1587477038211; Tue, 21 Apr 2020 06:50:38 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 27/40] datatypes: convert virSecret to GObject Date: Tue, 21 Apr 2020 15:49:08 +0200 Message-Id: <20200421134921.3717019-28-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoiNv003528 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/secret_event.c | 15 +++---- src/conf/virsecretobj.c | 2 +- src/datatypes.c | 68 ++++++++++++++++++++--------- 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, 73 insertions(+), 55 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 f324a19ada..0bb4cfbd29 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); @@ -189,6 +187,24 @@ 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 virSecretDispose(GObject *obj); +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->dispose =3D virSecretDispose; + obj->finalize =3D virSecretFinalize; +} + G_DEFINE_TYPE(virStoragePool, vir_storage_pool, G_TYPE_OBJECT); static void virStoragePoolDispose(GObject *obj); static void virStoragePoolFinalize(GObject *obj); @@ -279,7 +295,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); @@ -962,7 +977,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. */ @@ -970,16 +985,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; @@ -987,34 +1001,46 @@ 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: * @obj: the secret to release * - * Unconditionally release all memory associated with a secret. - * The secret object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virSecretDispose(GObject *obj) +{ + virSecretPtr secret =3D VIR_SECRET(obj); + + virObjectUnref(secret->conn); + secret->conn =3D NULL; + + G_OBJECT_CLASS(vir_secret_parent_class)->dispose(obj); +} + +/** + * virSecretFinalize: + * @obj: the secret to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a secret. + * The secret object must not be used once this method returns. */ 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); VIR_DEBUG("release secret %p %s", secret, uuidstr); =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 2112082277..915979bb42 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1354,6 +1354,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; @@ -1378,7 +1379,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 e7b2a5f363..fb1f1bd469 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 0d7f352ae0..7801e5e990 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.25.3 From nobody Wed May 1 20:24:33 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=1587477074; cv=none; d=zohomail.com; s=zohoarc; b=UBYDuAXHDi/5Pc4/L74RbrYxCMjkF7T7FEGE0FNCwdkG6VNtaVd2Gev29gGoOS+nXbywE4+M/CN8lw7VDGiXZMKoGHZE4pKHkY0kewocDvAyEFblrRq4CTExHhHeF8/tT98feZ7vSwksD/kHVh4YyCTHfz2Tzbdw+GhGc8chGjc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477074; 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=rUdMoCFsBedyaS/1HzZgSNQxFmhLLHwMaX3UQtnRlyo=; b=SCJ08Yx4YeQib6i7FkfQgtjXt0MIoAIW4YqNJOxRd+oFzp/UV/YmeZKNgAMjllvqu2+MGQ6d12F23ocvVjkga99m6xtgWPTgeqnK7ZAsC4berJGksG2aJEEiCcVyhdeAffZlDi6QYx0Qn5LUfgWQU6sHT5atjAFRfo1VJIFNXYA= 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 1587477074979795.6580970909877; Tue, 21 Apr 2020 06:51: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-92-OuMaAu6UO9-jkyKyBYJFyA-1; Tue, 21 Apr 2020 09:51:10 -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 9A9C7107ACC9; Tue, 21 Apr 2020 13:51:04 +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 62EA060F9F; Tue, 21 Apr 2020 13:51: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 E8CBE18033C2; Tue, 21 Apr 2020 13:51: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 03LDoiVu003523 for ; Tue, 21 Apr 2020 09:50:44 -0400 Received: by smtp.corp.redhat.com (Postfix) id 56F3220292BF; Tue, 21 Apr 2020 13:50:44 +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 52A752093CE5 for ; Tue, 21 Apr 2020 13:50:44 +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 E91708FF686 for ; Tue, 21 Apr 2020 13:50:43 +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-65-WsQeY1GwMzGEP2x3VP8K8A-1; Tue, 21 Apr 2020 09:50:41 -0400 Received: by mail-wr1-f65.google.com with SMTP id u13so16562688wrp.3 for ; Tue, 21 Apr 2020 06:50:41 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477073; 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=rUdMoCFsBedyaS/1HzZgSNQxFmhLLHwMaX3UQtnRlyo=; b=WcSAW6jwV4WGMYOaKLQlevvvM0hImdRLbqx00YkwXMgVhFVYaFo4qUAfOO54/bNtTfQcRA QBSXF4aIJkCZUtBTIsuLXGUdce7rHVZxJ6J2z+NMjkDyW4X/YTC5Hb4PEkagYFzdER0rPG i9Wyh7LBkhEqFD+VaZ6PFbYhI+fdOZI= X-MC-Unique: OuMaAu6UO9-jkyKyBYJFyA-1 X-MC-Unique: WsQeY1GwMzGEP2x3VP8K8A-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=eD3XXG9Pf34+JfI57x6WVK+JqfOuIKu8P5f7LazjK3Q=; b=ExzrMzd87xO8BGlFhIAXHhxchOsrG67LwjjOdiDkNMHGAuvYcO98McroH8iL/uFBkR v+jgVGBh6fH3Qd8SdHnsdWWI9C3e9KmS+fo9A/R+if3qM/VOD/JvyYpE0BGcNOZhpZHV BvrR4M93tYjPuRWmBeSlXiliCVFQn6XFnQwXF4Guk4bO3pvtoh7l0Hzu+6MsJz6RWWzF lNENOaglPVXnJsPrL5Rqr9x5dbbo/mdqRROE0Oab/LIUnFkMTZ65ngaZtCj3yb+GaQLW iD10926pokzhhiRdxV9I3cZp/wqnHI76EgmJXcFvDRsACHExPS7H3suUNafyI0gTzrsA DkDA== X-Gm-Message-State: AGi0PuYXuH5uO4GKrO2vC8mQqhAUL8iXzyk2zbMTBgVb4S3SE7hhqM0I Q+gGM5DyEvvz6043VwBwXKdmUIjIMgI= X-Google-Smtp-Source: APiQypLYMCM8eamQrEwrFSVQejYfxFd2+ESSRGEelq0m+6Yr5dG0Z5Ew90JzzY+NPKJUxaXCplvFAw== X-Received: by 2002:adf:9d83:: with SMTP id p3mr25115050wre.142.1587477040094; Tue, 21 Apr 2020 06:50:40 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 28/40] datatypes: convert virStream to GObject Date: Tue, 21 Apr 2020 15:49:09 +0200 Message-Id: <20200421134921.3717019-29-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoiVu003523 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/virchrdev.c | 4 +-- src/datatypes.c | 56 ++++++++++++++++++++++------- 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, 68 insertions(+), 39 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 0bb4cfbd29..5d8752334d 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 virDomainCheckpointDispose(GObject *obj); @@ -241,6 +239,24 @@ vir_storage_vol_class_init(virStorageVolClass *klass) obj->finalize =3D virStorageVolFinalize; } =20 +G_DEFINE_TYPE(virStream, vir_stream, G_TYPE_OBJECT); +static void virStreamDispose(GObject *obj); +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->dispose =3D virStreamDispose; + obj->finalize =3D virStreamFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -295,7 +311,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); @@ -1049,7 +1064,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. */ @@ -1061,8 +1076,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 @@ -1073,21 +1087,37 @@ virGetStream(virConnectPtr conn) * virStreamDispose: * @obj: the stream to release * - * Unconditionally release all memory associated with a stream. - * The stream object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virStreamDispose(GObject *obj) +{ + virStreamPtr st =3D VIR_STREAM(obj); + + virObjectUnref(st->conn); + st->conn =3D NULL; + + G_OBJECT_CLASS(vir_stream_parent_class)->dispose(obj); +} + +/** + * virStreamFinalize: + * @obj: the stream to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a stream. + * The stream object must not be used once this method returns. */ 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 915979bb42..1514db8cb9 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1357,6 +1357,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; @@ -1379,7 +1380,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 07e137e2c9..13ff06f5c7 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4000,7 +4000,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= , " @@ -4109,7 +4109,6 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, ret =3D -1; } =20 - virObjectUnref(st); =20 virErrorRestore(&orig_err); VIR_FREE(uri_out); @@ -4153,7 +4152,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; @@ -4446,7 +4445,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 fb1f1bd469..c5eca3bc0c 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 7801e5e990..58ae7528a8 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.25.3 From nobody Wed May 1 20:24:33 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=1587477085; cv=none; d=zohomail.com; s=zohoarc; b=f1mYafDi9D37bt1dWDamDXlNS1W5GW5lF+CAOTBh8ae2CmD3ZgenMBQQPIX6C1BaoC+vOklm/Tt7ptvbIN/zZnIzR+QnUO9wej2ZyFiKyC9c/LjuhE/MBt2tcJkuWntg3/MCpOZG8EDIkFIwIuFdBzg88CSD3FleOurj6eQlTFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477085; 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=o/IP2uDwksLG2WKAIdmiz4mbf2gAhW0RUzvRtWhngBI=; b=ZBVP7161DpLoI7VBgnKTligwdW8e9d9yjcCC86Heq9c6mxv3lJvbZrEPfWsS79d0a4MCBYhBQHO/odkaMO7x/Aaws0rHsQLmHvhcdobpe+2Ni9Asf7a8ql1FsOPomxFEDrWNevsUfMxdGeP1VPqnS6SaSHb90FhITzrOHKoQBHU= 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 1587477085590751.9120187648696; Tue, 21 Apr 2020 06:51:25 -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-473-ZJRHrYiqPAy7C9nlk84ynw-1; Tue, 21 Apr 2020 09:51:21 -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 8288B8024DA; Tue, 21 Apr 2020 13:51:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4BF755C1B2; Tue, 21 Apr 2020 13:51:13 +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 CB38C1802030; Tue, 21 Apr 2020 13:51:12 +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 03LDoojh003577 for ; Tue, 21 Apr 2020 09:50:50 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8B1012166B29; Tue, 21 Apr 2020 13:50:50 +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 858762166B27 for ; Tue, 21 Apr 2020 13:50:47 +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 6E1F98FF67D for ; Tue, 21 Apr 2020 13:50:47 +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-220-OXJUz6kVOO-3etSttlbhrA-1; Tue, 21 Apr 2020 09:50:44 -0400 Received: by mail-wr1-f67.google.com with SMTP id u13so16562882wrp.3 for ; Tue, 21 Apr 2020 06:50:44 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477084; 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=o/IP2uDwksLG2WKAIdmiz4mbf2gAhW0RUzvRtWhngBI=; b=WKmFZb7hVlOS7AgHc2sxm2kkKgfvUeyKdDc7nRqCTQMA5BVyhMjeB/rsB1jPxJ2AfYpRMm zMB39GF+pJDRBVhK4jTBVx6z8Pzcv1VL6iDE5ulv1H7HBJFm8x3BMwth93Wh1cHoVzRaL5 N0oQsmI5EKky6HRDB/kOJlWoH9y9x2g= X-MC-Unique: ZJRHrYiqPAy7C9nlk84ynw-1 X-MC-Unique: OXJUz6kVOO-3etSttlbhrA-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=3boJCAKicz9gdqS7CTKqHxBxVGf/fJXi9Gewv+npTrY=; b=Z+J4uNMhRHfUsGyjiaryz58rDpjnhz5nN7c6e8VQiun0LmhdJBOHYRKgoV/C94eS3z tydjFjRR1BnwoS7y2OyoYNlCNne7MqlHX3PelJX8ExUwtt9zuwRWasvQABVisxLOuGrz ETrWO6vq5NEiuKDtUSZWwZOc2j7F7GC4uP7wTGnZPwdO5CKDmgybf/qlvJF3IwhvfqI8 qpaqjZ61Sl5d8Ij71Cfe2M5N8Z0j1hCdZ1Gxa1enmriGphPk6X2udcxqP4w21S4+y+ld i1+EiNUW3VUSc9d4wYbZQ2AYFxAXDN2JxNor5gS/zAPpKez1QlYy6o/aWyJYzU3mxrE4 ceAQ== X-Gm-Message-State: AGi0PuaMWrQe7676gbWdYHkdEkdIKxhqXKitQZFQcy9A0n4McHxRU5Ek dR7oKmqX0kuwm7XiXFYDdI1hCpnQ0xw= X-Google-Smtp-Source: APiQypLaDwx8kDA8vrXPBoICXVtJgDHUnv6/bfnQniaA6dhbgWumzlqeWbCAR3OLOTz2Eefiem5/og== X-Received: by 2002:adf:8b1d:: with SMTP id n29mr23741817wra.196.1587477041859; Tue, 21 Apr 2020 06:50:41 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 29/40] datatypes: convert virDomain to GObject Date: Tue, 21 Apr 2020 15:49:10 +0200 Message-Id: <20200421134921.3717019-30-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoojh003577 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 | 80 ++++++++++------ 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, 183 insertions(+), 279 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 5d8752334d..e72e839562 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -35,11 +35,27 @@ 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 virDomainDispose(GObject *obj); +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->dispose =3D virDomainDispose; + obj->finalize =3D virDomainFinalize; +} =20 G_DEFINE_TYPE(virDomainCheckpoint, vir_domain_checkpoint, G_TYPE_OBJECT); static void virDomainCheckpointDispose(GObject *obj); @@ -310,7 +326,6 @@ virDataTypesOnceInit(void) =20 DECLARE_CLASS_LOCKABLE(virConnect); DECLARE_CLASS_LOCKABLE(virConnectCloseCallbackData); - DECLARE_CLASS(virDomain); =20 DECLARE_CLASS_LOCKABLE(virAdmConnect); DECLARE_CLASS_LOCKABLE(virAdmConnectCloseCallbackData); @@ -475,7 +490,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. */ @@ -485,17 +500,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 @@ -503,34 +517,46 @@ 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: * @obj: the domain to release * - * Unconditionally release all memory associated with a domain. - * The domain object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virDomainDispose(GObject *obj) +{ + virDomainPtr domain =3D VIR_DOMAIN(obj); + + virObjectUnref(domain->conn); + domain->conn =3D NULL; + + G_OBJECT_CLASS(vir_domain_parent_class)->dispose(obj); +} + +/** + * virDomainFinalize: + * @obj: the domain to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a domain. + * The domain object must not be used once this method returns. */ 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); VIR_DEBUG("release domain %p %s %s", domain, domain->name, uuidstr); =20 VIR_FREE(domain->name); - virObjectUnref(domain->conn); + + G_OBJECT_CLASS(vir_domain_parent_class)->finalize(obj); } =20 =20 @@ -1296,7 +1322,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); } @@ -1314,8 +1340,7 @@ virDomainCheckpointDispose(GObject *obj) { virDomainCheckpointPtr checkpoint =3D VIR_DOMAIN_CHECKPOINT(obj); =20 - virObjectUnref(checkpoint->domain); - checkpoint->domain =3D NULL; + g_clear_object(&checkpoint->domain); =20 G_OBJECT_CLASS(vir_domain_checkpoint_parent_class)->dispose(obj); } @@ -1363,7 +1388,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); } @@ -1381,8 +1406,7 @@ virDomainSnapshotDispose(GObject *obj) { virDomainSnapshotPtr snapshot =3D VIR_DOMAIN_SNAPSHOT(obj); =20 - virObjectUnref(snapshot->domain); - snapshot->domain =3D NULL; + g_clear_object(&snapshot->domain); =20 G_OBJECT_CLASS(vir_domain_snapshot_parent_class)->dispose(obj); } 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 1514db8cb9..d96331e633 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1347,6 +1347,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; @@ -1364,7 +1365,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 b35cca4dcc..c05803f08a 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 13ff06f5c7..ab4ae8e150 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3993,7 +3993,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; @@ -4103,7 +4103,6 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr= iver, =20 cleanup: if (ddomain) { - virObjectUnref(ddomain); ret =3D 0; } else { ret =3D -1; @@ -4142,7 +4141,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; @@ -4439,7 +4438,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 c5eca3bc0c..29944bdfa3 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 58ae7528a8..f00083e0c3 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.25.3 From nobody Wed May 1 20:24:33 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=1587477078; cv=none; d=zohomail.com; s=zohoarc; b=j67DaZYppvFLnm8oR3BQVldkid4Ua1AvZe32XPEkNEw9dVph88S7Bcu6NkFf3cU6zvVeZL1lUpjICzX++rzTeUG90AlSygBF0zssAe/8p9R+3x4bIl6wcvhSe0y5HHEzEU0l7EB+eE2bHDK2f7ZMY5Xl2TZ4YeLO5CYHja70q1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477078; 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=2Kv97dmHhNPBzjf3enrSacPAIZyoo71XA+qAc1/4DUY=; b=D2/WwMqb7IpkGDxfPb1JSmoA7sGbWGQqL672DsV78McX2dteMbcuyY/OWdyH2m68WpdnO9SyYDzBElCnEiHKv5leISGnGJt9qx71MMXX4nYq/rm5w8kj27/QMk/9GAQLgUwvs1HUE2MV3jTfpCjrHELwU+MxIZhidJwvBZS/DDo= 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 158747707825739.55162559080247; Tue, 21 Apr 2020 06:51:18 -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-361-oBYp4Mc8MMC70JASkUx0HA-1; Tue, 21 Apr 2020 09:51:14 -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 192498017F3; Tue, 21 Apr 2020 13:51:09 +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 DB1875C1B2; Tue, 21 Apr 2020 13:51: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 9203E941D8; Tue, 21 Apr 2020 13:51:08 +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 03LDooRV003576 for ; Tue, 21 Apr 2020 09:50:50 -0400 Received: by smtp.corp.redhat.com (Postfix) id 89B6B2166B2A; Tue, 21 Apr 2020 13:50:50 +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 858C22166B29 for ; Tue, 21 Apr 2020 13:50: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 9A85D8FF67A for ; Tue, 21 Apr 2020 13:50: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-153-vV8XuI6-OcCWHSpC-pJtOA-1; Tue, 21 Apr 2020 09:50:44 -0400 Received: by mail-wr1-f53.google.com with SMTP id i10so16527570wrv.10 for ; Tue, 21 Apr 2020 06:50:44 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477077; 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=2Kv97dmHhNPBzjf3enrSacPAIZyoo71XA+qAc1/4DUY=; b=Iwyx4yzP2Bv+j5X2Bowv6ZW6rbNtxDH0puTk56E+kvMbPenIF/ubBvM+Uu2aeMYi1NU0OA csIkN385edgD0NuWyc2WUCYWA4NvVbu3F6SrHl7ivbckpGk/lFC2bmUNJ+qiVYIUEk8FxS IIs0hhGPPQACcK/famPYzCGm57SPMfM= X-MC-Unique: oBYp4Mc8MMC70JASkUx0HA-1 X-MC-Unique: vV8XuI6-OcCWHSpC-pJtOA-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=9JxUYCQvW+BiwaDaEk2GsS4B+D4JDzTD2/NmoNDKz18=; b=uPWJnXX+x7o2SgW6b2jwoRDz5wmVxjBLurxv15AbFmxGlGDChwqj3W8L5OUk5geYwv 8wPTRNPyp0cFCuY0+QXhRgGhlvt5hcFTGYOENiMwrtKEjNggB07gGwriSTK4fL/EUgXf uGTkXoPZd1Alx4cAGgS+obiHq0ufx8UCY/8T7+AlTC2Hb8BuXY9PMacTbu9JYDSPgEr+ rVNx/H3cRPizSpajVmRumYpMubA3ud35ez124fp60wSoSs/Ne1R5pyeg9QPU/YVoEF12 YU0NSclc8zSkTaxkHzPh4mhckZqllHreGIhU+5j1a+EvOP/F8eMVkDv056iMLT1G3Wyd LGcA== X-Gm-Message-State: AGi0PubeuRI6IMMMdQWens52z41njk0qtRDlPxZAR7wKbHSJu/c7fUAb H84GIFaOGxXcdULC/p3SQwhdj8+KUMc= X-Google-Smtp-Source: APiQypL1L9dQ1kjK/D5dPue5PTLuuo2MMnXAw790OS0f+jhIgSLuGf4EVB/AibuTI9KVqkbIY0kXKg== X-Received: by 2002:adf:91e3:: with SMTP id 90mr24347760wri.206.1587477043383; Tue, 21 Apr 2020 06:50:43 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 30/40] rpc: gendispatch: use g_autoptr where possible Date: Tue, 21 Apr 2020 15:49:11 +0200 Message-Id: <20200421134921.3717019-31-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDooRV003576 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/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.25.3 From nobody Wed May 1 20:24:33 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=1587477066; cv=none; d=zohomail.com; s=zohoarc; b=Vllr6oXQI8W3Z+V2kcwUYvSj4rb7fHcHl1q+84Iia+xl+Qjg5K4W1Z36VGr5YsFDiO9zgAPB5gkxqFD58zoCzN0Wjo1PTcmunrHx3Jsw0kSzE5mfHFdRCfcN8TJS50OOj10oRp4RYzeBxPjVLBLK7JcYBdTR9G0wgXqqN2IZbTU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477066; 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=LXDKlbY8HZOqrZdGyrUyVgA/swKs9a6Rg0x5PGpSKms=; b=UqT/Lwow9sgZxzknjXpB4Usk0k108+bDJOZ0XxQpa7tnWtD0pjr02zGs43K7DKyHKzRaX6vdJi369t0ZYqmcDCTbb0wNB8rDAAirBxHgta7aAiq1iGsoCOs1Sd4olQsHjI0PAa6JTQhvxVk/PNwITadF/3NSR4169hDQocg5gjw= 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 1587477066419551.8405059534733; Tue, 21 Apr 2020 06:51:06 -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-357-FBrioXFfP-uyCYlX-QjiWQ-1; Tue, 21 Apr 2020 09:51:01 -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 4FD9E1085935; Tue, 21 Apr 2020 13:50:52 +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 1FCFDA18B1; Tue, 21 Apr 2020 13:50:52 +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 C04F3941C8; Tue, 21 Apr 2020 13:50:51 +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 03LDomYD003552 for ; Tue, 21 Apr 2020 09:50:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id B8DB81C0EF2; Tue, 21 Apr 2020 13:50:48 +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 B51C51C0EF5 for ; Tue, 21 Apr 2020 13:50:48 +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 9C2DF185A78E for ; Tue, 21 Apr 2020 13:50:48 +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-242-UAF4h03XN6yRf3WEMtppNw-1; Tue, 21 Apr 2020 09:50:46 -0400 Received: by mail-wm1-f43.google.com with SMTP id y24so3758128wma.4 for ; Tue, 21 Apr 2020 06:50:46 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477065; 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=LXDKlbY8HZOqrZdGyrUyVgA/swKs9a6Rg0x5PGpSKms=; b=FHL6kD2dnYlR4WbmOsPOOBXklD3pe5pJv6GK8ESm4D90xrwu5TT9Y4bsfvD1uY7KD0SQRH maQ7TSVfkPzPad0kvtBUbZJvYz3H0QedaFn3e2j2/6UiOyV9NKOb1IQMSZfS0QV0oJPA3X 0FROVaD4iCJ/aVEO+ZeOskKL1gsfDAk= X-MC-Unique: FBrioXFfP-uyCYlX-QjiWQ-1 X-MC-Unique: UAF4h03XN6yRf3WEMtppNw-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=3Jbkr19Oj3IJS1kxDUvF3EPXPyvZgwaVCMgcFtdrRdc=; b=NgY3mqeNtc30CzPiHGrPQuPqRpDLVtUwXTSlPj8tk2a7pgGh0F/Kd77ql5OA1iAqsM nwdF1jys1/gfWlmdMQv/xwV3uUneW/yJJdU8hF1kaspsszjPYLxL0FcJUimRbvVgrzRO krhxUtQ/owBVOltiLDMk74wuBXm/nxgYIeDEVnwaTh2dlPWEPVi3u6wSBljRt9Uu6KXp RGeFKkyAJ8gldZ1GZQsAOrXnDLy/CugvuCsLn4TtD5ydiwjLFT45OvLUsl6keZ11UDEU nFU15/xodFTFXkdREsRCdfWZltsRDFQm1P8g4mKQyvJv2mXvh799dRVnbt6puAmcXpoz eV6Q== X-Gm-Message-State: AGi0PuZwcOZ7KxuQpJiax0Z+R1odTikAt6YrUFfj7Ck26XPppmiaX0ob aIwfhxf/tfJclhpY/0eyBkECrzsf2ss= X-Google-Smtp-Source: APiQypJy3KqVHzjsuDX2013LElYEzKwRpTHWey3vAYJux8n2WxKrU4+5ELg9poAnHvdhLTdCSIh8dg== X-Received: by 2002:a1c:40c4:: with SMTP id n187mr4864191wma.28.1587477044859; Tue, 21 Apr 2020 06:50:44 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 31/40] conf: convert virNetworkXMLOption to GObject Date: Tue, 21 Apr 2020 15:49:12 +0200 Message-Id: <20200421134921.3717019-32-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDomYD003552 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/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 819b645df7..39330124a3 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -70,35 +70,23 @@ VIR_ENUM_IMPL(virNetworkTaint, "hook-script", ); =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 db7243eef5..e492ca9c6f 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 728d432c4c..646d567974 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -889,7 +889,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 ec679e72ee..b881e03c3b 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.25.3 From nobody Wed May 1 20:24:33 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=1587477069; cv=none; d=zohomail.com; s=zohoarc; b=JldS1la2BfJPt22CI7OIM7si/CV6hx4pk5s3rMrOFBBt6IkaAkupWNoVXM/aJdNYkgQzwBxy6/BosIaVjwBQZBxUq+mtGh/xtPR0XCMhU0oTKhmEKarSdPZfRqtt38aoaOkPR+Rpyztb+vFc/CcNNB+xjhyLcYA+eX2UjtRdU8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477069; 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=/RNqvnDsrz+A60bk68ZUhOod1PeHWxAdez0camg+ZIw=; b=mQyLb36tLxgsOwrPa20CrYMowebrBupN9hW6+93W5tcKv1gK4mcDh6/tzWG/ICt+AzzQUBDCeUQQEp4Uo0eqeH/ehv1YX1opsyhrJ/KBcW7aK29Ib1Awlx3LVwARh87bEPbrkdsUHdviNZC0W0P/BYc8gNtxz/rgMW9mapEN0jw= 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 1587477069433584.3279575100136; Tue, 21 Apr 2020 06:51:09 -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-17-HYeZ1h76M-udY21R-r7Xzg-1; Tue, 21 Apr 2020 09:51: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 4FC38800D53; Tue, 21 Apr 2020 13:50: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 223C51B462; Tue, 21 Apr 2020 13:50: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 D07C4941CD; Tue, 21 Apr 2020 13:50:55 +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 03LDopGo003586 for ; Tue, 21 Apr 2020 09:50:51 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4625A1C0EF3; Tue, 21 Apr 2020 13:50:51 +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 421501C0EED for ; Tue, 21 Apr 2020 13:50:51 +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 1781E800298 for ; Tue, 21 Apr 2020 13:50:51 +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-403-GkmbYFE5P227LjjZi3WdgA-1; Tue, 21 Apr 2020 09:50:48 -0400 Received: by mail-wm1-f67.google.com with SMTP id e26so3633415wmk.5 for ; Tue, 21 Apr 2020 06:50:48 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477068; 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=/RNqvnDsrz+A60bk68ZUhOod1PeHWxAdez0camg+ZIw=; b=Ycga9ixHqQN0DYBWnyq5Cr0OLEiqw4Hc7Q95eAimN9TQBMDXRgQVzSA99BdYzTZnwf+5rf ODYEJVTJ+CjMJsfjq4GQMhkbaqXIpR+2Tf65luBB436Z7b2O8ZNC03LaRBn188mBW0HGvZ B8WB1EQHlQKbni+EYzc7b9lFy/lT4wM= X-MC-Unique: HYeZ1h76M-udY21R-r7Xzg-1 X-MC-Unique: GkmbYFE5P227LjjZi3WdgA-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=G7sJACNkiSyNXs5nYh/aEeSD3BOUVnUtMLdfuSVmj/A=; b=Bi3+Br944X4GIhObAtuyyShYK2gNy+gsU1Ap1rua3Ljl2jAxNVc100+dwwReWskYtE rdS5UL3xygcPRppuWHLI0pXJtWdjKN0G2lGSfLEXXnn3YPZYyeLpjqPb0fjLF9mPVHNv wlYzJp0wakQCqut3iv6/hZLcVgbTW9/cMO/NBr9Zutva+PexrB6wKTU9WDDxR3Gk+lXd tn4tN5EFfCCkqySvRb2O/A15VZ86bDOEuTJp/orVOUjODR671ve5HJFHM6F97hDk3lG/ PbxKkGYlABXjZvhP1nlXa5iUJQoIn+O/vIbvBPA9CXY8VtQwSzSjyLzBoRYIeLQBdCAT Ls0A== X-Gm-Message-State: AGi0PuZIJqSunSj5KXhBA2LqyGCf+BKRcOPE6IJ+/Kj4AI5vw9HusIOu Gz9LC9AlBsFksiyGCbNdRlqI1FeLaRk= X-Google-Smtp-Source: APiQypLryJE8kziAp5/lBND8b4yhS+AhJqnq6kMtOhga/n7/hv6H/4Vgo7tfn0ekmSL0Vpq6xfuZiQ== X-Received: by 2002:a7b:c5d8:: with SMTP id n24mr4936435wmk.158.1587477046731; Tue, 21 Apr 2020 06:50:46 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 32/40] lxc: convert virLXCDriverConfig to GObject Date: Tue, 21 Apr 2020 15:49:13 +0200 Message-Id: <20200421134921.3717019-33-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDopGo003586 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 09a2721ca3..288d394989 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; } @@ -1582,7 +1576,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; @@ -1594,7 +1588,6 @@ lxcStateReload(void) cfg->autostartDir, false, lxc_driver->xmlopt, lxcNotifyLoadDomain, lxc_driver); - virObjectUnref(cfg); return 0; } =20 @@ -1618,7 +1611,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 @@ -1799,7 +1792,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); @@ -1912,7 +1905,6 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom, cleanup: virDomainDefFree(persistentDefCopy); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2237,7 +2229,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 | @@ -2302,7 +2294,6 @@ lxcDomainSetBlkioParameters(virDomainPtr dom, =20 cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2461,7 +2452,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; @@ -2527,7 +2518,6 @@ static int lxcDomainSetAutostart(virDomainPtr dom, VIR_FREE(configFile); VIR_FREE(autostartLink); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2623,7 +2613,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; @@ -2660,7 +2650,6 @@ static int lxcDomainSuspend(virDomainPtr dom) cleanup: virObjectEventStateQueue(driver->domainEventState, event); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -2672,7 +2661,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; @@ -2717,7 +2706,6 @@ static int lxcDomainResume(virDomainPtr dom) cleanup: virObjectEventStateQueue(driver->domainEventState, event); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4295,7 +4283,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); @@ -4382,7 +4370,6 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr do= m, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4404,7 +4391,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); @@ -4454,7 +4441,6 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr do= m, virDomainDefFree(vmdef); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4469,7 +4455,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); @@ -4550,7 +4536,6 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr do= m, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } =20 @@ -4823,7 +4808,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 | @@ -4854,7 +4839,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.25.3 From nobody Wed May 1 20:24:33 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=1587477089; cv=none; d=zohomail.com; s=zohoarc; b=HQUhPVX/o0mJ1jRx+D4m2dleg20fbaSrh4qiV9oQNRNiYGBSW6gNNh8t3Df8C5WOmYkyerLFu/RTRonalnEP3cXq0n8gx0dLGFLzTdlaYIkjDw/r9CmwKBp9a+MBh4YZ83aF2LtehSRQKnpRVLRvUZ0GhZaVdUCB07wju4cWoJY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477089; 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=7sH/x/Pr9bcy6ynGKjtyEIsQYb3+FShpSnPYnk9KRHk=; b=GwbpCs2zdjCVKg8f8C+JBUU7K1YXrd3meoKQcslqqjtiTM1ZSSRp2lP5c3thHsY/l9VYSubHUqEcOucyANhb5SLPxdx1bRMqKWsIfVNLxVnVZAaABk7Ka0OX583YJnFUqLEKAJexZkJsJ5W76SxGr29/MJtCdNoIePSHlMWCxLk= 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 1587477089203523.7519267087991; Tue, 21 Apr 2020 06:51: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-179-8wLyjaa-O36fwfZfxwp-ng-1; Tue, 21 Apr 2020 09:51:25 -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 A849A8017F3; Tue, 21 Apr 2020 13:51: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 742BB10027A9; Tue, 21 Apr 2020 13:51: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 1875718184AE; Tue, 21 Apr 2020 13:51:17 +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 03LDotYU003622 for ; Tue, 21 Apr 2020 09:50:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 52B1A2093CE6; Tue, 21 Apr 2020 13:50:55 +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 4C7132024517 for ; Tue, 21 Apr 2020 13:50:52 +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 C84ED8FF67E for ; Tue, 21 Apr 2020 13:50:52 +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-45-Jtggp0E-Mh2uleHw0_Ilzg-1; Tue, 21 Apr 2020 09:50:50 -0400 Received: by mail-wr1-f50.google.com with SMTP id s10so7414792wrr.0 for ; Tue, 21 Apr 2020 06:50:50 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477087; 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=7sH/x/Pr9bcy6ynGKjtyEIsQYb3+FShpSnPYnk9KRHk=; b=dYfeRmhry1rGb9bU4oBkIAmjZ7qrAl+IHg//+OejWNxM42wTwpp6iX0k7arROidm/79U+d X7ZrErFKYMeDDUDrLxJrTyzcBrIBX/4tIYXrmYmje6F5pzye05vygAC7sV9bXVeKdcLY6F 9/9xRGGxzECGTuUpCsm+l76DafsS2UA= X-MC-Unique: 8wLyjaa-O36fwfZfxwp-ng-1 X-MC-Unique: Jtggp0E-Mh2uleHw0_Ilzg-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=GSIj7aE3LGUBV9aQ/cdaxRrVDePNMeb0hKlmE5OZyd4=; b=FcPmK3MTk2kXs7T3cJF0J7rKT6b5CY6wX79JcrLXEvRO/yJRUUSQnISKoxJNPjLvTr 0fpKELz6XwBYFMcHG9yc05JA0/UiUCagPRnBz3sbGQmIKYm8Vrj4vy3Nt3D9oY+S/Tpq ktk33ERGhMQAam8HIBhrldp+7QadGuRcATcbp0nS61+SuxG31lLTxrIgzyOp/d05db3z 6Y+0zSKBF8BKvHpq7o6EdLF448lU6xYPcU1kj9dRxMOIolEXJrDxaBk2NgkieurYWu8L i/OfNIuw6gmDDjZ4q+pGhCJg7wt5shAFnG2yucp3JfVjTB/cvf3zCoLW4Vy1YL+RKVz2 4kyA== X-Gm-Message-State: AGi0PuYKxj8NklTfBoQHj+n88NGp8NWVyl2a0zaBhueJIi1pu+XWnigB kvm7lHdOrLnrzTmcIO5L8DZMVKNymNY= X-Google-Smtp-Source: APiQypJRSkKO+do0bzHY7nZoQYojIldr4dGe2zig7Alkk3NaAkkBqXkbMQfGBgIO85Tf6Jt5y3Lv5w== X-Received: by 2002:adf:dbce:: with SMTP id e14mr22712722wrj.337.1587477048130; Tue, 21 Apr 2020 06:50:48 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 33/40] libxl: convert libxlDriverConfig to GObject Date: Tue, 21 Apr 2020 15:49:14 +0200 Message-Id: <20200421134921.3717019-34-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDotYU003622 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/libxl/libxl_conf.c | 62 ++++++++------ 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, 107 insertions(+), 152 deletions(-) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index be37e0835d..9ea4e1c941 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -52,25 +52,40 @@ 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 libxlDriverConfigDispose(GObject *obj); +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->dispose =3D libxlDriverConfigDispose; + obj->finalize =3D libxlDriverConfigFinalize; +} =20 static void -libxlDriverConfigDispose(void *obj) +libxlDriverConfigDispose(GObject *obj) { - libxlDriverConfigPtr cfg =3D obj; + libxlDriverConfigPtr cfg =3D LIBXL_DRIVER_CONFIG(obj); =20 g_clear_object(&cfg->caps); + + G_OBJECT_CLASS(libxl_driver_config_parent_class)->dispose(obj); +} + +static void +libxlDriverConfigFinalize(GObject *obj) +{ + libxlDriverConfigPtr cfg =3D LIBXL_DRIVER_CONFIG(obj); + libxl_ctx_free(cfg->ctx); if (cfg->logger) libxlLoggerFree(cfg->logger); @@ -86,6 +101,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 @@ -1688,13 +1705,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); @@ -1710,34 +1722,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 07b3373170..94386cc8cc 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_NAME "xenlight" #define LIBXL_VNC_PORT_MIN 5900 @@ -60,11 +61,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; @@ -102,7 +109,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 0e4d6c56fc..affae0e86e 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.25.3 From nobody Wed May 1 20:24:33 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=1587477071; cv=none; d=zohomail.com; s=zohoarc; b=A9kbGR5IN9yb49h1XDZXsP880+mr9Bh2PjUawTuhJAl59vbg+52QekjL6bW6ul0LqVEqmy6moDRSDbZDlwCBE6+5HniUoqy3WCyUGW7byG54ktO7dD7zaTKZB5RNUXBrFtJz5hMGLNGKofZVNhTfQkazPR7JQXex/jlaPtrZwu8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477071; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mXarhvxpN9YJaHp1Blc0Yoq8Fta8dZWHoUOkEqw0hSk=; b=bngwUl9sAedAludGEw2Y80/8ndKP1e2ubwN/3/6fLm3g9SG6RP9iWxlJ/rWixqgFnO9C0P0V49TGq+56Ufv+s9IRD9fGQpVaro1L8k4QttcMQAWBmKG4Xa+M6VgHPs24hfnarB7N6tvAHxtMmlzCQIEit9O1YgamglO9hZsTfxs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1587477071117838.8917729837945; Tue, 21 Apr 2020 06:51:11 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-438-eRNFxEgGN9qoF4uwojuN0Q-1; Tue, 21 Apr 2020 09:51:07 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E88BD149E4; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BD1F85DAB0; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6F12C941D2; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDovm5003640 for ; Tue, 21 Apr 2020 09:50:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id B27EB76E8A; Tue, 21 Apr 2020 13:50:57 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast03.extmail.prod.ext.phx2.redhat.com [10.5.110.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AD32376E68 for ; Tue, 21 Apr 2020 13:50:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 119C71B2C981 for ; Tue, 21 Apr 2020 13:50:54 +0000 (UTC) Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-96-OQO7p0R9PgGMGaG8zeJrSA-1; Tue, 21 Apr 2020 09:50:51 -0400 Received: by mail-wr1-f49.google.com with SMTP id x18so16589975wrq.2 for ; Tue, 21 Apr 2020 06:50:50 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477069; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=mXarhvxpN9YJaHp1Blc0Yoq8Fta8dZWHoUOkEqw0hSk=; b=S+0kArMZL3wwxDwBqdnn/C3lHaxv70Izmg1vjiy3LLZGC0emXXl3JQLhJJh2uAm9uC0j+B sh9mxNDVS0kI0wGkHgZ8cGtKhodDQOoIPfAQDKDDhe/EPgzWS5A2lqwMpKDi8DakORPa5F HQKOxvRYIPPk46ieRVGQ27FNz88ei9I= X-MC-Unique: eRNFxEgGN9qoF4uwojuN0Q-1 X-MC-Unique: OQO7p0R9PgGMGaG8zeJrSA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LrmRgOXhc75UARmGVhXFZBbDeHQ14B6J85sZS9RkYvE=; b=MFDj7srE8iOR2/SHbTmNe+CRuv3MZtEeW4MVI4zfcE9DocbPbvW6os2cuNRLTdHjfH /6riYfMt3BFrnvqkXLuPQctcR9O0PklsO16bwjkhAbtdLj3pMLNz6zPnv3I+SRpohPdT 7VrKMDj4Lu7BJfOqvQ1eb1CODHrS/EE1T6HbComeNWkUCyqyryMRIXt8LFuACPMiVeWa PynWJK53ZLEHh8KDzn346RaLXl1ZCYR3v9AgZ2xD1tswiVSA2P/buJYeJzBM9EirpKG9 8qxhoxYg+64X8aXKnVmuJbdiB2AQI2w7V/qy01aTSFWvPJIgdYFO4y+swe6KeIh1Vq3j g+/g== X-Gm-Message-State: AGi0PuZE5G+jv1g6p+bFUlW8f1+NuJ5A5rd2w/VmscIQejyQvaDzzfWj 51gTLHqr/rFeMewsyU6OR7Qe93gI4us= X-Google-Smtp-Source: APiQypLoCllMhJx4CNWc5EPq0rbQ4kEofxVgtiIj+VwlwDCiza9WNrfoAqYuIWrIkCKg/QbCKUUMvg== X-Received: by 2002:a5d:5391:: with SMTP id d17mr23431226wrv.215.1587477049250; Tue, 21 Apr 2020 06:50:49 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 34/40] hypervisor: convert virHostdevManager to GObject Date: Tue, 21 Apr 2020 15:49:15 +0200 Message-Id: <20200421134921.3717019-35-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDovm5003640 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/hypervisor/virhostdev.c | 49 +++++++++++++++++++++++++++++-------- src/hypervisor/virhostdev.h | 13 +++++++--- src/libxl/libxl_driver.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/qemu/qemu_driver.c | 2 +- 5 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c index 9017cc3be8..b484603f5d 100644 --- a/src/hypervisor/virhostdev.c +++ b/src/hypervisor/virhostdev.c @@ -44,8 +44,23 @@ VIR_LOG_INIT("util.hostdev"); =20 static virHostdevManagerPtr manager; /* global hostdev manager, never free= d */ =20 -static virClassPtr virHostdevManagerClass; -static void virHostdevManagerDispose(void *obj); +G_DEFINE_TYPE(virHostdevManager, vir_hostdev_manager, G_TYPE_OBJECT); + +static void virHostdevManagerDispose(GObject *obj); +static void virHostdevManagerFinalize(GObject *obj); + +static void vir_hostdev_manager_init(virHostdevManager *mgr G_GNUC_UNUSED) +{ +} + +static void vir_hostdev_manager_class_init(virHostdevManagerClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D virHostdevManagerDispose; + obj->finalize =3D virHostdevManagerFinalize; +} + static virHostdevManagerPtr virHostdevManagerNew(void); =20 struct virHostdevIsPCINodeDeviceUsedData { @@ -112,9 +127,6 @@ static int virHostdevIsPCINodeDeviceUsed(virPCIDeviceAd= dressPtr devAddr, void *o =20 static int virHostdevManagerOnceInit(void) { - if (!VIR_CLASS_NEW(virHostdevManager, virClassForObject())) - return -1; - if (!(manager =3D virHostdevManagerNew())) return -1; =20 @@ -124,18 +136,36 @@ static int virHostdevManagerOnceInit(void) VIR_ONCE_GLOBAL_INIT(virHostdevManager); =20 static void -virHostdevManagerDispose(void *obj) +virHostdevManagerDispose(GObject *obj) { - virHostdevManagerPtr hostdevMgr =3D obj; + virHostdevManagerPtr hostdevMgr =3D VIR_HOSTDEV_MANAGER(obj); =20 virObjectUnref(hostdevMgr->activePCIHostdevs); + hostdevMgr->activePCIHostdevs =3D NULL; virObjectUnref(hostdevMgr->inactivePCIHostdevs); + hostdevMgr->inactivePCIHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeUSBHostdevs); + hostdevMgr->activeUSBHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeSCSIHostdevs); + hostdevMgr->activeSCSIHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeSCSIVHostHostdevs); + hostdevMgr->activeSCSIVHostHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeMediatedHostdevs); + hostdevMgr->activeMediatedHostdevs =3D NULL; virObjectUnref(hostdevMgr->activeNVMeHostdevs); + hostdevMgr->activeNVMeHostdevs =3D NULL; + + G_OBJECT_CLASS(vir_hostdev_manager_parent_class)->dispose(obj); +} + +static void +virHostdevManagerFinalize(GObject *obj) +{ + virHostdevManagerPtr hostdevMgr =3D VIR_HOSTDEV_MANAGER(obj); + VIR_FREE(hostdevMgr->stateDir); + + G_OBJECT_CLASS(vir_hostdev_manager_parent_class)->finalize(obj); } =20 static virHostdevManagerPtr @@ -144,8 +174,7 @@ virHostdevManagerNew(void) g_autoptr(virHostdevManager) hostdevMgr =3D NULL; bool privileged =3D geteuid() =3D=3D 0; =20 - if (!(hostdevMgr =3D virObjectNew(virHostdevManagerClass))) - return NULL; + hostdevMgr =3D VIR_HOSTDEV_MANAGER(g_object_new(VIR_TYPE_HOSTDEV_MANAG= ER, NULL)); =20 if (!(hostdevMgr->activePCIHostdevs =3D virPCIDeviceListNew())) return NULL; @@ -206,7 +235,7 @@ virHostdevManagerGetDefault(void) if (virHostdevManagerInitialize() < 0) return NULL; =20 - return virObjectRef(manager); + return g_object_ref(manager); } =20 /** diff --git a/src/hypervisor/virhostdev.h b/src/hypervisor/virhostdev.h index 811bda40ed..be5345992c 100644 --- a/src/hypervisor/virhostdev.h +++ b/src/hypervisor/virhostdev.h @@ -30,6 +30,7 @@ #include "conf/domain_conf.h" #include "virmdev.h" #include "virnvme.h" +#include =20 typedef enum { VIR_HOSTDEV_STRICT_ACS_CHECK =3D (1 << 0), /* strict acs check */ @@ -41,10 +42,8 @@ typedef enum { } virHostdevFlag; =20 =20 -typedef struct _virHostdevManager virHostdevManager; -typedef virHostdevManager *virHostdevManagerPtr; struct _virHostdevManager { - virObject parent; + GObject parent; =20 char *stateDir; =20 @@ -59,7 +58,13 @@ struct _virHostdevManager { virNVMeDeviceListPtr activeNVMeHostdevs; }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virHostdevManager, virObjectUnref); +#define VIR_TYPE_HOSTDEV_MANAGER vir_hostdev_manager_get_type() +G_DECLARE_FINAL_TYPE(virHostdevManager, + vir_hostdev_manager, + VIR, + HOSTDEV_MANAGER, + GObject); +typedef virHostdevManager *virHostdevManagerPtr; =20 =20 virHostdevManagerPtr virHostdevManagerGetDefault(void); diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index affae0e86e..dbcbbdc96d 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -505,7 +505,7 @@ libxlStateCleanup(void) if (!libxl_driver) return -1; =20 - virObjectUnref(libxl_driver->hostdevMgr); + g_clear_object(&libxl_driver->hostdevMgr); g_clear_object(&libxl_driver->xmlopt); virObjectUnref(libxl_driver->domains); virPortAllocatorRangeFree(libxl_driver->reservedGraphicsPorts); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 288d394989..cbd7fbfcb0 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1603,7 +1603,7 @@ static int lxcStateCleanup(void) =20 virSysinfoDefFree(lxc_driver->hostsysinfo); =20 - virObjectUnref(lxc_driver->hostdevMgr); + g_clear_object(&lxc_driver->hostdevMgr); g_clear_object(&lxc_driver->caps); virObjectUnref(lxc_driver->securityManager); g_clear_object(&lxc_driver->xmlopt); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c05803f08a..346edb47d6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1113,7 +1113,7 @@ qemuStateCleanup(void) virPortAllocatorRangeFree(qemu_driver->webSocketPorts); virPortAllocatorRangeFree(qemu_driver->remotePorts); virHashFree(qemu_driver->sharedDevices); - virObjectUnref(qemu_driver->hostdevMgr); + g_clear_object(&qemu_driver->hostdevMgr); virObjectUnref(qemu_driver->securityManager); virObjectUnref(qemu_driver->domainEventState); virObjectUnref(qemu_driver->qemuCapsCache); --=20 2.25.3 From nobody Wed May 1 20:24:33 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=1587477086; cv=none; d=zohomail.com; s=zohoarc; b=gkwufvnsdD+eekpytFceWuUm6F+sm7e7BmAOoR6x6CwGdMKh+TTHzxxe/3gccYfPt5PcgErzKqigssIxn66RwR528JFmwtQW3rxEF9xZvjVykC0kB1UyeSBh9iOO5hAuiCNJ69b9JdhB69uhp6OK5/Izv/hTuZyjc2Usah0hMmI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477086; 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=yT9OnhHbvus6v4A/1g9vNb+ttCN2r+a3QnGOXMfO824=; b=D/28a3zX1SGD1Ex8X0I089io3QmOD8J2OQGfBYSboUt31jyUHawns2HuHzxxOiuLAV/4eCo2ewr+fk2OofImhXkBJv3eG54NKGoUI5DPdr7xW4Rt0CuINYN9dxhqRR/6F28eENBJZx1x4NJf3W857XLAviQZS3tAiIwOWGYPKzY= 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 158747708663853.204923359583404; Tue, 21 Apr 2020 06:51: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-203--fE-4Vo-NB6ehVCjZchyGg-1; Tue, 21 Apr 2020 09:51:21 -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 C67A980257B; Tue, 21 Apr 2020 13:51:13 +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 9AD385C290; Tue, 21 Apr 2020 13:51:13 +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 3864E941C7; Tue, 21 Apr 2020 13:51: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 03LDotkF003619 for ; Tue, 21 Apr 2020 09:50:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 50A2C2093CE5; Tue, 21 Apr 2020 13:50:55 +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 4C1FD20292BF for ; Tue, 21 Apr 2020 13:50:54 +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 7522C185A793 for ; Tue, 21 Apr 2020 13:50:54 +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-14-zrcxEMpYPGa1pgWEYK0SNA-1; Tue, 21 Apr 2020 09:50:52 -0400 Received: by mail-wr1-f50.google.com with SMTP id u13so16563304wrp.3 for ; Tue, 21 Apr 2020 06:50:51 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477085; 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=yT9OnhHbvus6v4A/1g9vNb+ttCN2r+a3QnGOXMfO824=; b=MhhThMbvIJtipy+MlOb66Ze44kmSb2p3DZJh9xPpRJVDnZ6p44yRpJKAkjNgIxZt3UcL7E lUMlVwf5igt6RlLyMJmlmqKKEzyzZnZuDNy1uT06JEbpo5Z78XpAnLG/dWMv/Oz0dr71r2 lNqdvWdSj72iktyVFFTBLdMJXs/Wyg0= X-MC-Unique: -fE-4Vo-NB6ehVCjZchyGg-1 X-MC-Unique: zrcxEMpYPGa1pgWEYK0SNA-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=FFLZGQGiU3p9EodqYMlquh+6IYBS6GL8K90GAdQokaY=; b=CzJKEAZW/VCRGWI5mPkYj/wIkddASPxNLoqw4x2NljDfcNrB7ZpEOfetnBuIRBv07H 8E0BiJHb4mKtc2QqX4NEfvNP6aOOhwHZ6aS/4NcqztBpJJVibOlBbZQcCv4xoKPFLtNh pGghECdNeUtMRphzySUOguD4hQUcnHo81BBpo5hQqx3/o9G4yUqsN5s66WIudOP3gI2z wpnOpKPfdhV283Xvx8u6HDmFpl2NXA9Hj5zKlDtgUuVLfZ6/mAt9mzisU6jSkv4715H0 7jh9Gwi0Vb5Mu5jCjllvi3fnzgu+1TcPkNhM3fnjUculSX9Z4tVW6m5vOs1aERnKZKku cpdQ== X-Gm-Message-State: AGi0Pua2/ImreJIPFSjasH6PGMh1tqLLaBy4WkqtYExM4EFShLt8tFM2 ggrr0E5fvMoNssbk6NbDF23YDhwSTmA= X-Google-Smtp-Source: APiQypJaIxW2oq+ZV9ZXoqu5mwIgvfEWWGaLkypbb/5ZebVlucPh+ygySfkQ57C61act88cJ7VszYQ== X-Received: by 2002:a5d:658e:: with SMTP id q14mr25269877wru.92.1587477050514; Tue, 21 Apr 2020 06:50:50 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 35/40] libxl: convert libxlMigrationDstArgs to GObject Date: Tue, 21 Apr 2020 15:49:16 +0200 Message-Id: <20200421134921.3717019-36-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDotkF003619 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/libxl/libxl_migration.c | 76 ++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index 50225855ae..8530b172ec 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,30 @@ 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 libxlMigrationDstArgsDispose(GObject *obj); +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->dispose =3D libxlMigrationDstArgsDispose; + obj->finalize =3D libxlMigrationDstArgsFinalize; +} =20 =20 static void @@ -226,31 +249,34 @@ libxlMigrationEatCookie(const char *cookiein, } =20 static void -libxlMigrationDstArgsDispose(void *obj) +libxlMigrationDstArgsDispose(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); + args->conn =3D NULL; virObjectUnref(args->vm); + args->vm =3D NULL; + + G_OBJECT_CLASS(libxl_migration_dst_args_parent_class)->dispose(obj); } =20 -static int -libxlMigrationDstArgsOnceInit(void) +static void +libxlMigrationDstArgsFinalize(GObject *obj) { - if (!VIR_CLASS_NEW(libxlMigrationDstArgs, virClassForObject())) - return -1; + libxlMigrationDstArgs *args =3D LIBXL_MIGRATION_DST_ARGS(obj); =20 - return 0; + libxlMigrationCookieFree(args->migcookie); + VIR_FREE(args->socks); + + 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 +303,6 @@ libxlDoMigrateDstReceive(void *opaque) } args->nsocks =3D 0; VIR_FORCE_CLOSE(recvfd); - virObjectUnref(args); virDomainObjEndAPI(&vm); } =20 @@ -287,7 +312,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 +346,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 +364,6 @@ libxlMigrateDstReceive(virNetSocketPtr sock, } args->nsocks =3D 0; VIR_FORCE_CLOSE(recvfd); - virObjectUnref(args); } =20 static int @@ -551,7 +575,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 +624,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 +642,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 +658,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 +688,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 +788,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 +809,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 +846,6 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn, VIR_FREE(hostname); else virURIFree(uri); - virObjectUnref(args); virDomainObjEndAPI(&vm); return ret; } --=20 2.25.3 From nobody Wed May 1 20:24:33 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=1587477075; cv=none; d=zohomail.com; s=zohoarc; b=BK1y+2aaJXw6eOuu7XERSEEmqjIo5HnKRTRdu17TfrL3+I3WeiOqbw/Y0/xY2zKqUjL0DxUZUGpvBsmgQjN14RTxRFI+KOYKd/QZkFABG70poGfzViMsfJKNQhzihUYlxjDDYsyqVtJHlM3xOJMWjtUds7ZpK0QKmbZ6R2lFy+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477075; 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=PWMNDIABSS2DuOQxE8G+mebPPK4ACqVferUu1LmrsVg=; b=IbLSJztMkjUkyDcDoPuvJIGFOwI/WCqjm6ZUz7clLnTxqTYP4yDBqGO4oInW2Yc8NPL9OjNj9SyHfEcdhgAuKnZOV6o+iGxRvbgLhK6amdsSvFyPiCKVt+dBLFhwV0yNomUM+ln13Y4iNh/GCz+4WL4FHJIbf0SbI2/kmWDsNs8= 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 1587477075582215.82305343321514; Tue, 21 Apr 2020 06:51: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-389-2ZYnqE2YPf2ayTbjewHCfQ-1; Tue, 21 Apr 2020 09:51:12 -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 87DAC107B767; Tue, 21 Apr 2020 13:51: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 5978D60FC4; Tue, 21 Apr 2020 13:51: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 F00FF180338F; Tue, 21 Apr 2020 13:51:04 +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 03LDow3D003650 for ; Tue, 21 Apr 2020 09:50:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id 10ECB1C0EFB; Tue, 21 Apr 2020 13:50: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 0C7DE1C0EED for ; Tue, 21 Apr 2020 13:50: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 E60E7101A55F for ; Tue, 21 Apr 2020 13:50:55 +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-291-vseMnFteNfaEy61MfXJE3A-1; Tue, 21 Apr 2020 09:50:53 -0400 Received: by mail-wr1-f66.google.com with SMTP id t14so16506322wrw.12 for ; Tue, 21 Apr 2020 06:50:53 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477074; 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=PWMNDIABSS2DuOQxE8G+mebPPK4ACqVferUu1LmrsVg=; b=KlyGmInZfrDH49V3Mk5Hooi7/ztIFTTW1tE5hwA9SNq/xMZwLdwP2E4sye9gfjqgL3QzZ1 zSuxOaeK+k9FGYHEt/LsKtxCFeD9geLKQPi10tUIWNRe7x83iBlOUm1ITvCSKxH4njFk+y 2sO2TC6k0nXgm/7bi+lmeNl2ydKtp40= X-MC-Unique: 2ZYnqE2YPf2ayTbjewHCfQ-1 X-MC-Unique: vseMnFteNfaEy61MfXJE3A-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=aybra+tmXYKEkKHQVsVFYye6HyYro9gRzlEjM2x9zys=; b=n7ropvMKWixD3u0iZ2UdSlBdAW07ecEkykN8JQ2ZUe5lTbQjMh3QRYkN6k2io8eRAC zaQ8o572A2cs8cgv3AVllIi7LMcxhCqFTVEJl1D0Jwpu7Ht/zJ5yaYld368h1yZqjtrL lx2FOukB6VOx4wOk+sI90DY3NAGc6BmHDGkOa4XqvL1QQR7aVdFB5kBEaO7nXJBVxE/V 9NbRN6WrcJrY0qV3JUVY3FEjxsLpFYT+SvFFXUW2zC+2fyRfODFCuiEGdoV6YIPCApem 2BqPuTbJzk3NXChmE962NMsUd0WevG5ZgKEJrJWP59WuZaU2U9FwDloiwGHvF7wYN+ZN B/Jg== X-Gm-Message-State: AGi0PuY1ReNB/xDWZV2hl31Bum4m8fvIAx3C/Wyt4MDNaG/xZOGk/Htb PAC1Q7ZAhfqemeE9s5QyzV/6ILchsXs= X-Google-Smtp-Source: APiQypK0AQ2eah/908nBZ9M9OVvRSTxngzkl0KYKZiGUjG3TXKMKWTmGeIYBogY7DtzaQ97JeAsxsQ== X-Received: by 2002:adf:8284:: with SMTP id 4mr24394507wrc.6.1587477051766; Tue, 21 Apr 2020 06:50:51 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 36/40] qemu: convert qemuBlockJobData to GObject Date: Tue, 21 Apr 2020 15:49:17 +0200 Message-Id: <20200421134921.3717019-37-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDow3D003650 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/qemu/qemu_blockjob.c | 67 ++++++++++++++++++++++----------------- 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, 55 insertions(+), 50 deletions(-) diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 2032c0c1c5..38fbba2b90 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -71,8 +71,23 @@ VIR_ENUM_IMPL(qemuBlockjob, "create", "broken"); =20 -static virClassPtr qemuBlockJobDataClass; +G_DEFINE_TYPE(qemuBlockJobData, qemu_block_job_data, G_TYPE_OBJECT); +static void qemuBlockJobDataDispose(GObject *obj); +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->dispose =3D qemuBlockJobDataDispose; + obj->finalize =3D qemuBlockJobDataFinalize; +} =20 static void qemuBlockJobDataDisposeJobdata(qemuBlockJobDataPtr job) @@ -88,43 +103,38 @@ qemuBlockJobDataDisposeJobdata(qemuBlockJobDataPtr job) =20 =20 static void -qemuBlockJobDataDispose(void *obj) +qemuBlockJobDataDispose(GObject *obj) { - qemuBlockJobDataPtr job =3D obj; + qemuBlockJobDataPtr job =3D QEMU_BLOCK_JOB_DATA(obj); =20 virObjectUnref(job->chain); + job->chain =3D NULL; virObjectUnref(job->mirrorChain); + job->mirrorChain =3D NULL; + + G_OBJECT_CLASS(qemu_block_job_data_parent_class)->dispose(obj); +} + +static void +qemuBlockJobDataFinalize(GObject *obj) +{ + qemuBlockJobDataPtr job =3D QEMU_BLOCK_JOB_DATA(obj); =20 qemuBlockJobDataDisposeJobdata(job); =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 +190,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 +219,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 +436,7 @@ qemuBlockJobDiskGetJob(virDomainDiskDefPtr disk) if (!job) return NULL; =20 - return virObjectRef(job); + return g_object_ref(job); } =20 =20 @@ -466,7 +475,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 @@ -1738,7 +1747,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 c6980a53b6..99478890b6 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1166,7 +1166,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; @@ -2215,7 +2215,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 14654a17d7..98b02710d5 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4276,8 +4276,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 ab4ae8e150..6b668029b1 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) { @@ -5437,7 +5429,7 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver, storage =3D true; } =20 - virObjectUnref(job); + g_clear_object(&job); } =20 if (storage && --=20 2.25.3 From nobody Wed May 1 20:24:33 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=1587477130; cv=none; d=zohomail.com; s=zohoarc; b=IewXEpaYdVmZrRH/Ds27Z4NAsySkof+tz1Xe8ehmiKM13Z08jpaI+va6EaM2N1o346nDVZXbE4n3arsv0SOAC5dY8jDQCE3FKJFNLIIhlIQtPFnJPmWOoA0DLq5F/7tOx9qZKWyVrOT22sULusVnD1Zj6Wd8g3CUj7Ag7oWHGzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477130; 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=nom9KyXWOTn8CRuafJtBRruZCGpHlDv7eIDxqRnCAbU=; b=jO//i+zDbP0V7Sn0speh40v0e/s8SPeM539Y5c4kYn1OC9W93PGQubPGY+VZLJbS2UEmPNB9uiM8BfFs2b+sNCWQSQXomzCVy//F9o1PAd67hbr4U3yiUg1i6vH48Ej5LrF1IzrFtfxOIAgjDJqTSI2bQ/3w7ky/ORyKM9570Bs= 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 1587477130297944.0456173644234; Tue, 21 Apr 2020 06:52: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-502-yDY3KDU6PDCMlI7CZKA5LA-1; Tue, 21 Apr 2020 09:52:07 -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 79BDA801E6D; Tue, 21 Apr 2020 13:52: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 05BFA1036D28; Tue, 21 Apr 2020 13:52: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 ACA951819ADC; Tue, 21 Apr 2020 13:52:00 +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 03LDpx2D003860 for ; Tue, 21 Apr 2020 09:51:59 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6A2AE20292BF; Tue, 21 Apr 2020 13:51:59 +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 663EF2093CE5 for ; Tue, 21 Apr 2020 13:51:57 +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 18DCF101A55E for ; Tue, 21 Apr 2020 13:51:57 +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-354-lmrbVf7cPJurQVConA3zPA-1; Tue, 21 Apr 2020 09:51:54 -0400 Received: by mail-wm1-f54.google.com with SMTP id u127so3779340wmg.1 for ; Tue, 21 Apr 2020 06:51:54 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477128; 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=nom9KyXWOTn8CRuafJtBRruZCGpHlDv7eIDxqRnCAbU=; b=YSbLGYFFZALl0iOtk/KUdr8Jl1OZ88DPeaC8+6cmf9A7ip5bwt5o+fPUcC2f5kOtNX1tUY 1emHzORFZgQ1p3NQJSvqV7/SdVPqJdErAroCnQDgzMctuBZZhvxC0+Zy6dgpLYrxqcFS3c O9ogcysD8snz9O3L3qdKkqZt3BtjTVc= X-MC-Unique: yDY3KDU6PDCMlI7CZKA5LA-1 X-MC-Unique: lmrbVf7cPJurQVConA3zPA-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=JFq6c7RWRQXoXFq+CaUhlHZGDF1batb3aOsT8sye8yg=; b=a+x5/oTsBdCxmLEWa8r7TgXjnw1VtidrZOhTojm6W4ZvSA/vbdO5pSxZseWiMBoH32 CTxjeoK96j98KQcJKb+bgI5h8IfB4eoNaepyASosnBAXZLcYp3RlBNibCyecaAH2PmA4 PvrPiazoCGWjpow2KewMFWSzJNBgx0lJXtgyCeNLE3skwdXT3pIH4KfC82niBUDQZNMA MSi2UWGdHZTk38xWkwEV101aJxxSPj0vMuPSzFe5dtZ7/sZnp6wdh9h3nxdf5kjaVY7/ OIPUvryzbtaBoN+ybI/whyLOQZAP1IT6JeRm4Y4j/w6VybCYR0/sXhvPmR6/yEaN6zYy 3jYg== X-Gm-Message-State: AGi0PuYnH17zzqU2+r5yBlHR5sC+vQ9VgRt85X0tYjQ4IY6ggkptFeRd 8PBW5p8jajXsN+/6aqajS/12CHR1Mro= X-Google-Smtp-Source: APiQypJ6zQAn22aN0WyrjTdBsB4XePsEpLf4hlHfxY6yrngr95ISJs8LmkbTvpwhJKyR0uX84ynJeg== X-Received: by 2002:a05:600c:218e:: with SMTP id e14mr5357408wme.140.1587477053182; Tue, 21 Apr 2020 06:50:53 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 37/40] qemu: convert virQEMUDriverConfig to GObject Date: Tue, 21 Apr 2020 15:49:18 +0200 Message-Id: <20200421134921.3717019-38-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDpx2D003860 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/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 c29b543b16..1e7d1a8e9d 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 346edb47d6..4d0f76fb21 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 eece670aa0..e149e36ffe 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.25.3 From nobody Wed May 1 20:24:33 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=1587477089; cv=none; d=zohomail.com; s=zohoarc; b=EmDHduRiYc9krRXHRExEbOfBROoB2UIWXfNNSLFuRDZxWv9q7MgxpnfphvYMabKJQUGiMVOFL6Apdwv8473YE19RjjNolwaIdXXc6h0G3zf1MAUGhX9ZqNzt0AhrpXv36E473flpolA7ppv2DKIHp2c/IzH9aRX/CiyRPAarJeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477089; 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=Ysrvco0UEK4jMY9LG+5mmtxX9Azu5/8mYWKYELKhqZs=; b=hB1nupo/7/gIO4EQb5zMF7LUdEMZymU7BeF6YqvpBxp2ZI+LY+z/H0q2HHgbAg7nnlgr1BVOYcyMPgy+v9OnxZ3Q3suKbwtUQ8eEl/SeZwJiUtA5v3/CIXKk6qddAt0Nh8KeSRlo14rjK/xpKT/Ny807utofusW78it3o341+GE= 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 1587477089030686.8018761540112; Tue, 21 Apr 2020 06:51: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-283-1RlFoVupNo6u86kJfO3Ojw-1; Tue, 21 Apr 2020 09:51:24 -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 195FB1B2C985; Tue, 21 Apr 2020 13:51: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 ADF5EB3A72; Tue, 21 Apr 2020 13:51:18 +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 5F9D0941AF; Tue, 21 Apr 2020 13:51:18 +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 03LDp57A003706 for ; Tue, 21 Apr 2020 09:51:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3BECD11921A5; Tue, 21 Apr 2020 13:51:05 +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 367EF11921A3 for ; Tue, 21 Apr 2020 13:51:00 +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 527BA185A791 for ; Tue, 21 Apr 2020 13:51:00 +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-257-d0WNYclmPmWimCIiUz-tUw-1; Tue, 21 Apr 2020 09:50:56 -0400 Received: by mail-wm1-f67.google.com with SMTP id u127so3779455wmg.1 for ; Tue, 21 Apr 2020 06:50:56 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477086; 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=Ysrvco0UEK4jMY9LG+5mmtxX9Azu5/8mYWKYELKhqZs=; b=Ik/WG+4PaMVnhqOKmk3QLyVIZSHr/iNmIRZlqvaqyer/ggi26ed3Zi5cSddodtsqKilcHO gP0NLuBZAZmYdD9mylYVFzGVd3jpXFerQlBEl0SDLVqpogYbjWR4nUX/p6d5KXR6qzm0SE 0TDK6YEeAy0VM39Qbp3qmEmBq2FRjsA= X-MC-Unique: 1RlFoVupNo6u86kJfO3Ojw-1 X-MC-Unique: d0WNYclmPmWimCIiUz-tUw-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=BeXLDWk+5NF2NPDn68BYuKtvcRxZSj5MdGzWz0mpctc=; b=n6sxD3kvffFvzhDJAbe1YQDeaVhrXZK2kDwfhItaYXrfMwqUkePz+g5/q9AjP7XDMw 1wlc7SJl6GR1Tg/E9BCG0Pgzf5bGijZw6LReTqefOqG3U6PxSRXF2eUcMZI0YfutI1fp t9TygpWEcBNsDZG9sV5Ho5MUVdEZKFW9YqkyjsYRCw1b8XUJ9fnXAvqX7SMIxfm2uGIs Jgj2nA3AY5V58/Bpz7KBl+gn1vuA68LxtGNbn0GCEkc/7Jlm+X0nuXw4NrdJkKrrX+XF Y0wT+jO2Y2QEvf94U6wK4Ln8KzPtANsoWFRDBd7WWteUwB2HEDkqba0U7h64dvzbeNh8 4Hhg== X-Gm-Message-State: AGi0Puap5LziALG3MV7crASLfEMmSV893vY8cLV4FbXN7ERFMpbYV4Fn sv9Zt2Xboi2Z3an3Y6vBTXYTjqlOK04= X-Google-Smtp-Source: APiQypJNFpuo0CIq1/NM++KbeR0bJPjFNZoCKq0RdUpmn4KGRG0MNV/cpBt09+kV7ncOVB6j/3GYqw== X-Received: by 2002:a1c:66d5:: with SMTP id a204mr5042066wmc.69.1587477054617; Tue, 21 Apr 2020 06:50:54 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 38/40] conf: convert virDomain*Private to GObject Date: Tue, 21 Apr 2020 15:49:19 +0200 Message-Id: <20200421134921.3717019-39-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDp57A003706 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 | 21 ++- src/conf/domain_conf.h | 18 +- src/qemu/qemu_domain.c | 359 +++++++++++++++++--------------------- src/qemu/qemu_domain.h | 145 ++++++++++----- src/util/virstoragefile.c | 2 +- src/util/virstoragefile.h | 3 +- 6 files changed, 286 insertions(+), 262 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fa87fb0590..15a0c2d881 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1785,7 +1785,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 @@ -1833,7 +1833,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())) @@ -1856,7 +1856,7 @@ virDomainVcpuDefFree(virDomainVcpuDefPtr info) =20 virBitmapFree(info->cpumask); info->cpumask =3D NULL; - virObjectUnref(info->privateData); + g_clear_object(&info->privateData); VIR_FREE(info); } =20 @@ -2158,7 +2158,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); } @@ -2361,7 +2361,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); @@ -2422,7 +2422,7 @@ virDomainVsockDefFree(virDomainVsockDefPtr vsock) if (!vsock) return; =20 - virObjectUnref(vsock->privateData); + g_clear_object(&vsock->privateData); virDomainDeviceInfoClear(&vsock->info); VIR_FREE(vsock); } @@ -2510,7 +2510,7 @@ virDomainNetDefFree(virDomainNetDefPtr def) if (!def) return; virDomainNetDefClear(def); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -2651,8 +2651,7 @@ virDomainChrSourceDefDispose(GObject *obj) { virDomainChrSourceDefPtr def =3D VIR_DOMAIN_CHR_SOURCE_DEF(obj); =20 - virObjectUnref(def->privateData); - def->privateData =3D NULL; + g_clear_object(&def->privateData); =20 G_OBJECT_CLASS(vir_domain_chr_source_def_parent_class)->dispose(obj); } @@ -2909,7 +2908,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)); } @@ -27098,7 +27097,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 c9a44ecfd8..ae9a064106 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -528,7 +528,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 */ @@ -852,7 +852,7 @@ struct _virDomainFSDef { virTristateSwitch posix_lock; virTristateSwitch flock; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 =20 @@ -1071,7 +1071,7 @@ struct _virDomainNetDef { unsigned int mtu; virNetDevCoalescePtr coalesce; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 typedef enum { @@ -1190,7 +1190,7 @@ struct _virDomainChrSourceReconnectDef { struct _virDomainChrSourceDef { GObject parent; int type; /* virDomainChrType */ - virObjectPtr privateData; + GObject *privateData; union { /* no for null, vc, stdio */ struct { @@ -1493,7 +1493,7 @@ struct _virDomainVideoDriverDef { }; =20 struct _virDomainVideoDef { - virObjectPtr privateData; + GObject *privateData; =20 int type; /* enum virDomainVideoType */ unsigned int ram; /* kibibytes (multiples of 1024) */ @@ -1640,7 +1640,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. @@ -2318,7 +2318,7 @@ struct _virDomainVcpuDef { =20 virDomainThreadSchedParam sched; =20 - virObjectPtr privateData; + GObject *privateData; }; =20 struct _virDomainBlkiotune { @@ -2416,7 +2416,7 @@ typedef enum { } virDomainVsockModel; =20 struct _virDomainVsockDef { - virObjectPtr privateData; + GObject *privateData; =20 virDomainVsockModel model; unsigned int guest_cid; @@ -2774,7 +2774,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 99478890b6..7f6ac10659 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1130,362 +1130,329 @@ 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 qemuDomainDiskPrivateDispose(GObject *obj); +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 void +qemu_domain_disk_private_class_init(qemuDomainDiskPrivateClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D qemuDomainDiskPrivateDispose; + obj->finalize =3D qemuDomainDiskPrivateFinalize; +} =20 -static virObjectPtr +static GObject * qemuDomainDiskPrivateNew(void) { - qemuDomainDiskPrivatePtr priv; + return g_object_new(QEMU_TYPE_DOMAIN_DISK_PRIVATE, NULL); +} =20 - if (qemuDomainDiskPrivateInitialize() < 0) - return NULL; +static void +qemuDomainDiskPrivateDispose(GObject *obj) +{ + qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 - if (!(priv =3D virObjectNew(qemuDomainDiskPrivateClass))) - return NULL; + virObjectUnref(priv->migrSource); + priv->migrSource =3D NULL; + g_clear_object(&priv->blockjob); =20 - return (virObjectPtr) priv; + G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->dispose(obj); } =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 cf19f4d101..7dbd3ffc69 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -433,13 +433,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 @@ -457,13 +452,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; @@ -475,12 +477,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 */ @@ -500,6 +513,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 @@ -513,77 +534,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 ffc8bdb344..0f26a81391 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2717,7 +2717,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 7939c09cd5..a744bcbf5c 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. @@ -304,7 +305,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.25.3 From nobody Wed May 1 20:24:33 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=1587477093; cv=none; d=zohomail.com; s=zohoarc; b=I97PQSgfLH2yHNVft8bWkStZp2/RhxTXJyynh9s6xiNriWHbAlcezmUi1wt+dcesR/9+1QRdFLLEtqCXuac4juq0yFKGapjth0mJhmb+6B0TwY15efG1vw8kdjYLfqkmxR37W9lYflUiAFgCtgeIn6RUfUXU6lv1bW0SZnGuYY8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477093; 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=xknt8pWl9YtpFoi2wE3xLWx/OitByuaWVKpnICAU9PM=; b=YMHnva48VC0bxmW2GDPphY6a3tU7st4VEsZtcst14NZrjG+k1bPf/KKIvkayBqRbF4bNze9/NRWl3jsKjyFARmEa9bgWDAPm9+17E/DYQh22c7FPhB2o6OBvuis4GFqOldPXYHSK9La8cc8QhZ8jH8PRX6WLCa2sSjKVeAWBsKc= 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 1587477093542729.9905593548028; Tue, 21 Apr 2020 06:51: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-69-n2vYK0ZkMW-KtwvyaS5NOw-1; Tue, 21 Apr 2020 09:51:29 -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 4A03C107B78F; Tue, 21 Apr 2020 13:51: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 06AFD60E1C; Tue, 21 Apr 2020 13:51: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 A72CB1819ACE; Tue, 21 Apr 2020 13:51:22 +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 03LDp2rJ003677 for ; Tue, 21 Apr 2020 09:51:02 -0400 Received: by smtp.corp.redhat.com (Postfix) id E682B2017E91; Tue, 21 Apr 2020 13:51:01 +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 E20292026E1C for ; Tue, 21 Apr 2020 13:51:01 +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 BE433802069 for ; Tue, 21 Apr 2020 13:51:01 +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-127-RuFhrd0_OGihjyvf1LPHPQ-1; Tue, 21 Apr 2020 09:50:58 -0400 Received: by mail-wr1-f42.google.com with SMTP id g13so14517918wrb.8 for ; Tue, 21 Apr 2020 06:50:57 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477092; 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=xknt8pWl9YtpFoi2wE3xLWx/OitByuaWVKpnICAU9PM=; b=fs6T7dxjSDa5pskqblkLa0gW21/LlQz6ztImgjarZGwrXpfXFyBs6Kzc1kMLuDONwhhjuk 5RXxCmZxEwmZZYCj+g1sFA6dyRDYbZ3cupolWL9NzoaQ7WtXLfMaPiMnbkGNGro0p34vh1 WNRdJwzxLQl4Jt5TUqUeTyISFNm7CSo= X-MC-Unique: n2vYK0ZkMW-KtwvyaS5NOw-1 X-MC-Unique: RuFhrd0_OGihjyvf1LPHPQ-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=whkGBAu0B6iqzT1tj9knXFCvyAkvpsmRzo5n+ktca88=; b=gGLxBK+1sgf52SHYRGbmsyooX9jV5DVrYyYcPEipDVIt7+RqXD9Uy8h+bvq+u4xQ+L bMmdhr5U0fjhuKyPI82tXiPO1+ZdSlsQiDd0+3ZadI4eJKDPGKTwkEhG/fkwMXAe9Jwc RfJA+rCHJMDXI2V6OkJGet6jFNSbtUYiAnnl/qhLq94xO97xlyS1byfAc091lUWrUtwA IuJWv640H1d5p2m39CVaU9yCx6VFO9NiUTN6srITUeCDE/ndl4qSkSyGbjC9v/90gfQm IDpuivfrdtRlUxNrGLvl6gHnXWgcmhjja/EdNwX5XgKuSX3u8jxeE8KRw3N9fhIaP1AS 7qOQ== X-Gm-Message-State: AGi0PuZK1PkWDRMiK3LC44G+9j1kAn0VuOvyh8LfO4J2c3rHFr92/Mun LW4+2NdG864n65eMiEGJ1n+e5HxgjRY= X-Google-Smtp-Source: APiQypIxPwc8N2pQ6r9oaS3h6em32RUmd5DHVAtYdVVTMbOmKa9k/TdCfttI3oJ54qh7hoMcxTyhxg== X-Received: by 2002:adf:c109:: with SMTP id r9mr24078123wre.265.1587477056325; Tue, 21 Apr 2020 06:50:56 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 39/40] conf: convert virSaveCookie to GObject Date: Tue, 21 Apr 2020 15:49:20 +0200 Message-Id: <20200421134921.3717019-40-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDp2rJ003677 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/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 37b5c2fdf7..138c7eb5e0 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 7f6ac10659..a61c16eb2a 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) @@ -12753,13 +12756,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 @@ -12769,11 +12774,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; @@ -12789,15 +12790,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) @@ -12805,14 +12802,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 7dbd3ffc69..65a1f03a2b 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -672,16 +672,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 4d0f76fb21..543d8fb1c2 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2872,7 +2872,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 @@ -6837,7 +6837,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 @@ -14478,7 +14478,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) { @@ -15486,7 +15486,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.25.3 From nobody Wed May 1 20:24:33 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=1587477098; cv=none; d=zohomail.com; s=zohoarc; b=RSEHBR5PYyc5AqCxy7wj1FX5bIcuWoe/E7bdKTgDPv4qwhWlO+N6AmY5luUbYOVbWcRruqFKSnMyqWTYqIldr+kGot/kiA2I7U0lTz96G1jsgsAHvjSj4UujhlDsYMJBjxGPEN+90HQf533tWyPkxcompglg2zjSRkZ9620hsuo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477098; 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=NEQiR/hyS0cex+YAT+X0QHTlO4QMvCUch2nXprOcHVg=; b=DOQekjMycBTI9HeRuAxo7jqz4Mu3vD/p5pPBX7NGz0GThRdRjBauvbpHZJ8DgGaV1hh8UwA5bkOOGB8tf/0NeRzljJpVYhWvlyypWRxCYOQ+3vS5EC4VKkZY6+R8LB1nbc2sclAXLaJ7SOm8gV6khFQGDYHCK0ghfVrZbAP+aEM= 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 1587477098539314.4563656790398; Tue, 21 Apr 2020 06:51: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-447-TTywH_EjNfKQ3HdkDu3TNw-1; Tue, 21 Apr 2020 09:51:35 -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 5A6D5800D53; Tue, 21 Apr 2020 13:51:27 +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 D11D476E8F; Tue, 21 Apr 2020 13:51:26 +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 8D88C93917; Tue, 21 Apr 2020 13:51:26 +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 03LDp4Gt003698 for ; Tue, 21 Apr 2020 09:51:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id BF61C1C0EF3; Tue, 21 Apr 2020 13:51:04 +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 BB4921C0EF9 for ; Tue, 21 Apr 2020 13:51:02 +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 5F05486BCA9 for ; Tue, 21 Apr 2020 13:51:02 +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-28-urB2tXbKOgK5YgFxdBiYJQ-1; Tue, 21 Apr 2020 09:51:00 -0400 Received: by mail-wm1-f67.google.com with SMTP id v8so2588702wma.0 for ; Tue, 21 Apr 2020 06:50:59 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477097; 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=NEQiR/hyS0cex+YAT+X0QHTlO4QMvCUch2nXprOcHVg=; b=L1bcoaqS0kLhHMF7Bq0kDlPuaIvTQwtOxzSzZQAZkBPAREqmrAlIjfpWA7YJfnLlOtJGhz dXdW7xUTezQ5BGqJygFe+63Q/GaV38h/hpch2V7qv4q3VUlw9viuVzEAvlTqAeWFN38tNM mQadyYFAaHO14ggql/6LhPEOLsfXqeA= X-MC-Unique: TTywH_EjNfKQ3HdkDu3TNw-1 X-MC-Unique: urB2tXbKOgK5YgFxdBiYJQ-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=T8KitCfX41250Ju706HOnnai84slSx1AMRbilPmSnlo=; b=A8h+NZzku6ma63NQCsoWtegWv/toERq7/vSsMQkiAGXCAayVpmNmZONT7Ey7Wf27ep RlT6sO2px58ay7NOJN9ixXvOssG/o314WaC7a6k/BIkHoDpBATBoCi6pyTW6NcjVBV3l qKX52L/yk9fBjkreRUbmAMYGqTyED3JE4u8vnZHOKL5x3wPHX+fNyYIPmTCBcky+yZS4 TRSJcW4Bxx+1AOSknoI7x89POTU+ueccMp+daGZlnPUDkM8Eu3j8ctbJYLSNO8YfhS61 N7KyR6Rbd/WOGKe8i0qphgFHFHL/S4Uely93ZlJpNfc6OiNscFkeZDBZ7PkJwYFMhKMS uYcw== X-Gm-Message-State: AGi0PuYquef/qrTFdOfK91rti1utvRN+A/9ICguE/jzuB7qLQmY6rWA9 3ouJYZzOK/ckr7cVuKoYQqfGqhInMUo= X-Google-Smtp-Source: APiQypLYPJz8hzNHDWvALe6oydsTOyKyRailLd5L/tisQQTWOJAWlspE3AAkwRd6jLL/N2gnUL0l9g== X-Received: by 2002:a7b:c5d8:: with SMTP id n24mr4937204wmk.158.1587477058145; Tue, 21 Apr 2020 06:50:58 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 40/40] util: convert virStorageSource to GObject Date: Tue, 21 Apr 2020 15:49:21 +0200 Message-Id: <20200421134921.3717019-41-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDp4Gt003698 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/libvirt_private.syms | 1 + src/qemu/qemu_blockjob.c | 67 ++++++++++++++++----------------------- src/qemu/qemu_domain.c | 11 +++---- src/util/virstoragefile.c | 43 ++++++++++++------------- src/util/virstoragefile.h | 6 ++-- 5 files changed, 57 insertions(+), 71 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d96331e633..a5dc53b4f6 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3082,6 +3082,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 38fbba2b90..5aac483724 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -93,10 +93,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); } } @@ -107,10 +107,8 @@ qemuBlockJobDataDispose(GObject *obj) { qemuBlockJobDataPtr job =3D QEMU_BLOCK_JOB_DATA(obj); =20 - virObjectUnref(job->chain); - job->chain =3D NULL; - virObjectUnref(job->mirrorChain); - job->mirrorChain =3D NULL; + g_clear_object(&job->chain); + g_clear_object(&job->mirrorChain); =20 G_OBJECT_CLASS(qemu_block_job_data_parent_class)->dispose(obj); } @@ -197,7 +195,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 @@ -349,9 +347,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; @@ -382,7 +380,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; @@ -411,7 +409,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 */ @@ -700,14 +698,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 @@ -741,8 +737,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= ); @@ -752,7 +747,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); @@ -829,8 +824,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; @@ -942,8 +936,8 @@ qemuBlockJobClearConfigChain(virDomainObjPtr vm, if (!virStorageSourceIsSameLocation(disk->src, cfgdisk->src)) return; =20 - virObjectUnref(cfgdisk->src->backingStore); - cfgdisk->src->backingStore =3D NULL; + if (cfgdisk->src->backingStore) + g_clear_object(&cfgdisk->src->backingStore); } =20 =20 @@ -1009,14 +1003,14 @@ qemuBlockJobProcessEventCompletedPull(virQEMUDriver= Ptr 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 @@ -1183,8 +1177,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; @@ -1195,7 +1188,7 @@ qemuBlockJobProcessEventCompletedCommit(virQEMUDriver= Ptr driver, else cfgdisk->src =3D cfgbase; =20 - virObjectUnref(cfgtop); + g_clear_object(&cfgtop); } } =20 @@ -1261,7 +1254,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 */ @@ -1277,11 +1270,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 @@ -1309,8 +1300,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 @@ -1328,8 +1318,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 @@ -1350,8 +1339,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 @@ -1401,8 +1389,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 a61c16eb2a..be7c6837b5 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1162,8 +1162,7 @@ qemuDomainDiskPrivateDispose(GObject *obj) { qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 - virObjectUnref(priv->migrSource); - priv->migrSource =3D NULL; + g_clear_object(&priv->migrSource); g_clear_object(&priv->blockjob); =20 G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->dispose(obj); @@ -2258,10 +2257,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; @@ -3396,7 +3393,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 0f26a81391..baec1602b4 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, @@ -2682,8 +2696,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 @@ -2712,8 +2725,7 @@ virStorageSourceClear(virStorageSourcePtr def) =20 virStorageSourceSliceFree(def->sliceStorage); =20 - virObjectUnref(def->externalDataStore); - def->externalDataStore =3D NULL; + g_clear_object(&def->externalDataStore); =20 virStorageNetHostDefFree(def->nhosts, def->hosts); virStorageAuthDefFree(def->auth); @@ -2739,34 +2751,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 a744bcbf5c..ce56e8e18e 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 */ @@ -393,7 +393,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.25.3