From nobody Sun Feb 8 15:37:37 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=1570485177; cv=none; d=zoho.com; s=zohoarc; b=Z/9t0z7ndzD9kResqCUTLwd+Ma0d3QRTfSS7Mr41nvKol2/Zt1VV9Fk/jcw5z1RpskvZ2alq1pQQ4fHytWERqt4QNTmouDopmmv88XF1OB350lhiAFS+juYd5LQOrwVQjA7l0nVtEh6KlnoBKah+PA1xrlmwgZX6Y0AAykYYG3I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570485177; 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=/SDGbiUQRTjd7zaxMk87iIwTMBUvqVmNG7EFO/uTLWA=; b=WC94WyNxFdhMEUChh9j/gq7w9JGbfAALDEzSKbyilN8kFwXReP2lGrzTfDrszFVFPvSGL4fCCra7PAfGMDXCwFFTNSaouo83mEI9prb1fM5FE1ONDhCaYRJGALoTvWOV+uCBw/4bbnkazZMfsDVjiW/OVp6nzlE05xdDlqbj+vQ= 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 1570485177397826.935395135741; Mon, 7 Oct 2019 14:52:57 -0700 (PDT) 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 mx1.redhat.com (Postfix) with ESMTPS id DC79585362; Mon, 7 Oct 2019 21:52:55 +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 BEBEC5D9C9; Mon, 7 Oct 2019 21:52:55 +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 7F6024EEB7; Mon, 7 Oct 2019 21:52:55 +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 x97LnwTc014877 for ; Mon, 7 Oct 2019 17:49:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7E2015C231; Mon, 7 Oct 2019 21:49:58 +0000 (UTC) Received: from worklaptop.redhat.com (ovpn-123-156.rdu2.redhat.com [10.10.123.156]) by smtp.corp.redhat.com (Postfix) with ESMTP id A07175C224; Mon, 7 Oct 2019 21:49:53 +0000 (UTC) From: Cole Robinson To: libvir-list@redhat.com Date: Mon, 7 Oct 2019 17:49:31 -0400 Message-Id: <024031653c027c12a7cc627493aa93c83eceb87d.1570482718.git.crobinso@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 17/30] storagefile: Split out virStorageSourceNewFromChild 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.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 07 Oct 2019 21:52:56 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Future patches will use this for external data file handling Signed-off-by: Cole Robinson Reviewed-by: Daniel Henrique Barboza --- src/util/virstoragefile.c | 47 ++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index c47df6c200..7ae6719dd6 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -3716,38 +3716,38 @@ virStorageSourceNewFromBackingAbsolute(const char *= path, =20 =20 /** - * virStorageSourceNewFromBacking: + * virStorageSourceNewFromChild: * @parent: storage source parent - * @backing: returned backing store definition + * @child: returned child/backing store definition + * @parentRaw: raw child string (backingStoreRaw) * * Creates a storage source which describes the backing image of @parent a= nd - * fills it into @backing depending on the 'backingStoreRaw' property of @= parent + * fills it into @backing depending on the passed parentRaw (backingStoreR= aw) * and other data. Note that for local storage this function accesses the = file - * to update the actual type of the backing store. + * to update the actual type of the child store. * - * Returns 0 on success, 1 if we could parse all location data but the bac= kinig + * Returns 0 on success, 1 if we could parse all location data but the chi= ld * store specification contained other data unrepresentable by libvirt (e.= g. * inline authentication). * In both cases @src is filled. On error -1 is returned @src is NULL and = an * error is reported. */ -int -virStorageSourceNewFromBacking(virStorageSourcePtr parent, - virStorageSourcePtr *backing) +static int +virStorageSourceNewFromChild(virStorageSourcePtr parent, + const char *parentRaw, + virStorageSourcePtr *child) { struct stat st; VIR_AUTOUNREF(virStorageSourcePtr) def =3D NULL; int rc =3D 0; =20 - *backing =3D NULL; + *child =3D NULL; =20 - if (virStorageIsRelative(parent->backingStoreRaw)) { - if (!(def =3D virStorageSourceNewFromBackingRelative(parent, - parent->backing= StoreRaw))) + if (virStorageIsRelative(parentRaw)) { + if (!(def =3D virStorageSourceNewFromBackingRelative(parent, paren= tRaw))) return -1; } else { - if ((rc =3D virStorageSourceNewFromBackingAbsolute(parent->backing= StoreRaw, - &def)) < 0) + if ((rc =3D virStorageSourceNewFromBackingAbsolute(parentRaw, &def= )) < 0) return -1; } =20 @@ -3767,10 +3767,25 @@ virStorageSourceNewFromBacking(virStorageSourcePtr = parent, if (virStorageSourceInitChainElement(def, parent, true) < 0) return -1; =20 - def->readonly =3D true; def->detected =3D true; =20 - VIR_STEAL_PTR(*backing, def); + VIR_STEAL_PTR(*child, def); + return rc; +} + + +int +virStorageSourceNewFromBacking(virStorageSourcePtr parent, + virStorageSourcePtr *backing) +{ + int rc; + + if ((rc =3D virStorageSourceNewFromChild(parent, + parent->backingStoreRaw, + backing)) < 0) + return rc; + + (*backing)->readonly =3D true; return rc; } =20 --=20 2.23.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list