From nobody Mon Feb 9 08:53:46 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1557354264; cv=none; d=zoho.com; s=zohoarc; b=Xy9XsWKUoQ3nsZG/IAB2lwPUev5VxG6hxCi06FqEoyes0ckkl+1ydUv0n2xESdOBCti/tADWVji/+rbLQrWusjNfCFLIWpH1nF/uaQ/lRFUiwpFLBqwsA+YvuMMENrUyG7CSbIHuSDH1ueGkPfGV8HOVxW01cfB0VuMwCFV/ch0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557354264; h=Content-Type:Content-Transfer-Encoding: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:ARC-Authentication-Results; bh=oxUbwviBOVzp5Zizy5K05hDSMe4L48QM3Q99YGyVHfY=; b=BmEAQ//Q2ZmHS72duZq4bsmD+aLyzv7ccUQRVytgkysDR/U0dsBzk2c6KniOz/SOMkfBXyiPEv5I5PwlMsIfKCxG7pQXh6EIso5JnNzojwUNTJw1OnnDrGfbWdzXJ33dgTHFcooIP0pD3PztsWwRSjzTxaCxjTiakvuyFJXR7fM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass 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 1557354264220316.1302481643878; Wed, 8 May 2019 15:24:24 -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 1279D30018C0; Wed, 8 May 2019 22:24: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 4BA71600CC; Wed, 8 May 2019 22:24:20 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7E3DC18089CB; Wed, 8 May 2019 22:24:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x48MOFta021444 for ; Wed, 8 May 2019 18:24:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id BC8CC60C98; Wed, 8 May 2019 22:24:15 +0000 (UTC) Received: from blue.redhat.com (ovpn-116-15.phx2.redhat.com [10.3.116.15]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E95860C93 for ; Wed, 8 May 2019 22:24:15 +0000 (UTC) From: Eric Blake To: libvir-list@redhat.com Date: Wed, 8 May 2019 17:24:09 -0500 Message-Id: <20190508222412.11811-2-eblake@redhat.com> In-Reply-To: <20190508222412.11811-1-eblake@redhat.com> References: <20190508222412.11811-1-eblake@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/4] snapshot: s/parent/parent_name/ as prep for virObject 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.46]); Wed, 08 May 2019 22:24:22 +0000 (UTC) Content-Type: text/plain; charset="utf-8" VIR_CLASS_NEW insists that descendents of virObject have 'parent' as the name of their inherited member at offset 0. While it would be possible to write a new class-creation macro that takes the actual field name, and rewrite VIR_CLASS_NEW to call the new macro with the hard-coded name 'parent', so that we could make virDomainMomentDef use a custom name for its base class, it seems less confusing if all object code uses similar naming. Thus, this is a mechanical rename in preparation of making virDomainSnapshotDef a descendent of virObject, when we can no longer use 'parent' for a different purpose than the base class. Signed-off-by: Eric Blake --- src/conf/moment_conf.h | 2 +- src/conf/moment_conf.c | 2 +- src/conf/snapshot_conf.c | 22 ++++++++++++---------- src/conf/virdomainmomentobjlist.c | 4 ++-- src/esx/esx_driver.c | 2 +- src/qemu/qemu_domain.c | 8 ++++---- src/qemu/qemu_driver.c | 12 ++++++------ src/test/test_driver.c | 18 +++++++++--------- src/vbox/vbox_common.c | 14 +++++++------- src/vz/vz_sdk.c | 2 +- 10 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/conf/moment_conf.h b/src/conf/moment_conf.h index e06a4a7b3c..04e0c0648b 100644 --- a/src/conf/moment_conf.h +++ b/src/conf/moment_conf.h @@ -31,7 +31,7 @@ struct _virDomainMomentDef { /* Common portion of public XML. */ char *name; char *description; - char *parent; + char *parent_name; long long creationTime; /* in seconds */ virDomainDefPtr dom; diff --git a/src/conf/moment_conf.c b/src/conf/moment_conf.c index 0eb32eeb52..9829775b3c 100644 --- a/src/conf/moment_conf.c +++ b/src/conf/moment_conf.c @@ -38,7 +38,7 @@ void virDomainMomentDefClear(virDomainMomentDefPtr def) { VIR_FREE(def->name); VIR_FREE(def->description); - VIR_FREE(def->parent); + VIR_FREE(def->parent_name); virDomainDefFree(def->dom); } diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index eaa9b3c5e6..b571c5cc41 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -227,7 +227,7 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt, goto cleanup; } - def->common.parent =3D virXPathString("string(./parent/name)", ctx= t); + def->common.parent_name =3D virXPathString("string(./parent/name)"= , ctxt); state =3D virXPathString("string(./state)", ctxt); if (state =3D=3D NULL) { @@ -809,10 +809,11 @@ virDomainSnapshotDefFormatInternal(virBufferPtr buf, virBufferAsprintf(buf, "%s\n", virDomainSnapshotStateTypeToString(def->state)); - if (def->common.parent) { + if (def->common.parent_name) { virBufferAddLit(buf, "\n"); virBufferAdjustIndent(buf, 2); - virBufferEscapeString(buf, "%s\n", def->common.parent= ); + virBufferEscapeString(buf, "%s\n", + def->common.parent_name); virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); } @@ -932,30 +933,31 @@ virDomainSnapshotRedefinePrep(virDomainPtr domain, bool check_if_stolen; /* Prevent circular chains */ - if (def->common.parent) { - if (STREQ(def->common.name, def->common.parent)) { + if (def->common.parent_name) { + if (STREQ(def->common.name, def->common.parent_name)) { virReportError(VIR_ERR_INVALID_ARG, _("cannot set snapshot %s as its own parent"), def->common.name); return -1; } - other =3D virDomainSnapshotFindByName(vm->snapshots, def->common.p= arent); + other =3D virDomainSnapshotFindByName(vm->snapshots, + def->common.parent_name); if (!other) { virReportError(VIR_ERR_INVALID_ARG, _("parent %s for snapshot %s not found"), - def->common.parent, def->common.name); + def->common.parent_name, def->common.name); return -1; } otherdef =3D virDomainSnapshotObjGetDef(other); - while (otherdef->common.parent) { - if (STREQ(otherdef->common.parent, def->common.name)) { + while (otherdef->common.parent_name) { + if (STREQ(otherdef->common.parent_name, def->common.name)) { virReportError(VIR_ERR_INVALID_ARG, _("parent %s would create cycle to %s"), otherdef->common.name, def->common.name); return -1; } other =3D virDomainSnapshotFindByName(vm->snapshots, - otherdef->common.parent); + otherdef->common.parent_na= me); if (!other) { VIR_WARN("snapshots are inconsistent for %s", vm->def->name); diff --git a/src/conf/virdomainmomentobjlist.c b/src/conf/virdomainmomentob= jlist.c index 7f90632a53..e9df66c65b 100644 --- a/src/conf/virdomainmomentobjlist.c +++ b/src/conf/virdomainmomentobjlist.c @@ -464,7 +464,7 @@ virDomainMomentForEach(virDomainMomentObjListPtr moment= s, /* Struct and callback function used as a hash table callback; each call - * inspects the pre-existing moment->def->parent field, and adjusts + * inspects the pre-existing moment->def->parent_name field, and adjusts * the moment->parent field as well as the parent's child fields to * wire up the hierarchical relations for the given moment. The error * indicator gets set if a parent is missing or a requested parent would @@ -483,7 +483,7 @@ virDomainMomentSetRelations(void *payload, virDomainMomentObjPtr tmp; virDomainMomentObjPtr parent; - parent =3D virDomainMomentFindByName(curr->moments, obj->def->parent); + parent =3D virDomainMomentFindByName(curr->moments, obj->def->parent_n= ame); if (!parent) { curr->err =3D -1; parent =3D &curr->moments->metaroot; diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index d80fef0a58..dff801f946 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -4191,7 +4191,7 @@ esxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snap= shot, def.common.name =3D snapshot->name; def.common.description =3D snapshotTree->description; - def.common.parent =3D snapshotTreeParent ? snapshotTreeParent->name : = NULL; + def.common.parent_name =3D snapshotTreeParent ? snapshotTreeParent->na= me : NULL; if (esxVI_DateTime_ConvertToCalendarTime(snapshotTree->createTime, &def.common.creationTime) < 0= ) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index db67fe2193..6b16da2998 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8606,19 +8606,19 @@ qemuDomainSnapshotDiscard(virQEMUDriverPtr driver, if (snap =3D=3D virDomainSnapshotGetCurrent(vm->snapshots)) { virDomainSnapshotSetCurrent(vm->snapshots, NULL); - if (update_parent && snap->def->parent) { + if (update_parent && snap->def->parent_name) { parentsnap =3D virDomainSnapshotFindByName(vm->snapshots, - snap->def->parent); + snap->def->parent_nam= e); if (!parentsnap) { VIR_WARN("missing parent snapshot matching name '%s'", - snap->def->parent); + snap->def->parent_name); } else { virDomainSnapshotSetCurrent(vm->snapshots, parentsnap); if (qemuDomainSnapshotWriteMetadata(vm, parentsnap, driver= ->caps, driver->xmlopt, cfg->snapshotDir) < 0)= { VIR_WARN("failed to set parent snapshot '%s' as curren= t", - snap->def->parent); + snap->def->parent_name); virDomainSnapshotSetCurrent(vm->snapshots, NULL); } } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 27be173e46..c12b3dff6c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15752,7 +15752,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, current =3D virDomainSnapshotGetCurrent(vm->snapshots); if (current) { if (!redefine && - VIR_STRDUP(snap->def->parent, current->def->name) < 0) + VIR_STRDUP(snap->def->parent_name, current->def->name) < 0) goto endjob; if (update_current) { virDomainSnapshotSetCurrent(vm->snapshots, NULL); @@ -15820,7 +15820,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, virDomainSnapshotObjListRemove(vm->snapshots, snap); } else { other =3D virDomainSnapshotFindByName(vm->snapshots, - snap->def->parent); + snap->def->parent_name); virDomainMomentSetParent(snap, other); } } else if (snap) { @@ -16080,14 +16080,14 @@ qemuDomainSnapshotGetParent(virDomainSnapshotPtr = snapshot, if (!(snap =3D qemuSnapObjFromSnapshot(vm, snapshot))) goto cleanup; - if (!snap->def->parent) { + if (!snap->def->parent_name) { virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT, _("snapshot '%s' does not have a parent"), snap->def->name); goto cleanup; } - parent =3D virGetDomainSnapshot(snapshot->domain, snap->def->parent); + parent =3D virGetDomainSnapshot(snapshot->domain, snap->def->parent_na= me); cleanup: virDomainObjEndAPI(&vm); @@ -16668,10 +16668,10 @@ qemuDomainMomentReparentChildren(void *payload, if (rep->err < 0) return 0; - VIR_FREE(moment->def->parent); + VIR_FREE(moment->def->parent_name); if (rep->parent->def && - VIR_STRDUP(moment->def->parent, rep->parent->def->name) < 0) { + VIR_STRDUP(moment->def->parent_name, rep->parent->def->name) < 0) { rep->err =3D -1; return 0; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 460c896ef6..626167f947 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -6195,14 +6195,14 @@ testDomainSnapshotGetParent(virDomainSnapshotPtr sn= apshot, if (!(snap =3D testSnapObjFromSnapshot(vm, snapshot))) goto cleanup; - if (!snap->def->parent) { + if (!snap->def->parent_name) { virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT, _("snapshot '%s' does not have a parent"), snap->def->name); goto cleanup; } - parent =3D virGetDomainSnapshot(snapshot->domain, snap->def->parent); + parent =3D virGetDomainSnapshot(snapshot->domain, snap->def->parent_na= me); cleanup: virDomainObjEndAPI(&vm); @@ -6421,7 +6421,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain, } if (!redefine) { - if (VIR_STRDUP(snap->def->parent, + if (VIR_STRDUP(snap->def->parent_name, virDomainSnapshotGetCurrentName(vm->snapshots)) < 0) goto cleanup; @@ -6442,7 +6442,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain, if (update_current) virDomainSnapshotSetCurrent(vm->snapshots, snap); other =3D virDomainSnapshotFindByName(vm->snapshots, - snap->def->parent); + snap->def->parent_name); virDomainMomentSetParent(snap, other); } virDomainObjEndAPI(&vm); @@ -6491,10 +6491,10 @@ testDomainSnapshotReparentChildren(void *payload, if (rep->err < 0) return 0; - VIR_FREE(snap->def->parent); + VIR_FREE(snap->def->parent_name); if (rep->parent->def && - VIR_STRDUP(snap->def->parent, rep->parent->def->name) < 0) { + VIR_STRDUP(snap->def->parent_name, rep->parent->def->name) < 0) { rep->err =3D -1; return 0; } @@ -6549,12 +6549,12 @@ testDomainSnapshotDelete(virDomainSnapshotPtr snaps= hot, } else { virDomainMomentDropParent(snap); if (snap =3D=3D virDomainSnapshotGetCurrent(vm->snapshots)) { - if (snap->def->parent) { + if (snap->def->parent_name) { parentsnap =3D virDomainSnapshotFindByName(vm->snapshots, - snap->def->parent= ); + snap->def->parent= _name); if (!parentsnap) VIR_WARN("missing parent snapshot matching name '%s'", - snap->def->parent); + snap->def->parent_name); } virDomainSnapshotSetCurrent(vm->snapshots, parentsnap); } diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 7a491b0b5f..94830f5ddb 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -5061,7 +5061,7 @@ vboxSnapshotRedefine(virDomainPtr dom, VIR_FREE(tmp); } - if (virVBoxSnapshotConfAddSnapshotToXmlMachine(newSnapshotPtr, snapsho= tMachineDesc, def->common.parent) < 0) { + if (virVBoxSnapshotConfAddSnapshotToXmlMachine(newSnapshotPtr, snapsho= tMachineDesc, def->common.parent_name) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to add the snapshot to the machine descri= ption")); goto cleanup; @@ -6305,7 +6305,7 @@ static char *vboxDomainSnapshotGetXMLDesc(virDomainSn= apshotPtr snapshot, } VBOX_UTF16_TO_UTF8(str16, &str8); VBOX_UTF16_FREE(str16); - if (VIR_STRDUP(def->common.parent, str8) < 0) { + if (VIR_STRDUP(def->common.parent_name, str8) < 0) { VBOX_UTF8_FREE(str8); goto cleanup; } @@ -6999,7 +6999,7 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapsho= tPtr snapshot) * disks. The first thing to do is to manipulate VirtualBox API to= create * differential read-write disks if the parent snapshot is not nul= l. */ - if (def->common.parent !=3D NULL) { + if (def->common.parent_name !=3D NULL) { for (it =3D 0; it < def->common.dom->ndisks; it++) { virVBoxSnapshotConfHardDiskPtr readOnly =3D NULL; IMedium *medium =3D NULL; @@ -7058,7 +7058,7 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapsho= tPtr snapshot) VBOX_UTF8_TO_UTF16("VDI", &formatUtf16); if (virAsprintf(&newLocationUtf8, "%sfakedisk-%s-%d.vdi", - machineLocationPath, def->common.parent, i= t) < 0) + machineLocationPath, def->common.parent_na= me, it) < 0) goto cleanup; VBOX_UTF8_TO_UTF16(newLocationUtf8, &newLocation); rc =3D gVBoxAPI.UIVirtualBox.CreateHardDisk(data->vboxObj, @@ -7209,7 +7209,7 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapsho= tPtr snapshot) } } /*If the parent snapshot is not NULL, we remove the-read only disks fr= om the media registry*/ - if (def->common.parent !=3D NULL) { + if (def->common.parent_name !=3D NULL) { for (it =3D 0; it < def->common.dom->ndisks; it++) { const char *uuidRO =3D virVBoxSnapshotConfHardDiskUuidByLocation(snapshotMachineD= esc, @@ -7289,8 +7289,8 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapsho= tPtr snapshot) if (isCurrent) { VIR_FREE(snapshotMachineDesc->currentSnapshot); - if (def->common.parent !=3D NULL) { - virVBoxSnapshotConfSnapshotPtr snap =3D virVBoxSnapshotConfSna= pshotByName(snapshotMachineDesc->snapshot, def->common.parent); + if (def->common.parent_name !=3D NULL) { + virVBoxSnapshotConfSnapshotPtr snap =3D virVBoxSnapshotConfSna= pshotByName(snapshotMachineDesc->snapshot, def->common.parent_name); if (!snap) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to get the snapshot to remove")); diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 73d5c89c08..500de5f8ba 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -4703,7 +4703,7 @@ prlsdkParseSnapshotTree(const char *treexml) goto cleanup; } - def->common.parent =3D virXPathString("string(../@guid)", ctxt); + def->common.parent_name =3D virXPathString("string(../@guid)", ctx= t); xmlstr =3D virXPathString("string(./DateTime)", ctxt); if (!xmlstr) { --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list