From nobody Wed May 8 22:05:42 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 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=1571143645; cv=none; d=zoho.com; s=zohoarc; b=PfFPAVKONRm0Q0jN0yIgqFzgL7h+QKwLi5S7WNEOXcTW2RKcCEdqBTveVCULNf0IPuG2+lLKoqvaYoVX0V1ROfcIeQJA6q8bj1/s0AgY4aNt9LpscUzbNF/Mcu16WXikt4QA/t4suPWGBt00Md8XmL9DicctqU/Om8CPIngtNZg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571143645; 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=WUgaQA7IKbpsno0Z+Ux80/XIBj6poEA0a52mM+elKn4=; b=Kgkc4xM2fYjKPJa9KjI59x/jS+B3Oojaot3Kt64fn6RUjsNGu52hHslgmld5uv4W2JAnawEoXPum6jKSsuSTbCw3wZgMTYxps2EP67WZSmdwp/XeXPQTTDmUoLLv9Zeaj4RXnQdIiWG42lfs0rMXWzz40aCXdP+3XHjPxxm8ndY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15711436455861003.3762874089742; Tue, 15 Oct 2019 05:47:25 -0700 (PDT) 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 mx1.redhat.com (Postfix) with ESMTPS id E66F67FDE5; Tue, 15 Oct 2019 12:47: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 B55C66013A; Tue, 15 Oct 2019 12:47: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 72BD21803518; Tue, 15 Oct 2019 12:47:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x9FCh2ku014992 for ; Tue, 15 Oct 2019 08:43:02 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2614C5C559; Tue, 15 Oct 2019 12:43:02 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1F2595C299 for ; Tue, 15 Oct 2019 12:42:59 +0000 (UTC) Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F17D16E77E for ; Tue, 15 Oct 2019 12:42:57 +0000 (UTC) Received: by mail-qk1-f179.google.com with SMTP id u184so19010058qkd.4 for ; Tue, 15 Oct 2019 05:42:57 -0700 (PDT) Received: from rekt.ibmuc.com ([2804:431:c7c7:d25e:a983:2b3:2523:a41]) by smtp.gmail.com with ESMTPSA id l15sm10743217qkj.16.2019.10.15.05.42.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Oct 2019 05:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mGe1gkcYmZNJ9qH2GN6YFslLcW92zJRlnb8IBax7Z3o=; b=ePoP4RUXp5D6MiseFHJvSlEU9inULbgZ2xqEus5Wc0mqkasJG6XKermOwMqJKlRtNo GTph+dr1xoSsDlqQsqov0M0VxDozyPsAcXYCLIfrun5/+Pf+mG1saM1mvxEwlBMcuN9A KadWQ/DiWI1zPNmkl7tfKGKWgYKXvLqdmI9fpFG7U8vdr6bNx0Cuhe6v/gt1aY/fBPkz eC3AGcOngSYi0tB6hemHa0QKp7Lm7PzdJBsCif7ye07iQswAwQZJ0QmQWuxe9+oa512y cYwbTnUYDq59v4eZ36h5LYnjMUxeLAUNO3hd6KxkbhIuc6wdDxldXyAix81dvcYdtMJt NVWg== 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=mGe1gkcYmZNJ9qH2GN6YFslLcW92zJRlnb8IBax7Z3o=; b=Nfdt+sJZLC0t7y2eCJdVwbq+BrLhYbolfxDoXMtQpQ9t8LLs3uxPWQInFCF77+Ojw6 izohHrZGVO06HJY6Elo+P6vbZ0mQR7GsdWAf7rhpdWe8BZVbWj/NPfbedlT3Cp4JAV1l BXhDwLdr6AQ5RxzLv7C/uhP5m4JclvrcN0Z6joNBTQ9MulqCN7foFOkQR2Dbcc6dZHvY Bc0P6BD4lP5L5jISYifG3TQOyaYTzcO651+QcP5uU8azdyNVkSZOHvwuUm4OkvPEoWWs gYGqWsHXdAQBitx/oNB3i6ITnerYe3kd44hyoaqLsmAAh0vtVlFjoWjR6xcvjR3nRtb/ +FQA== X-Gm-Message-State: APjAAAX8xfN6qdIjiYCaCFssaFf2BcHWjwPfMzVsZ6NWH1cnqnKRO5lq lfuLHeKjPTJZUCCrQPG+JRsioc7z X-Google-Smtp-Source: APXvYqy5MsFxn+hjj21zDIs1PwQm806OvAtgc4l6H+qOVWvDcQyr3pE6lNX3YFy8dh3m/0LF/8/rqQ== X-Received: by 2002:a05:620a:2158:: with SMTP id m24mr500912qkm.250.1571143376264; Tue, 15 Oct 2019 05:42:56 -0700 (PDT) From: Daniel Henrique Barboza To: libvir-list@redhat.com Date: Tue, 15 Oct 2019 09:42:46 -0300 Message-Id: <20191015124246.27071-2-danielhb413@gmail.com> In-Reply-To: <20191015124246.27071-1-danielhb413@gmail.com> References: <20191015124246.27071-1-danielhb413@gmail.com> MIME-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 15 Oct 2019 12:42:58 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 15 Oct 2019 12:42:58 +0000 (UTC) for IP:'209.85.222.179' DOMAIN:'mail-qk1-f179.google.com' HELO:'mail-qk1-f179.google.com' FROM:'danielhb413@gmail.com' RCPT:'' X-RedHat-Spam-Score: 0.15 (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS) 209.85.222.179 mail-qk1-f179.google.com 209.85.222.179 mail-qk1-f179.google.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: Daniel Henrique Barboza Subject: [libvirt] [RFC 1/1] util: convert virStorageSource class to use GObject X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 15 Oct 2019 12:47:24 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Following up the directions provided in commit 16121a88a7, this patch converts virStorageSource to use GObject. All calls to virObjectRef were converted to g_object_ref. Calls to virObjectUnref were changed to use either g_object_unref or g_clear_object, depending on the context. Signed-off-by: Daniel Henrique Barboza --- src/conf/domain_conf.c | 13 ++--- src/conf/snapshot_conf.c | 3 +- src/qemu/qemu_blockjob.c | 43 ++++++-------- src/qemu/qemu_domain.c | 6 +- src/qemu/qemu_driver.c | 14 ++--- src/qemu/qemu_hotplug.c | 3 +- src/qemu/qemu_migration.c | 2 +- src/storage/storage_backend_gluster.c | 2 +- src/storage/storage_util.c | 4 +- src/util/virstoragefile.c | 84 +++++++++++++-------------- src/util/virstoragefile.h | 9 ++- tests/qemublocktest.c | 6 +- tests/virstoragetest.c | 12 ++-- 13 files changed, 98 insertions(+), 103 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c1705a07b6..71888ebaf0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2097,10 +2097,10 @@ virDomainDiskDefFree(virDomainDiskDefPtr def) if (!def) return; =20 - virObjectUnref(def->src); + g_clear_object(&def->src); VIR_FREE(def->serial); VIR_FREE(def->dst); - virObjectUnref(def->mirror); + g_clear_object(&def->mirror); VIR_FREE(def->wwn); VIR_FREE(def->driverName); VIR_FREE(def->vendor); @@ -2312,7 +2312,7 @@ void virDomainFSDefFree(virDomainFSDefPtr def) if (!def) return; =20 - virObjectUnref(def->src); + g_object_unref(def->src); VIR_FREE(def->dst); virDomainDeviceInfoClear(&def->info); VIR_FREE(def->virtio); @@ -2896,8 +2896,7 @@ virDomainHostdevSubsysSCSIiSCSIClear(virDomainHostdev= SubsysSCSIiSCSIPtr iscsisrc if (!iscsisrc) return; =20 - virObjectUnref(iscsisrc->src); - iscsisrc->src =3D NULL; + g_clear_object(&iscsisrc->src); } =20 =20 @@ -9276,7 +9275,7 @@ virDomainStorageSourceParseBase(const char *type, const char *format, const char *index) { - VIR_AUTOUNREF(virStorageSourcePtr) src =3D NULL; + g_autoptr(virStorageSource) src =3D NULL; virStorageSourcePtr ret =3D NULL; =20 if (!(src =3D virStorageSourceNew())) @@ -9402,7 +9401,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctx= t, { VIR_XPATH_NODE_AUTORESTORE(ctxt); xmlNodePtr source; - VIR_AUTOUNREF(virStorageSourcePtr) backingStore =3D NULL; + g_autoptr(virStorageSource) backingStore =3D NULL; VIR_AUTOFREE(char *) type =3D NULL; VIR_AUTOFREE(char *) format =3D NULL; VIR_AUTOFREE(char *) idx =3D NULL; diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index a77f521302..cb85d147b8 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -94,8 +94,7 @@ static void virDomainSnapshotDiskDefClear(virDomainSnapshotDiskDefPtr disk) { VIR_FREE(disk->name); - virObjectUnref(disk->src); - disk->src =3D NULL; + g_clear_object(&disk->src); } =20 void diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index c118f2c298..5bac0ec976 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -76,11 +76,11 @@ qemuBlockJobDataDispose(void *obj) { qemuBlockJobDataPtr job =3D obj; =20 - virObjectUnref(job->chain); - virObjectUnref(job->mirrorChain); + g_clear_object(&job->chain); + g_clear_object(&job->mirrorChain); =20 if (job->type =3D=3D QEMU_BLOCKJOB_TYPE_CREATE) - virObjectUnref(job->data.create.src); + g_clear_object(&job->data.create.src); =20 VIR_FREE(job->name); VIR_FREE(job->errmsg); @@ -156,7 +156,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 virObjectRef(job); } =20 @@ -304,9 +304,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; @@ -337,7 +337,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; @@ -595,7 +595,7 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr vm, virStorageSourcePtr newsrc) { virDomainDiskDefPtr persistDisk =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) copy =3D NULL; + g_autoptr(virStorageSource) copy =3D NULL; virStorageSourcePtr n; =20 if (!vm->newDef) @@ -626,7 +626,7 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr vm, } } =20 - virObjectUnref(persistDisk->src); + g_object_unref(persistDisk->src); VIR_STEAL_PTR(persistDisk->src, copy); } =20 @@ -661,7 +661,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPt= r driver, disk->dst); } =20 - virObjectUnref(disk->src); + g_object_unref(disk->src); disk->src =3D disk->mirror; } else { virStorageSourcePtr n; @@ -682,7 +682,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPt= r driver, } } =20 - virObjectUnref(disk->mirror); + g_object_unref(disk->mirror); } =20 for (n =3D disk->src; virStorageSourceIsBacking(n); n =3D n->backi= ngStore) { @@ -777,8 +777,7 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver, } } =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; @@ -957,14 +956,14 @@ qemuBlockJobProcessEventCompletedPull(virQEMUDriverPt= r driver, if (baseparent) baseparent->backingStore =3D NULL; qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, tmp= ); - virObjectUnref(tmp); + g_object_unref(tmp); =20 if (cfgdisk) { tmp =3D cfgdisk->src->backingStore; cfgdisk->src->backingStore =3D cfgbase; if (cfgbaseparent) cfgbaseparent->backingStore =3D NULL; - virObjectUnref(tmp); + g_object_unref(tmp); } } =20 @@ -1126,8 +1125,7 @@ qemuBlockJobProcessEventCompletedActiveCommit(virQEMU= DriverPtr driver, virObjectUnref(job->data.commit.top); job->data.commit.top =3D NULL; /* 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 @@ -1153,7 +1151,7 @@ qemuBlockJobProcessEventConcludedCopyPivot(virQEMUDri= verPtr driver, qemuBlockJobRewriteConfigDiskSource(vm, job->disk, job->disk->mirror); =20 qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, job= ->disk->src); - virObjectUnref(job->disk->src); + g_object_unref(job->disk->src); VIR_STEAL_PTR(job->disk->src, job->disk->mirror); } =20 @@ -1170,8 +1168,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 @@ -1201,8 +1198,7 @@ qemuBlockJobProcessEventFailedActiveCommit(virQEMUDri= verPtr driver, } } =20 - virObjectUnref(disk->mirror); - disk->mirror =3D NULL; + g_clear_object(&disk->mirror); } =20 =20 @@ -1218,8 +1214,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 35067c851f..8f97db3db6 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3015,7 +3015,7 @@ qemuDomainObjPrivateXMLParseBlockjobChain(xmlNodePtr = node, VIR_AUTOFREE(char *) format =3D NULL; VIR_AUTOFREE(char *) type =3D NULL; VIR_AUTOFREE(char *) index =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) src =3D NULL; + g_autoptr(virStorageSource) src =3D NULL; xmlNodePtr sourceNode; unsigned int xmlflags =3D VIR_DOMAIN_DEF_PARSE_STATUS; =20 @@ -3220,7 +3220,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; } @@ -3313,7 +3313,7 @@ qemuDomainObjPrivateXMLParseJobNBDSource(xmlNodePtr n= ode, qemuDomainDiskPrivatePtr diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(disk); VIR_AUTOFREE(char *) format =3D NULL; VIR_AUTOFREE(char *) type =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) migrSource =3D NULL; + g_autoptr(virStorageSource) migrSource =3D NULL; xmlNodePtr sourceNode; =20 ctxt->node =3D node; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bc0ede2fb0..237b205fef 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -255,7 +255,7 @@ qemuSecurityChownCallback(const virStorageSource *src, int save_errno =3D 0; int ret =3D -1; int rv; - VIR_AUTOUNREF(virStorageSourcePtr) cpy =3D NULL; + g_autoptr(virStorageSource) cpy =3D NULL; =20 rv =3D virStorageFileSupportsSecurityDriver(src); if (rv <=3D 0) @@ -15424,9 +15424,9 @@ qemuDomainSnapshotDiskCleanup(qemuDomainSnapshotDis= kDataPtr data, if (data[i].prepared) qemuDomainStorageSourceAccessRevoke(driver, vm, data[i].sr= c); =20 - virObjectUnref(data[i].src); + g_object_unref(data[i].src); } - virObjectUnref(data[i].persistsrc); + g_object_unref(data[i].persistsrc); VIR_FREE(data[i].relPath); qemuBlockStorageSourceChainDataFree(data[i].crdata); } @@ -15450,7 +15450,7 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr d= river, qemuDomainObjPrivatePtr priv =3D vm->privateData; char *backingStoreStr; virDomainDiskDefPtr persistdisk; - VIR_AUTOUNREF(virStorageSourcePtr) terminator =3D NULL; + g_autoptr(virStorageSource) terminator =3D NULL; bool supportsCreate; bool supportsBacking; int rc; @@ -18212,7 +18212,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, bool mirror_shallow =3D !!(flags & VIR_DOMAIN_BLOCK_COPY_SHALLOW); bool existing =3D mirror_reuse; qemuBlockJobDataPtr job =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) mirror =3D mirrorsrc; + g_autoptr(virStorageSource) mirror =3D mirrorsrc; bool blockdev =3D virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV); bool mirror_initialized =3D false; VIR_AUTOPTR(qemuBlockStorageSourceChainData) data =3D NULL; @@ -18485,7 +18485,7 @@ qemuDomainBlockRebase(virDomainPtr dom, const char = *path, const char *base, virDomainObjPtr vm; int ret =3D -1; unsigned long long speed =3D bandwidth; - VIR_AUTOUNREF(virStorageSourcePtr) dest =3D NULL; + g_autoptr(virStorageSource) dest =3D NULL; =20 virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW | VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | @@ -18690,7 +18690,7 @@ qemuDomainBlockCommit(virDomainPtr dom, VIR_AUTOFREE(char *) backingPath =3D NULL; unsigned long long speed =3D bandwidth; qemuBlockJobDataPtr job =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) mirror =3D NULL; + g_autoptr(virStorageSource) mirror =3D NULL; const char *nodetop =3D NULL; const char *nodebase =3D NULL; bool persistjob =3D false; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index e9285f0964..674afb7247 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -636,8 +636,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, olds= rc)); =20 /* media was changed, so we can remove the old media definition now */ - virObjectUnref(oldsrc); - oldsrc =3D NULL; + g_clear_object(&oldsrc); disk->src =3D newsrc; =20 ret =3D 0; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a98ec2d55a..a21e1f8e01 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -797,7 +797,7 @@ qemuMigrationSrcNBDStorageCopyBlockdev(virQEMUDriverPtr= driver, VIR_AUTOPTR(qemuBlockStorageSourceAttachData) data =3D NULL; qemuDomainDiskPrivatePtr diskPriv =3D QEMU_DOMAIN_DISK_PRIVATE(disk); int mon_ret =3D 0; - VIR_AUTOUNREF(virStorageSourcePtr) copysrc =3D NULL; + g_autoptr(virStorageSource) copysrc =3D NULL; =20 VIR_DEBUG("starting blockdev mirror for disk=3D%s to host=3D%s", diskA= lias, host); =20 diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_ba= ckend_gluster.c index 5955d834d9..8cb822f0cf 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -239,7 +239,7 @@ virStorageBackendGlusterRefreshVol(virStorageBackendGlu= sterStatePtr state, ssize_t len; int backingFormat; VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) meta =3D NULL; + g_autoptr(virStorageSourcePtr) meta =3D NULL; VIR_AUTOFREE(char *) header =3D NULL; =20 *volptr =3D NULL; diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index be084119f4..c5aab148f2 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -3359,7 +3359,7 @@ storageBackendProbeTarget(virStorageSourcePtr target, int backingStoreFormat; int rc; struct stat sb; - VIR_AUTOUNREF(virStorageSourcePtr) meta =3D NULL; + g_autoptr(virStorageSource) meta =3D NULL; VIR_AUTOCLOSE fd =3D -1; =20 if (encryption) @@ -3529,7 +3529,7 @@ virStorageBackendRefreshLocal(virStoragePoolObjPtr po= ol) int ret =3D -1; VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; VIR_AUTOCLOSE fd =3D -1; - VIR_AUTOUNREF(virStorageSourcePtr) target =3D NULL; + g_autoptr(virStorageSource) target =3D NULL; =20 if (virDirOpen(&dir, def->target.path) < 0) goto cleanup; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 497ade927e..568e310290 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -47,7 +47,38 @@ =20 VIR_LOG_INIT("util.storagefile"); =20 -static virClassPtr virStorageSourceClass; +G_DEFINE_TYPE(virStorageSource, vir_storagesource, G_TYPE_OBJECT) + +static void vir_storagesource_init(virStorageSource *ident G_GNUC_UNUSED) +{ +} + + +static void +virStorageSourceFinalize(GObject *obj) +{ + virStorageSourcePtr src =3D VIR_STORAGESOURCE(obj); + + virStorageSourceClear(src); + + G_OBJECT_CLASS(vir_storagesource_parent_class)->finalize(obj); +} + + +static void vir_storagesource_class_init(virStorageSourceClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D virStorageSourceFinalize; +} + + +virStorageSourcePtr +virStorageSourceNew(void) +{ + return VIR_STORAGESOURCE(g_object_new(VIR_TYPE_STORAGESOURCE, NULL)); +} + =20 VIR_ENUM_IMPL(virStorage, VIR_STORAGE_TYPE_LAST, @@ -1129,7 +1160,7 @@ static virStorageSourcePtr virStorageFileMetadataNew(const char *path, int format) { - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; virStorageSourcePtr ret =3D NULL; =20 if (!(def =3D virStorageSourceNew())) @@ -1219,7 +1250,7 @@ virStorageFileGetMetadataFromFD(const char *path, struct stat sb; int dummy; VIR_AUTOFREE(char *) buf =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) meta =3D NULL; + g_autoptr(virStorageSource) meta =3D NULL; =20 if (!backingFormat) backingFormat =3D &dummy; @@ -2251,7 +2282,7 @@ virStorageSourceCopy(const virStorageSource *src, bool backingChain) { virStorageSourcePtr ret =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; =20 if (!(def =3D virStorageSourceNew())) return NULL; @@ -2591,37 +2622,6 @@ virStorageSourceClear(virStorageSourcePtr def) } =20 =20 -static void -virStorageSourceDispose(void *obj) -{ - virStorageSourcePtr src =3D obj; - - virStorageSourceClear(src); -} - - -static int -virStorageSourceOnceInit(void) -{ - if (!VIR_CLASS_NEW(virStorageSource, virClassForObject())) - return -1; - - return 0; -} - - -VIR_ONCE_GLOBAL_INIT(virStorageSource); - - -virStorageSourcePtr -virStorageSourceNew(void) -{ - if (virStorageSourceInitialize() < 0) - return NULL; - - return virObjectNew(virStorageSourceClass); -} - =20 static virStorageSourcePtr virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent, @@ -2629,7 +2629,7 @@ virStorageSourceNewFromBackingRelative(virStorageSour= cePtr parent, { virStorageSourcePtr ret =3D NULL; VIR_AUTOFREE(char *) dirname =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; =20 if (!(def =3D virStorageSourceNew())) return NULL; @@ -3681,7 +3681,7 @@ virStorageSourceNewFromBackingAbsolute(const char *pa= th, { const char *json; int rc =3D 0; - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; =20 *src =3D NULL; =20 @@ -3748,7 +3748,7 @@ virStorageSourceNewFromChild(virStorageSourcePtr pare= nt, virStorageSourcePtr *child) { struct stat st; - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; int rc =3D 0; =20 *child =3D NULL; @@ -3948,7 +3948,7 @@ virStorageSourceUpdateCapacity(virStorageSourcePtr sr= c, bool probe) { int format =3D src->format; - VIR_AUTOUNREF(virStorageSourcePtr) meta =3D NULL; + g_autoptr(virStorageSource) meta =3D NULL; =20 /* Raw files: capacity is physical size. For all other files: if * the metadata has a capacity, use that, otherwise fall back to @@ -4943,7 +4943,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr = src, int backingFormat; int rv; VIR_AUTOFREE(char *) buf =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) backingStore =3D NULL; + g_autoptr(virStorageSource) backingStore =3D NULL; =20 VIR_DEBUG("path=3D%s format=3D%d uid=3D%u gid=3D%u", src->path, src->format, @@ -5028,7 +5028,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr = src, VIR_STEAL_PTR(src->backingStore, backingStore); =20 if (src->externalDataStoreRaw) { - VIR_AUTOUNREF(virStorageSourcePtr) externalDataStore =3D NULL; + g_autoptr(virStorageSource) externalDataStore =3D NULL; =20 if ((rv =3D virStorageSourceNewFromExternalData(src, &externalDataStore))= < 0) @@ -5121,7 +5121,7 @@ virStorageFileGetBackingStoreStr(virStorageSourcePtr = src, ssize_t headerLen; int rv; VIR_AUTOFREE(char *) buf =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) tmp =3D NULL; + g_autoptr(virStorageSource) tmp =3D NULL; =20 *backing =3D NULL; =20 diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index cfee047e6f..b4eca6448d 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -21,8 +21,10 @@ =20 #pragma once =20 +#include #include =20 +#include "internal.h" #include "virbitmap.h" #include "virobject.h" #include "virseclabel.h" @@ -234,7 +236,9 @@ struct _virStorageSourceInitiatorDef { typedef struct _virStorageDriverData virStorageDriverData; typedef virStorageDriverData *virStorageDriverDataPtr; =20 -typedef struct _virStorageSource virStorageSource; +#define VIR_TYPE_STORAGESOURCE vir_storagesource_get_type() +G_DECLARE_FINAL_TYPE(virStorageSource, vir_storagesource, VIR, STORAGESOUR= CE, GObject); + typedef virStorageSource *virStorageSourcePtr; =20 /* Stores information related to a host resource. In the case of backing @@ -243,7 +247,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 */ @@ -344,7 +348,6 @@ struct _virStorageSource { bool hostcdrom; /* backing device is a cdrom */ }; =20 -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageSource, virObjectUnref); =20 =20 #ifndef DEV_BSIZE diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c index bb0579056e..cd4d0edf45 100644 --- a/tests/qemublocktest.c +++ b/tests/qemublocktest.c @@ -54,8 +54,8 @@ testBackingXMLjsonXML(const void *args) VIR_AUTOFREE(char *) propsstr =3D NULL; VIR_AUTOFREE(char *) protocolwrapper =3D NULL; VIR_AUTOFREE(char *) actualxml =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) xmlsrc =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) jsonsrc =3D NULL; + g_autoptr(virStorageSource) xmlsrc =3D NULL; + g_autoptr(virStorageSource) jsonsrc =3D NULL; =20 if (!(xmlsrc =3D virStorageSourceNew())) return -1; @@ -400,7 +400,7 @@ testQemuImageCreate(const void *opaque) struct testQemuImageCreateData *data =3D (void *) opaque; VIR_AUTOPTR(virJSONValue) protocolprops =3D NULL; VIR_AUTOPTR(virJSONValue) formatprops =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) src =3D NULL; + g_autoptr(virStorageSource) src =3D NULL; VIR_AUTOCLEAN(virBuffer) debug =3D VIR_BUFFER_INITIALIZER; VIR_AUTOCLEAN(virBuffer) actualbuf =3D VIR_BUFFER_INITIALIZER; VIR_AUTOFREE(char *) jsonprotocol =3D NULL; diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index 8ebad89da7..f178e66781 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -86,7 +86,7 @@ testStorageFileGetMetadata(const char *path, { struct stat st; virStorageSourcePtr ret =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; + g_autoptr(virStorageSource) def =3D NULL; =20 if (!(def =3D virStorageSourceNew())) return NULL; @@ -278,7 +278,7 @@ testStorageChain(const void *args) const struct testChainData *data =3D args; virStorageSourcePtr elt; size_t i =3D 0; - VIR_AUTOUNREF(virStorageSourcePtr) meta =3D NULL; + g_autoptr(virStorageSource) meta =3D NULL; VIR_AUTOFREE(char *) broken =3D NULL; =20 meta =3D testStorageFileGetMetadata(data->start, data->format, -1, -1); @@ -612,7 +612,7 @@ testBackingParse(const void *args) const struct testBackingParseData *data =3D args; VIR_AUTOCLEAN(virBuffer) buf =3D VIR_BUFFER_INITIALIZER; VIR_AUTOFREE(char *) xml =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) src =3D NULL; + g_autoptr(virStorageSource) src =3D NULL; int rc; int erc =3D data->rv; =20 @@ -664,7 +664,7 @@ mymain(void) virStorageSourcePtr chain2; /* short for chain->backingStore */ virStorageSourcePtr chain3; /* short for chain2->backingStore */ VIR_AUTOPTR(virCommand) cmd =3D NULL; - VIR_AUTOUNREF(virStorageSourcePtr) chain =3D NULL; + g_autoptr(virStorageSource) chain =3D NULL; =20 if (storageRegisterAll() < 0) return EXIT_FAILURE; @@ -1056,7 +1056,7 @@ mymain(void) ret =3D -1; =20 /* Test behavior of chain lookups, relative backing from absolute star= t */ - virObjectUnref(chain); + g_object_unref(chain); chain =3D testStorageFileGetMetadata(abswrap, VIR_STORAGE_FILE_QCOW2, = -1, -1); if (!chain) { ret =3D -1; @@ -1102,7 +1102,7 @@ mymain(void) ret =3D -1; =20 /* Test behavior of chain lookups, relative backing */ - virObjectUnref(chain); + g_object_unref(chain); chain =3D testStorageFileGetMetadata("sub/link2", VIR_STORAGE_FILE_QCO= W2, -1, -1); if (!chain) { --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list