From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080584140771.706173335441; Tue, 7 Nov 2017 10:49:44 -0800 (PST) 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 4AD685F15C; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EE4CD5D9C6; Tue, 7 Nov 2017 18:49:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C97544A467; Tue, 7 Nov 2017 18:49:39 +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 vA7InbWm024814 for ; Tue, 7 Nov 2017 13:49:37 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4BEA55D964; Tue, 7 Nov 2017 18:49:37 +0000 (UTC) Received: from mx1.redhat.com (ext-mx06.extmail.prod.ext.phx2.redhat.com [10.5.110.30]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 45C125D9CD for ; Tue, 7 Nov 2017 18:49:36 +0000 (UTC) Received: from mail-qt0-f181.google.com (mail-qt0-f181.google.com [209.85.216.181]) (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 F1443356D6 for ; Tue, 7 Nov 2017 18:49:34 +0000 (UTC) Received: by mail-qt0-f181.google.com with SMTP id j58so304874qtj.0 for ; Tue, 07 Nov 2017 10:49:34 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.32 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:32 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4AD685F15C Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 4AD685F15C Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="eK07vM0v" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com F1443356D6 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com F1443356D6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=8R4if+jaIdstWjz7sk8FQhGq22Bb9vGLKPeVMTFMtpI=; b=eK07vM0v/KlfvFq6grGWtxZxPjemZ9NuZpaahArG1LQpaQHhCKsAqfZMp3k33uiPO1 4SvsSTqZSvUUdY9rwtYczf5zVyQaidFurE8Qr8snppVfOD6f/vyP9oLe6JNaLf9vpB7S 1tBIjkFZD9nvzw92bmHWY481ubnMjtBtKsyaYlGP5vhyt7w04debLJ304t4eb2iCER0w YmnjZtAyaZxyvTAGMuymAAEplFcLBZNlOTy7t58pQOaNnYdWbrEGs9YwyA8T7rzzQBfW 2yumJQI05sVUuabnQBybOpjybm13gCCoQQIIzCZ2N1DiU0h7hkipxsq7dyXzgdtn1wGx 65pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=8R4if+jaIdstWjz7sk8FQhGq22Bb9vGLKPeVMTFMtpI=; b=beqLjju1Qp+qkIcT+htHwBGKH6MO1kH8LAp021YyY4RuNy0Df6L8xZHa7oU2D9uW3f BiS7QCsTi1rTJgzR5XwTQwrcFzfGeghJohKI3RpmCT+HjfF/CfBG+PF87bcEIdU3rBCo RwsPPw7xhq95XJ792fjrYbksDS7AaOaj7xHq59bsJVdcxi60MOHUPVIDyPsvSVrhwX3k fyZ/T001zQoWGglb8J2qSm7Ir0753JQ/qeY9/qZClG+ZHYM6Bd81wIEFMT21nMJKTRWL Rpdnnp2TkXN9PhuJZU2zyoWiuM8jYH084JE0RrtALnCTVCAzuLw182eL64o1pIW4kUlP TUEQ== X-Gm-Message-State: AMCzsaXxqEzvMS5miQh6bKlPmIgyeXV3+mHzrrrYSeN7MLOHCUbcC04Z 5uM5O/0knJfVq139lBQ0h9eFY9eOtXQ= X-Google-Smtp-Source: ABhQp+SNO2jXTxpWbkbj73I2e1GwdCypQFAB3SBrwBkoae9t4ScMrJNw24byCfR6jmwBPzq4XsJvlw== X-Received: by 10.237.37.142 with SMTP id x14mr28057342qtc.6.1510080573967; Tue, 07 Nov 2017 10:49:33 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:18 -0500 Message-Id: <20171107184930.12769-2-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:49:35 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:49:35 +0000 (UTC) for IP:'209.85.216.181' DOMAIN:'mail-qt0-f181.google.com' HELO:'mail-qt0-f181.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: -0.221 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.181 mail-qt0-f181.google.com 209.85.216.181 mail-qt0-f181.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.30 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 01/13] vbox: Cleanup partially-defined VM on failure 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: , MIME-Version: 1.0 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]); Tue, 07 Nov 2017 18:49:42 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Since the VBOX API requires to register an initial VM before proceeding to attach any remaining devices to it, any failure to attach such devices should result in automatic cleanup of the initially registered VM so that the state of VBOX registry remains clean without any leftover "aborted" VMs in it. Failure to cleanup of such partial VMs results in a warning log so that actual define error stays on the top of the error stack. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 52 ++++++++++++++++++++++++++++++++++------------= ---- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index aa2563cf1..d93b0855f 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -1821,6 +1821,8 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const ch= ar *xml, unsigned int flags char uuidstr[VIR_UUID_STRING_BUFLEN]; virDomainPtr ret =3D NULL; unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; + bool machineReady =3D false; + =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); =20 @@ -1830,12 +1832,11 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const = char *xml, unsigned int flags if (!data->vboxObj) return ret; =20 - VBOX_IID_INITIALIZE(&mchiid); if (!(def =3D virDomainDefParseString(xml, data->caps, data->xmlopt, - NULL, parse_flags))) { - goto cleanup; - } + NULL, parse_flags))) + return ret; =20 + VBOX_IID_INITIALIZE(&mchiid); virUUIDFormat(def->uuid, uuidstr); =20 rc =3D gVBoxAPI.UIVirtualBox.CreateMachine(data, def, &machine, uuidst= r); @@ -1928,30 +1929,49 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const = char *xml, unsigned int flags vboxAttachUSB(def, data, machine); vboxAttachSharedFolder(def, data, machine); =20 - /* Save the machine settings made till now and close the - * session. also free up the mchiid variable used. + machineReady =3D true; + + cleanup: + /* if machine wasn't even created, cleanup is trivial */ + if (!machine) { + vboxIIDUnalloc(&mchiid); + virDomainDefFree(def); + + return ret; + } + + /* Save the machine settings made till now, even when jumped here on e= rror, + * as otherwise unregister won't cleanup properly. For example, it won= 't + * close media that were partially attached. The VBOX SDK docs say that + * unregister implicitly calls saveSettings but evidently it's not so.= .. */ rc =3D gVBoxAPI.UIMachine.SaveSettings(machine); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, - _("failed no saving settings, rc=3D%08x"), (unsigne= d)rc); - goto cleanup; + _("Failed to save VM settings, rc=3D%08x"), rc); + machineReady =3D false; } =20 gVBoxAPI.UISession.Close(data->vboxSession); - vboxIIDUnalloc(&mchiid); - - ret =3D virGetDomain(conn, def->name, def->uuid, -1); - VBOX_RELEASE(machine); =20 - virDomainDefFree(def); + if (machineReady) { + ret =3D virGetDomain(conn, def->name, def->uuid, -1); + } else { + /* Unregister incompletely configured VM to not leave garbage behi= nd */ + rc =3D gVBoxAPI.unregisterMachine(data, &mchiid, &machine); =20 - return ret; + if (NS_SUCCEEDED(rc)) + gVBoxAPI.deleteConfig(machine); + else + VIR_WARN("Could not cleanup partially created VM after failure= , " + "rc=3D%08x", rc); + } =20 - cleanup: VBOX_RELEASE(machine); + vboxIIDUnalloc(&mchiid); virDomainDefFree(def); - return NULL; + + return ret; } =20 static virDomainPtr --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080600625201.2102382935177; Tue, 7 Nov 2017 10:50:00 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id D1BA980481; Tue, 7 Nov 2017 18:49:58 +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 9F26C6BF62; Tue, 7 Nov 2017 18:49: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 683661800FC4; Tue, 7 Nov 2017 18:49:58 +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 vA7IndML024841 for ; Tue, 7 Nov 2017 13:49:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id 96D695C545; Tue, 7 Nov 2017 18:49:39 +0000 (UTC) Received: from mx1.redhat.com (ext-mx03.extmail.prod.ext.phx2.redhat.com [10.5.110.27]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 918395C1A1 for ; Tue, 7 Nov 2017 18:49:37 +0000 (UTC) Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) (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 E161D2FB7 for ; Tue, 7 Nov 2017 18:49:35 +0000 (UTC) Received: by mail-qt0-f195.google.com with SMTP id 1so295251qtn.3 for ; Tue, 07 Nov 2017 10:49:35 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.34 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:34 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D1BA980481 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com D1BA980481 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="xH5T+3Nu" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E161D2FB7 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E161D2FB7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=ixcPJ6IMF8kBo042q2sFMl2QRsecZHVCph8NNnCK8vM=; b=xH5T+3NupsBkUhG/uJPZ9vwu70Nlh0jT3+0Rh6naCxUM6Jkp9wljWMCI1pONawFt1j KGbf+xta3zYVuv9CbqaLtoOBunpLkh0nIWjAwG/WBnVqmQKOPjmN68bDT/4TERshBWcN CcYQyqp2CqBI4sg5ZaSg4Hz41RSEIBCCctXbDU78RFeLu6hGcWlj3VRUF9HuntdbDQHZ pLfMlRv2tbp+iPI5IFWfDRvfytAgrAvXAAT6wOd+sdFeBQNlSJxbehQeXJ7WUNhvxO9h ewuHgGFjoMioJH+J4SNVD+uw/vgZp4GyXh0fm2yOiZr810FwbAMJUkZgON9/qstMVUwj LvUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=ixcPJ6IMF8kBo042q2sFMl2QRsecZHVCph8NNnCK8vM=; b=PUmd5+ulvA2gWDP8r7M+96CXnuPwtjOUb2HK+IdoYHGZOPrKP4TxMX3uR1GLD2kiQw vsaoiQw3wPlwYs+rT/AS82/nqxD7VI4BUCWUXwhyD5xull0IXcCear2h/nBr+fL17Djj guBFzhLfpmLe8LU09Oauro9KIQM4xREaoj2c5DKUCxxIgh1YyhhNOJuWQYtShzEb9/gR k2mrOLwnu2XrkkO1zL2KoOjRm8A4zOTPqgPQioa0VlcMSTz/LJfAzMYDjDlpQYdONobr UnAzSQKwopIBvwDp68Aijnb7LGxcm68z/8Z3/lLxpt+D9BTRoBCUliofgt8RwDSI840x rHRw== X-Gm-Message-State: AJaThX6U6fKxOSxZEkQsaZ+Kmh8MsYOZj5tS2MB4FbsqJcmlFyM7h3Up ZDhyLS7wQA9cbbnJ/w1CLted8gphwls= X-Google-Smtp-Source: ABhQp+TXyA9CySFjqRPqrk44s3qoarhfozJOcZR583FlbIm1Yjb1LYVyMuASAcb3lqrYxWILLXJ2ww== X-Received: by 10.237.34.213 with SMTP id q21mr26962557qtc.65.1510080574778; Tue, 07 Nov 2017 10:49:34 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:19 -0500 Message-Id: <20171107184930.12769-3-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 07 Nov 2017 18:49:36 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 07 Nov 2017 18:49:36 +0000 (UTC) for IP:'209.85.216.195' DOMAIN:'mail-qt0-f195.google.com' HELO:'mail-qt0-f195.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.195 mail-qt0-f195.google.com 209.85.216.195 mail-qt0-f195.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.27 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 02/13] vbox: Process element in domain XML 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: , MIME-Version: 1.0 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 07 Nov 2017 18:49:59 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" With this patch, the vbox driver will no longer attach all supported storage controllers by default even if no disk devices are associated with them. Instead, it will attach only those that are implicitly added by virDomainDefAddImplicitController based on element or if explicitly specified via the element. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 199 ++++++++++++++++++++++++++++++++++++++-------= ---- src/vbox/vbox_common.h | 7 ++ 2 files changed, 161 insertions(+), 45 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index d93b0855f..49df52c12 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -406,6 +406,154 @@ static char *vboxGenerateMediumName(PRUint32 storageB= us, return name; } =20 + +static int +vboxSetStorageController(virDomainControllerDefPtr controller, + vboxDriverPtr data, + IMachine *machine) +{ + PRUnichar *controllerName =3D NULL; + PRInt32 vboxModel =3D StorageControllerType_Null; + PRInt32 vboxBusType =3D StorageBus_Null; + IStorageController *vboxController =3D NULL; + nsresult rc =3D 0; + char *debugName =3D NULL; + int ret =3D -1; + + /* libvirt controller type =3D> vbox bus type */ + switch ((virDomainControllerType) controller->type) { + case VIR_DOMAIN_CONTROLLER_TYPE_FDC: + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_FLOPPY_NAME, &controllerName); + vboxBusType =3D StorageBus_Floppy; + + break; + case VIR_DOMAIN_CONTROLLER_TYPE_IDE: + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_IDE_NAME, &controllerName); + vboxBusType =3D StorageBus_IDE; + + break; + case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SCSI_NAME, &controllerName); + vboxBusType =3D StorageBus_SCSI; + + break; + case VIR_DOMAIN_CONTROLLER_TYPE_SATA: + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SATA_NAME, &controllerName); + vboxBusType =3D StorageBus_SATA; + + break; + case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: + case VIR_DOMAIN_CONTROLLER_TYPE_CCID: + case VIR_DOMAIN_CONTROLLER_TYPE_USB: + case VIR_DOMAIN_CONTROLLER_TYPE_PCI: + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("The vbox driver does not support %s controller t= ype"), + virDomainControllerTypeToString(controller->type)); + return -1; + } + + /* libvirt scsi model =3D> vbox scsi model */ + if (controller->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_SCSI) { + switch ((virDomainControllerModelSCSI) controller->model) { + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: + vboxModel =3D StorageControllerType_LsiLogic; + + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: + vboxModel =3D StorageControllerType_BusLogic; + + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("The vbox driver does not support %s SCSI " + "controller model"), + virDomainControllerModelSCSITypeToString(contro= ller->model)); + goto cleanup; + } + /* libvirt ide model =3D> vbox ide model */ + } else if (controller->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_IDE) { + switch ((virDomainControllerModelIDE) controller->model) { + case VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX3: + vboxModel =3D StorageControllerType_PIIX3; + + break; + case VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX4: + vboxModel =3D StorageControllerType_PIIX4; + + break; + case VIR_DOMAIN_CONTROLLER_MODEL_IDE_ICH6: + vboxModel =3D StorageControllerType_ICH6; + + break; + case VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("The vbox driver does not support %s IDE " + "controller model"), + virDomainControllerModelIDETypeToString(contr= oller->model)); + goto cleanup; + } + } + + VBOX_UTF16_TO_UTF8(controllerName, &debugName); + VIR_DEBUG("Adding VBOX storage controller (name: %s, busType: %d)", + debugName, vboxBusType); + + rc =3D gVBoxAPI.UIMachine.AddStorageController(machine, controllerName, + vboxBusType, &vboxControl= ler); + + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to add storage controller " + "(name: %s, busType: %d), rc=3D%08x"), + debugName, vboxBusType, rc); + goto cleanup; + } + + /* only IDE or SCSI controller have model choices */ + if (vboxModel !=3D StorageControllerType_Null) { + rc =3D gVBoxAPI.UIStorageController.SetControllerType(vboxControll= er, + vboxModel); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to change storage controller model, " + "rc=3D%08x"), rc); + goto cleanup; + } + } + + ret =3D 0; + + cleanup: + VBOX_UTF16_FREE(controllerName); + VBOX_UTF8_FREE(debugName); + VBOX_RELEASE(vboxController); + + return ret; +} + + +static int +vboxAttachStorageControllers(virDomainDefPtr def, + vboxDriverPtr data, + IMachine *machine) +{ + size_t i; + for (i =3D 0; i < def->ncontrollers; i++) { + if (vboxSetStorageController(def->controllers[i], data, machine) <= 0) + return -1; + } + + return 0; +} + + static virDrvOpenStatus vboxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED, @@ -972,46 +1120,6 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr d= ata, IMachine *machine) =20 VBOX_IID_INITIALIZE(&mediumUUID); =20 - /* add a storage controller for the mediums to be attached */ - /* this needs to change when multiple controller are supported for - * ver > 3.1 */ - { - IStorageController *storageCtl =3D NULL; - PRUnichar *sName =3D NULL; - - VBOX_UTF8_TO_UTF16("IDE Controller", &sName); - gVBoxAPI.UIMachine.AddStorageController(machine, - sName, - StorageBus_IDE, - &storageCtl); - VBOX_UTF16_FREE(sName); - VBOX_RELEASE(storageCtl); - - VBOX_UTF8_TO_UTF16("SATA Controller", &sName); - gVBoxAPI.UIMachine.AddStorageController(machine, - sName, - StorageBus_SATA, - &storageCtl); - VBOX_UTF16_FREE(sName); - VBOX_RELEASE(storageCtl); - - VBOX_UTF8_TO_UTF16("SCSI Controller", &sName); - gVBoxAPI.UIMachine.AddStorageController(machine, - sName, - StorageBus_SCSI, - &storageCtl); - VBOX_UTF16_FREE(sName); - VBOX_RELEASE(storageCtl); - - VBOX_UTF8_TO_UTF16("Floppy Controller", &sName); - gVBoxAPI.UIMachine.AddStorageController(machine, - sName, - StorageBus_Floppy, - &storageCtl); - VBOX_UTF16_FREE(sName); - VBOX_RELEASE(storageCtl); - } - for (i =3D 0; i < def->ndisks; i++) { disk =3D def->disks[i]; src =3D virDomainDiskGetSource(disk); @@ -1066,21 +1174,21 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr= data, IMachine *machine) =20 switch ((virDomainDiskBus) disk->bus) { case VIR_DOMAIN_DISK_BUS_IDE: - VBOX_UTF8_TO_UTF16("IDE Controller", &storageCtlName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_IDE_NAME, &storageCtlName); devicePort =3D def->disks[i]->info.addr.drive.bus; deviceSlot =3D def->disks[i]->info.addr.drive.unit; =20 break; case VIR_DOMAIN_DISK_BUS_SATA: - VBOX_UTF8_TO_UTF16("SATA Controller", &storageCtlName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SATA_NAME, &storageCtlName); =20 break; case VIR_DOMAIN_DISK_BUS_SCSI: - VBOX_UTF8_TO_UTF16("SCSI Controller", &storageCtlName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SCSI_NAME, &storageCtlName); =20 break; case VIR_DOMAIN_DISK_BUS_FDC: - VBOX_UTF8_TO_UTF16("Floppy Controller", &storageCtlName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_FLOPPY_NAME, &storageCtlNam= e); devicePort =3D 0; deviceSlot =3D disk->info.addr.drive.unit; =20 @@ -1148,7 +1256,6 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr d= ata, IMachine *machine) gVBoxAPI.UIMedium.SetType(medium, MediumType_Normal); VIR_DEBUG("Setting hard disk type to normal"); } - } =20 VBOX_UTF16_TO_UTF8(storageCtlName, &controllerName); @@ -1917,6 +2024,8 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const ch= ar *xml, unsigned int flags gVBoxAPI.UISession.GetMachine(data->vboxSession, &machine); =20 vboxSetBootDeviceOrder(def, data, machine); + if (vboxAttachStorageControllers(def, data, machine) < 0) + goto cleanup; if (vboxAttachDrives(def, data, machine) < 0) goto cleanup; vboxAttachSound(def, machine); diff --git a/src/vbox/vbox_common.h b/src/vbox/vbox_common.h index f28f2e03f..5dc87239d 100644 --- a/src/vbox/vbox_common.h +++ b/src/vbox/vbox_common.h @@ -326,6 +326,13 @@ enum HardDiskVariant # define VBOX_E_INVALID_SESSION_STATE 0x80BB000B # define VBOX_E_OBJECT_IN_USE 0x80BB000C =20 +/* VBOX storage controller name definitions */ + +# define VBOX_CONTROLLER_IDE_NAME "IDE Controller" +# define VBOX_CONTROLLER_FLOPPY_NAME "Floppy Controller" +# define VBOX_CONTROLLER_SATA_NAME "SATA Controller" +# define VBOX_CONTROLLER_SCSI_NAME "SCSI Controller" + /* Simplied definitions in vbox_CAPI_*.h */ =20 typedef void const *PCVBOXXPCOM; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080600213929.9535468211271; Tue, 7 Nov 2017 10:50:00 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id CC662C058ECB; Tue, 7 Nov 2017 18:49:58 +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 A80FC5C545; Tue, 7 Nov 2017 18:49: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 6F4181800C87; Tue, 7 Nov 2017 18:49:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vA7IneFR024848 for ; Tue, 7 Nov 2017 13:49:40 -0500 Received: by smtp.corp.redhat.com (Postfix) id 3D5655EDE9; Tue, 7 Nov 2017 18:49:40 +0000 (UTC) Received: from mx1.redhat.com (ext-mx07.extmail.prod.ext.phx2.redhat.com [10.5.110.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 375AA5D6A9 for ; Tue, 7 Nov 2017 18:49:37 +0000 (UTC) Received: from mail-qt0-f178.google.com (mail-qt0-f178.google.com [209.85.216.178]) (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 67758C04AC56 for ; Tue, 7 Nov 2017 18:49:36 +0000 (UTC) Received: by mail-qt0-f178.google.com with SMTP id z19so266349qtg.11 for ; Tue, 07 Nov 2017 10:49:36 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.34 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:34 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CC662C058ECB Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CC662C058ECB Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="Zod8Mkry" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 67758C04AC56 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 67758C04AC56 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=gKrjjgcwVdcWScwVxSoUMwvn9ii+bMksgcRmSYTO09Q=; b=Zod8MkryA/EM2PwDndXXl4Hwb7S7m+7dkgGknzyCNoo0x2WHMR7i3FEpN6MXkLuQq3 b3iu10hpix866mvgtDbMqGpgFFRdllHl/3HaSFPnNRGZRIL7g8x6ZKjvrxBR858yNEgP wE7uaVfNKnIGi0lO9VQ9l+XT1NAIYvSB8+hwSFawYqPuFAA0hkd9Etu434RjJcyJvEAD AVoKwxTaczVuCoV/0B3f+IXlsMOB4WgkE1yVDhsQiTOsHfteug4j/2SPMj5+Dc0QdaVK yWr4BFmcTdrmTStYk76RrS1E9QIXZUdrQKZXTCSih/oheBG1dewnZQUyTw39SVCH9YFU hTTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=gKrjjgcwVdcWScwVxSoUMwvn9ii+bMksgcRmSYTO09Q=; b=hDgUVKzSpb8p+3/XTAmqba3sh6jIeAjtQlitJFsMidqNV+BgrpSwWL/H+m2hDxEFuQ 0dwA8AfXddiNuvIXTBlIDQZHkeGdm+kly7ZchjFqPJC9L9wPDZZpTamJATXTCPGR9ndQ eOiY20mHKduTXCwnIOYMts1y00R+ecv4VU+GkghNXWlOeKmFK6qEPwgF0MMMf8NrcUxE 94bB0KrMug3hyELyCy+fXTwVlPvbq55rc3BG35H9QXvneepu6GfLJi3TH3obPyavpGIZ ctAbsQZU+e9W+bNjZdrIsmDhh7pYOXejr8CnhWE2p9aN+rQfyqWkwGd5n6zjbuIGubBY 0hTQ== X-Gm-Message-State: AMCzsaVTKjhMZhftRivmAkKMkUSVigGCo1BFadWdNuFP2KujErMi0Uip SU2YHjBZe57GAbAnhy9TUpkz+lhZP94= X-Google-Smtp-Source: ABhQp+Qs0i1W1Jzd0kRGC+kc2BW+BdgAIh2fKA4S0P1VRsWuCuwE9qHj09Os4aXM8pB21VT0mMo71Q== X-Received: by 10.200.23.196 with SMTP id r4mr29932301qtk.158.1510080575394; Tue, 07 Nov 2017 10:49:35 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:20 -0500 Message-Id: <20171107184930.12769-4-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 07 Nov 2017 18:49:36 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 07 Nov 2017 18:49:36 +0000 (UTC) for IP:'209.85.216.178' DOMAIN:'mail-qt0-f178.google.com' HELO:'mail-qt0-f178.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: -0.221 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.178 mail-qt0-f178.google.com 209.85.216.178 mail-qt0-f178.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.31 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 03/13] vbox: Add vboxDumpStorageControllers 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: , MIME-Version: 1.0 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 07 Nov 2017 18:49:59 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 109 +++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 109 insertions(+) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 49df52c12..4d596075c 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -3147,6 +3147,113 @@ vboxHostDeviceGetXMLDesc(vboxDriverPtr data, virDom= ainDefPtr def, IMachine *mach goto release_filters; } =20 + +static int +vboxDumpStorageControllers(virDomainDefPtr def, IMachine *machine) +{ + vboxArray storageControllers =3D VBOX_ARRAY_INITIALIZER; + IStorageController *controller =3D NULL; + PRUint32 storageBus =3D StorageBus_Null; + PRUint32 controllerType =3D StorageControllerType_Null; + virDomainControllerDefPtr cont =3D NULL; + size_t i =3D 0; + int model =3D -1, ret =3D -1; + virDomainControllerType type =3D VIR_DOMAIN_CONTROLLER_TYPE_LAST; + + gVBoxAPI.UArray.vboxArrayGet(&storageControllers, machine, + gVBoxAPI.UArray.handleMachineGetStorageControllers(machin= e)); + + for (i =3D 0; i < storageControllers.count; i++) { + controller =3D storageControllers.items[i]; + storageBus =3D StorageBus_Null; + controllerType =3D StorageControllerType_Null; + type =3D VIR_DOMAIN_CONTROLLER_TYPE_LAST; + model =3D -1; + + if (!controller) + continue; + + gVBoxAPI.UIStorageController.GetBus(controller, &storageBus); + gVBoxAPI.UIStorageController.GetControllerType(controller, + &controllerType); + + /* vbox controller model =3D> libvirt controller model */ + switch ((enum StorageControllerType) controllerType) { + case StorageControllerType_PIIX3: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX3; + + break; + case StorageControllerType_PIIX4: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX4; + + break; + case StorageControllerType_ICH6: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_IDE_ICH6; + + break; + case StorageControllerType_BusLogic: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC; + + break; + case StorageControllerType_LsiLogic: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC; + + break; + case StorageControllerType_LsiLogicSas: + case StorageControllerType_IntelAhci: + case StorageControllerType_I82078: + case StorageControllerType_Null: + model =3D -1; + + break; + } + + /* vbox controller bus =3D> libvirt controller type */ + switch ((enum StorageBus) storageBus) { + case StorageBus_IDE: + type =3D VIR_DOMAIN_CONTROLLER_TYPE_IDE; + + break; + case StorageBus_SCSI: + case StorageBus_SAS: + type =3D VIR_DOMAIN_CONTROLLER_TYPE_SCSI; + + break; + case StorageBus_SATA: + type =3D VIR_DOMAIN_CONTROLLER_TYPE_SATA; + + break; + case StorageBus_Floppy: + type =3D VIR_DOMAIN_CONTROLLER_TYPE_FDC; + + break; + case StorageBus_Null: + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Unsupported null storage bus")); + + goto cleanup; + } + + if (type !=3D VIR_DOMAIN_CONTROLLER_TYPE_LAST) { + cont =3D virDomainDefAddController(def, type, -1, model); + if (!cont) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to add %s controller type definit= ion"), + virDomainControllerTypeToString(type)); + goto cleanup; + } + } + } + + ret =3D 0; + + cleanup: + gVBoxAPI.UArray.vboxArrayRelease(&storageControllers); + + return ret; +} + + static void vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine) { @@ -3994,6 +4101,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, u= nsigned int flags) goto cleanup; if (vboxDumpDisplay(def, data, machine) < 0) goto cleanup; + if (vboxDumpStorageControllers(def, machine) < 0) + goto cleanup; =20 vboxDumpIDEHDDs(def, data, machine); =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080605880325.0461903518858; Tue, 7 Nov 2017 10:50:05 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 56FF620272; Tue, 7 Nov 2017 18:50:04 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 207C45C886; Tue, 7 Nov 2017 18:50: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 A7E493D380; Tue, 7 Nov 2017 18:50:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vA7IneL7024847 for ; Tue, 7 Nov 2017 13:49:40 -0500 Received: by smtp.corp.redhat.com (Postfix) id 3CDB75EDE4; Tue, 7 Nov 2017 18:49:40 +0000 (UTC) Received: from mx1.redhat.com (ext-mx05.extmail.prod.ext.phx2.redhat.com [10.5.110.29]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 378515EDE0 for ; Tue, 7 Nov 2017 18:49:38 +0000 (UTC) Received: from mail-qt0-f171.google.com (mail-qt0-f171.google.com [209.85.216.171]) (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 ED06820272 for ; Tue, 7 Nov 2017 18:49:36 +0000 (UTC) Received: by mail-qt0-f171.google.com with SMTP id k31so278588qta.6 for ; Tue, 07 Nov 2017 10:49:36 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.35 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:35 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 56FF620272 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 56FF620272 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="DymM6HTX" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com ED06820272 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com ED06820272 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=mgqUvdeHXJDNdtirB3xhkuLp3Jce4bvF5fzSlKcqkMk=; b=DymM6HTX8A3l6PPie5qVNKx1WxOiA2AV+XEUc6siBXRH8589nX84AVz9c183MZpJo6 667vspS0PRFNhJH/K7FzwYw+Oo/awQJIgaW2t+JbyswmaKIs3VLC2yy4CKwDMcbwL9Ch F8IW0083dojwKXZJyP1lEwIBvoDjgzErvr6J+k3C4VMpgPGSb6RghUNsyNZhKj99R/u0 tq8GW3wKUNRQD2XtD7+RLHsZeOI4t+z1Pne+2SojHuGqGW73lqucc3nNLAhSF3qbskNG gBtzxv7Rz8OsMqF71Actzf9I1xX6oD3FDeFAZuot9hljcgONPgSzr/eU7n/wigknxDcK YiIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=mgqUvdeHXJDNdtirB3xhkuLp3Jce4bvF5fzSlKcqkMk=; b=LjV8fr9JzaIu7biU5VnyKH+w0WbTYBP9o62oLVKH5i786BWWthZaMMylWtCw3GrQgj VOuRtV6HipTf6ZaRAerMq2oHvgwbNcPaOjbPZnQDjZNZ5wWrtUoWSH/GUUo6Pd81uJhZ 4K32a1drECCFNXS/TED4mx+V5p0jF6z+xhqH/Lyaj1ELmpMEz75kjp4y9y/yOB0HCtyK 8KcIOl3xqquuCWTWwLKlb4fHn0LuIqT3wUCOCmueZ6wbsiFpZGdT+DLqYz6O3kWAKNVd 7hONbSZGwFPGArQ4ZFqN2kBUGjZ7COknJPdZiNT3l5+5jTQq17/J8dLFTDY/hA6dCzDX hQzQ== X-Gm-Message-State: AMCzsaVlswnrTJBltoBTivhwXoWxUTRYxtbPHGgrNWgQu3N/nQ2mXCK3 MwnK9C9M9t8qr3K/Mnxu8BW59KbOuUo= X-Google-Smtp-Source: ABhQp+T4OxdlU4eNN4r474oSB2FBD8jDbuqIGQfu8uHQnzV5tsfcCyaYE0bn0kA2ucK0+OyZ+luf4g== X-Received: by 10.200.45.28 with SMTP id n28mr30428026qta.100.1510080575910; Tue, 07 Nov 2017 10:49:35 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:21 -0500 Message-Id: <20171107184930.12769-5-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 07 Nov 2017 18:49:37 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 07 Nov 2017 18:49:37 +0000 (UTC) for IP:'209.85.216.171' DOMAIN:'mail-qt0-f171.google.com' HELO:'mail-qt0-f171.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.171 mail-qt0-f171.google.com 209.85.216.171 mail-qt0-f171.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.29 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 04/13] vbox: Rename vboxDumpIDEHDDs to vboxDumpDisks 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: , MIME-Version: 1.0 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 07 Nov 2017 18:50:04 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Because it deals with other disk types as well not just IDE. Also this function now returns -1 on error Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 57 ++++++++++++++++++++++------------------------= ---- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 4d596075c..2e0d7ee9a 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -3254,13 +3254,11 @@ vboxDumpStorageControllers(virDomainDefPtr def, IMa= chine *machine) } =20 =20 -static void -vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine) +static int +vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine) { - /* dump IDE hdds if present */ vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; - bool error =3D false; - int diskCount =3D 0; + int ret =3D -1, diskCount =3D 0; size_t i; PRUint32 maxPortPerInst[StorageBus_Floppy + 1] =3D {}; PRUint32 maxSlotPerPort[StorageBus_Floppy + 1] =3D {}; @@ -3284,24 +3282,22 @@ vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr = data, IMachine *machine) } =20 /* Allocate mem, if fails return error */ - if (VIR_ALLOC_N(def->disks, def->ndisks) >=3D 0) { - for (i =3D 0; i < def->ndisks; i++) { - virDomainDiskDefPtr disk =3D virDomainDiskDefNew(NULL); - if (!disk) { - error =3D true; - break; - } - def->disks[i] =3D disk; - } - } else { - error =3D true; + if (VIR_ALLOC_N(def->disks, def->ndisks) < 0) + goto cleanup; + + for (i =3D 0; i < def->ndisks; i++) { + virDomainDiskDefPtr disk =3D virDomainDiskDefNew(NULL); + if (!disk) + goto cleanup; + + def->disks[i] =3D disk; } =20 - if (!error) - error =3D !vboxGetMaxPortSlotValues(data->vboxObj, maxPortPerInst,= maxSlotPerPort); + if (!vboxGetMaxPortSlotValues(data->vboxObj, maxPortPerInst, maxSlotPe= rPort)) + goto cleanup; =20 /* get the attachment details here */ - for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks &= & !error; i++) { + for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks; = i++) { IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; IStorageController *storageController =3D NULL; PRUnichar *storageControllerName =3D NULL; @@ -3347,8 +3343,8 @@ vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) if (!virDomainDiskGetSource(def->disks[diskCount])) { VBOX_RELEASE(medium); VBOX_RELEASE(storageController); - error =3D true; - break; + + goto cleanup; } =20 gVBoxAPI.UIStorageController.GetBus(storageController, &storageBus= ); @@ -3385,8 +3381,8 @@ vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) deviceInst, devicePort, deviceSlot); VBOX_RELEASE(medium); VBOX_RELEASE(storageController); - error =3D true; - break; + + goto cleanup; } =20 gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); @@ -3401,15 +3397,12 @@ vboxDumpIDEHDDs(virDomainDefPtr def, vboxDriverPtr = data, IMachine *machine) diskCount++; } =20 + ret =3D 0; + + cleanup: gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); =20 - /* cleanup on error */ - if (error) { - for (i =3D 0; i < def->ndisks; i++) - VIR_FREE(def->disks[i]); - VIR_FREE(def->disks); - def->ndisks =3D 0; - } + return ret; } =20 static int @@ -4103,8 +4096,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, u= nsigned int flags) goto cleanup; if (vboxDumpStorageControllers(def, machine) < 0) goto cleanup; - - vboxDumpIDEHDDs(def, data, machine); + if (vboxDumpDisks(def, data, machine) < 0) + goto cleanup; =20 vboxDumpSharedFolders(def, data, machine); vboxDumpNetwork(def, data, machine, networkAdapterCount); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080611035447.3962333197218; Tue, 7 Nov 2017 10:50:11 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 693EA5FD7C; Tue, 7 Nov 2017 18:50: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 3C9EE6BF6F; Tue, 7 Nov 2017 18: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 0525B3D387; Tue, 7 Nov 2017 18:50:09 +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 vA7InfA4024877 for ; Tue, 7 Nov 2017 13:49:41 -0500 Received: by smtp.corp.redhat.com (Postfix) id 75B9E60171; Tue, 7 Nov 2017 18:49:41 +0000 (UTC) Received: from mx1.redhat.com (ext-mx04.extmail.prod.ext.phx2.redhat.com [10.5.110.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6F4D1512F7 for ; Tue, 7 Nov 2017 18:49:38 +0000 (UTC) Received: from mail-qt0-f169.google.com (mail-qt0-f169.google.com [209.85.216.169]) (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 84CC28047F for ; Tue, 7 Nov 2017 18:49:37 +0000 (UTC) Received: by mail-qt0-f169.google.com with SMTP id 31so274070qtz.9 for ; Tue, 07 Nov 2017 10:49:37 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.35 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:36 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 693EA5FD7C Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 693EA5FD7C Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="Wn0q8Vgc" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 84CC28047F Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 84CC28047F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=7E0Exm3H794wooF2SLByVm8d4/fNVvm9UxR5QWkf4Mc=; b=Wn0q8Vgcit00BPHTYsaz8MewBq+yI/cfXwJ+74wAUfUPm+AxKw6AAEoA4z8TIs0qsR +lC/fkcbaMtQPxYhB6AvvjLjQJ8SND1j2jo0z62ro1vsMGEixWUD0syxGHclsYzo4wzO nzBITjKqyrHsZMQsz9mHC9Y8UnZTVUdJkqidwQMSw+YxUOvHXZfl8yJN9UkH/VfXmm3z 5bVGJzt371tBooxZxcANbJtuRsIMHJQ8LsrtT4PTYCxl/C6MQA1UOVD197pO1VlKSwMn iv5VXjDOj4pk7/iKr4Gv20PAEzw7ERe1dAV25n57FvqgSj1iKF8+DiJ3eEal73iyaM9t 9ArQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=7E0Exm3H794wooF2SLByVm8d4/fNVvm9UxR5QWkf4Mc=; b=ZdnA8uwh4xBU10pWkASFQNwxZBeAveJU7lGqSF+27N0IE/H793iU4dID+X94G/Lg+c owDiC/V4ezr04eCycEnQMHf0OhiXlRsK9GNrutcECsTRD4k+fnyBkEmF2JPuId97AQQC V9pU7EjdrW1CYgCwJ9owb/NegwYur3oWIxZwgBZ3bke+kO3ikooIHKWxLUffziY4Hw9o PAXKBa7DX635zJi4XaxBlle/xL+Qt8tklc4YA9U5uKnFKtQ7AEs7SndnS4/zsbd+CO+B DRk6H4ALj3fT7Y+NLaXVxMcxkDjxUIRYvUF6uml5RbFzcIICG6ZmwHdAA3dUJG21UBtJ gLwg== X-Gm-Message-State: AMCzsaW820lQBgefdF+XscsRXAMs5BAGiMJN/GAh4PUj2iA3oZno2Imr U0gel+lsrnL+4QG3svuZig779hiXqCo= X-Google-Smtp-Source: ABhQp+Rafg0+knL0hFxrT0jR0GoSK1oxbMn+pwLoBllBJ8XLFDZ76Pi2c0LaUfGxVI1Zglvjgu/0pQ== X-Received: by 10.200.36.50 with SMTP id c47mr30285543qtc.274.1510080576476; Tue, 07 Nov 2017 10:49:36 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:22 -0500 Message-Id: <20171107184930.12769-6-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 07 Nov 2017 18:49:37 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 07 Nov 2017 18:49:37 +0000 (UTC) for IP:'209.85.216.169' DOMAIN:'mail-qt0-f169.google.com' HELO:'mail-qt0-f169.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.169 mail-qt0-f169.google.com 209.85.216.169 mail-qt0-f169.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.28 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 05/13] vbox: Cleanup/prepare snasphot dumpxml functions 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: , MIME-Version: 1.0 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 07 Nov 2017 18:50:09 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch prepares the vboxSnapshotGetReadOnlyDisks and vboxSnapshotGetReadWriteDisks functions for further changes so that the code movement does not obstruct the gist of those future changes. This is done primarily because we'll need to know the type of vbox storage controller as early as possible and make decisions based on that info. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 185 ++++++++++++++++++++++++++++-----------------= ---- 1 file changed, 105 insertions(+), 80 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 2e0d7ee9a..d26ce1bce 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -5653,8 +5653,9 @@ vboxDomainSnapshotGet(vboxDriverPtr data, return snapshot; } =20 -static int vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr def, - virDomainSnapshotPtr snapshot) +static int +vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr def, + virDomainSnapshotPtr snapshot) { virDomainPtr dom =3D snapshot->domain; vboxDriverPtr data =3D dom->conn->privateData; @@ -5755,26 +5756,72 @@ static int vboxSnapshotGetReadWriteDisks(virDomainS= napshotDefPtr def, void *handle; size_t j =3D 0; size_t k =3D 0; + if (!imediumattach) continue; - rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &disk); + + rc =3D gVBoxAPI.UIMediumAttachment.GetController(imediumattach, + &storageControllerN= ame); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium")); + _("Cannot get storage controller name")); goto cleanup; } - if (!disk) - continue; - rc =3D gVBoxAPI.UIMediumAttachment.GetController(imediumattach, &s= torageControllerName); + + rc =3D gVBoxAPI.UIMachine.GetStorageControllerByName(machine, + storageControll= erName, + &storageControl= ler); + VBOX_UTF16_FREE(storageControllerName); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get controller")); + _("Cannot get storage controller by name")); goto cleanup; } - if (!storageControllerName) { - VBOX_RELEASE(disk); + + rc =3D gVBoxAPI.UIStorageController.GetBus(storageController, &sto= rageBus); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get storage controller bus")); + VBOX_RELEASE(storageController); + goto cleanup; + } + + rc =3D gVBoxAPI.UIMediumAttachment.GetType(imediumattach, &deviceT= ype); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium attachment type")); + VBOX_RELEASE(storageController); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &deviceP= ort); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium attachment port")); + VBOX_RELEASE(storageController); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &devic= eSlot); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium attachment slot")); + VBOX_RELEASE(storageController); + goto cleanup; + } + + rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &disk); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium")); + VBOX_RELEASE(storageController); + goto cleanup; + } + + /* skip empty removable disk */ + if (!disk) { + VBOX_RELEASE(storageController); continue; } + handle =3D gVBoxAPI.UArray.handleMediumGetChildren(disk); rc =3D gVBoxAPI.UArray.vboxArrayGet(&children, disk, handle); if (NS_FAILED(rc)) { @@ -5797,53 +5844,25 @@ static int vboxSnapshotGetReadWriteDisks(virDomainS= napshotDefPtr def, char *diskSnapIdStr =3D NULL; VBOX_UTF16_TO_UTF8(diskSnapId, &diskSnapIdStr); if (STREQ(diskSnapIdStr, snapshotUuidStr)) { - rc =3D gVBoxAPI.UIMachine.GetStorageControllerByName(m= achine, - sto= rageControllerName, - &st= orageController); - VBOX_UTF16_FREE(storageControllerName); - if (!storageController) { - VBOX_RELEASE(child); - break; - } rc =3D gVBoxAPI.UIMedium.GetLocation(child, &childLocU= tf16); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot get disk location")); + VBOX_RELEASE(storageController); + VBOX_RELEASE(disk); + VBOX_RELEASE(child); goto cleanup; } VBOX_UTF16_TO_UTF8(childLocUtf16, &childLocUtf8); VBOX_UTF16_FREE(childLocUtf16); if (VIR_STRDUP(def->disks[diskCount].src->path, childL= ocUtf8) < 0) { - VBOX_RELEASE(child); VBOX_RELEASE(storageController); + VBOX_RELEASE(disk); + VBOX_RELEASE(child); goto cleanup; } VBOX_UTF8_FREE(childLocUtf8); =20 - rc =3D gVBoxAPI.UIStorageController.GetBus(storageCont= roller, &storageBus); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get storage controller bu= s")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMediumAttachment.GetType(imediumatta= ch, &deviceType); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium attachment typ= e")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMediumAttachment.GetPort(imediumatta= ch, &devicePort); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium attachment typ= e")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMediumAttachment.GetDevice(imediumat= tach, &deviceSlot); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium attachment dev= ice")); - goto cleanup; - } def->disks[diskCount].src->type =3D VIR_STORAGE_TYPE_F= ILE; def->disks[diskCount].name =3D vboxGenerateMediumName(= storageBus, de= viceInst, @@ -5862,6 +5881,7 @@ static int vboxSnapshotGetReadWriteDisks(virDomainSna= pshotDefPtr def, gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); =20 ret =3D 0; + cleanup: if (ret < 0) { for (i =3D 0; i < def->ndisks; i++) @@ -5873,9 +5893,9 @@ static int vboxSnapshotGetReadWriteDisks(virDomainSna= pshotDefPtr def, return ret; } =20 -static -int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot, - virDomainSnapshotDefPtr def) +static int +vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot, + virDomainSnapshotDefPtr def) { virDomainPtr dom =3D snapshot->domain; vboxDriverPtr data =3D dom->conn->privateData; @@ -5970,18 +5990,10 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotP= tr snapshot, IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; if (!imediumattach) continue; - rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &disk); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium")); - goto cleanup; - } - if (!disk) - continue; rc =3D gVBoxAPI.UIMediumAttachment.GetController(imediumattach, &s= torageControllerName); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get storage controller name")); + _("Cannot get storage controller name")); goto cleanup; } if (!storageControllerName) @@ -5989,18 +6001,50 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotP= tr snapshot, rc =3D gVBoxAPI.UIMachine.GetStorageControllerByName(machine, storageControll= erName, &storageControl= ler); + VBOX_UTF16_FREE(storageControllerName); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get storage controller")); + _("Cannot get storage controller")); goto cleanup; } - VBOX_UTF16_FREE(storageControllerName); if (!storageController) continue; + rc =3D gVBoxAPI.UIStorageController.GetBus(storageController, &sto= rageBus); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get storage controller bus")); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &deviceP= ort); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium attachment port")); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &devic= eSlot); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get device slot")); + goto cleanup; + } + + rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &disk); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get medium")); + goto cleanup; + } + + /* skip empty removable disk */ + if (!disk) { + VBOX_RELEASE(storageController); + continue; + } + rc =3D gVBoxAPI.UIMedium.GetLocation(disk, &mediumLocUtf16); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get disk location")); + _("Cannot get disk location")); goto cleanup; } VBOX_UTF16_TO_UTF8(mediumLocUtf16, &mediumLocUtf8); @@ -6009,11 +6053,10 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotP= tr snapshot, goto cleanup; =20 VBOX_UTF8_FREE(mediumLocUtf8); - - rc =3D gVBoxAPI.UIStorageController.GetBus(storageController, &sto= rageBus); + rc =3D gVBoxAPI.UIMedium.GetReadOnly(disk, &readOnly); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get storage controller bus")); + _("Cannot get read only attribute")); goto cleanup; } if (storageBus =3D=3D StorageBus_IDE) { @@ -6039,24 +6082,6 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPt= r snapshot, else if (deviceType =3D=3D DeviceType_DVD) def->dom->disks[diskCount]->device =3D VIR_DOMAIN_DISK_DEVICE_= CDROM; =20 - rc =3D gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &deviceP= ort); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get medium attachment port")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &devic= eSlot); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get device")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMedium.GetReadOnly(disk, &readOnly); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("cannot get read only attribute")); - goto cleanup; - } if (readOnly =3D=3D PR_TRUE) def->dom->disks[diskCount]->src->readonly =3D true; def->dom->disks[diskCount]->src->type =3D VIR_STORAGE_TYPE_FILE; @@ -6076,9 +6101,9 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr= snapshot, } diskCount ++; } - /* cleanup on error */ =20 ret =3D 0; + cleanup: if (ret < 0) { for (i =3D 0; i < def->dom->ndisks; i++) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080608280357.0330609938078; Tue, 7 Nov 2017 10:50:08 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id C56E6C0050CB; Tue, 7 Nov 2017 18:50:06 +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 A0F8E6BF78; Tue, 7 Nov 2017 18:50:06 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 602B43D385; Tue, 7 Nov 2017 18:50:06 +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 vA7Ineah024857 for ; Tue, 7 Nov 2017 13:49:40 -0500 Received: by smtp.corp.redhat.com (Postfix) id 63AD160BEF; Tue, 7 Nov 2017 18:49:40 +0000 (UTC) Received: from mx1.redhat.com (ext-mx06.extmail.prod.ext.phx2.redhat.com [10.5.110.30]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5C80E1B429 for ; Tue, 7 Nov 2017 18:49:38 +0000 (UTC) Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) (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 E2E65267CF for ; Tue, 7 Nov 2017 18:49:37 +0000 (UTC) Received: by mail-qt0-f194.google.com with SMTP id h4so275953qtk.8 for ; Tue, 07 Nov 2017 10:49:37 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.36 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:36 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C56E6C0050CB Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C56E6C0050CB Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="HO1U0u50" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E2E65267CF Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E2E65267CF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=KG/33TLRfronz8EsbERNrhVK4K/NTNIVpOiWTm3jdA8=; b=HO1U0u50u2YIA1M91GjmOA9CPgjJDYiIQ0h/EoGvQV2cHhWKZQktINSMopup+OM+oK ciUKARU4D34NmPY0TPfSLt7a6ORexxb20jVmpeHDzWFgXxzlBQj8GLNAlvrNM1JvASfX jxB4i4yX2GgthuX7gTSdcYtfO+EqoJ01yDQc731JTO3Y8osuMeMcd1q5QJR6gxzyADKB w7pefEJrdCR4XjaST+zZXJZDGBpa87boGVCNIMac7ygJc2YMhWFrKEh0utV/++5DNZLK J6hNnUztRBj2o6MPkmqgY3LnVmzxh0Nnsell5CyWWrV/rDkTS5Tvif50eQUlhN7Sc8du 0vTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=KG/33TLRfronz8EsbERNrhVK4K/NTNIVpOiWTm3jdA8=; b=RiB1zhc1Fc/DCaKIJCRjP6ou7Shzgyx/sHgiZFAKQwi44KTke91mGpWgKnXwh92R8p ISrN+GcBSVLJbkbrL427BV/M5t487ovilhy/XLo4V2rU36k/qIFFCXwm6NIphwhHcCdV ClBINlVIeDEf8IUC+IHVTflGxUm3nymOQroM7ulGWrzMUlFLeOP9pf2mri5r2FZMRb9M NFhAxJMR6fLR8kFR7TqinSS7qgxVNR9oPiztLCfbmUxoGU022ad5QXfNEwvVD4/apjjE oxiZtQPHTf5AIeRzgyqkGuxPxri9M4OiUzUT2shwCXgjvv5uLAsRTOhv/2ZR0ICqE6Lu WRyA== X-Gm-Message-State: AMCzsaXsB1CR+oSnZmWW7KG9FIcHp2cFgITd9k7pyBCGW0bH8G/fsbSt 5IQNkIJ1h+0yJ/cjpQ1Ytm95frXpIw8= X-Google-Smtp-Source: ABhQp+Tt/BhD1ee7Jwu/Z2RHJkHjVf+RBFWLDFLzP9QsJihFLP6ujHP8rZhxqQE+06ks7yp7uE89SQ== X-Received: by 10.200.7.74 with SMTP id k10mr28229902qth.279.1510080577005; Tue, 07 Nov 2017 10:49:37 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:23 -0500 Message-Id: <20171107184930.12769-7-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:49:38 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:49:38 +0000 (UTC) for IP:'209.85.216.194' DOMAIN:'mail-qt0-f194.google.com' HELO:'mail-qt0-f194.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.194 mail-qt0-f194.google.com 209.85.216.194 mail-qt0-f194.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.30 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 06/13] vbox: Do not free disk definitions on cleanup 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: , MIME-Version: 1.0 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 07 Nov 2017 18:50:07 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Both vboxSnapshotGetReadWriteDisks and vboxSnapshotGetReadWriteDisks do not need to free the def->disks on cleanup because it's being done by the caller via virDomainSnaphotDefFree Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index d26ce1bce..79030e36e 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -5883,13 +5883,8 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPt= r def, ret =3D 0; =20 cleanup: - if (ret < 0) { - for (i =3D 0; i < def->ndisks; i++) - VIR_FREE(def->disks[i].src); - VIR_FREE(def->disks); - def->ndisks =3D 0; - } VBOX_RELEASE(snap); + return ret; } =20 @@ -6105,16 +6100,11 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr s= napshot, ret =3D 0; =20 cleanup: - if (ret < 0) { - for (i =3D 0; i < def->dom->ndisks; i++) - virDomainDiskDefFree(def->dom->disks[i]); - VIR_FREE(def->dom->disks); - def->dom->ndisks =3D 0; - } VBOX_RELEASE(disk); VBOX_RELEASE(storageController); gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); VBOX_RELEASE(snap); + return ret; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080584143533.609502664187; Tue, 7 Nov 2017 10:49:44 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 811E8329E; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 54CA860BE3; Tue, 7 Nov 2017 18:49:42 +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 EDE374A468; Tue, 7 Nov 2017 18:49:41 +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 vA7IndSE024836 for ; Tue, 7 Nov 2017 13:49:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id 7F8985D9CD; Tue, 7 Nov 2017 18:49:39 +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 794CE5D9C6 for ; Tue, 7 Nov 2017 18:49:39 +0000 (UTC) Received: from mail-qt0-f174.google.com (mail-qt0-f174.google.com [209.85.216.174]) (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 D50DE5FD7C for ; Tue, 7 Nov 2017 18:49:38 +0000 (UTC) Received: by mail-qt0-f174.google.com with SMTP id h4so276011qtk.8 for ; Tue, 07 Nov 2017 10:49:38 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.37 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:37 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 811E8329E Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 811E8329E Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="NlS0FIj0" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D50DE5FD7C Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com D50DE5FD7C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=tXOwcTaIWRL8H3IpDry++pe8rBkm7WZD9ionUr0ur0E=; b=NlS0FIj07aG5WhpQvgyVEYV4ZdAmlPqg3mYV8o/vRcI4j/flWWJMUdZofCQWTTmbK2 qgrQd8qJD10VGTbhO4HhpaSDSWT97J++oVl7NHRn0IDpWGpFUpr/QjAotI25bWgz9Nsy C07CdW09E5Cp9l/Xe800e7DX0YmefX9Mw2OX7TpFvvaRm2+G+3/OH10F415cZx7504C+ U70x5J3MHJvPKVjc0cUdjHjIwcKCYGpDW4AfoomCqY3wTapqeaWU0bKMRclavquiCSUu xTGTTTugyFPmAfdly9HNabJKgLSiYLjeNG2XNBd+dfbzfMoauEUel9+XzigRz0On3lly UYmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=tXOwcTaIWRL8H3IpDry++pe8rBkm7WZD9ionUr0ur0E=; b=HIsk/w15vBwy1SKf10Hi9lL81dE2PmM40cqFMV3UH/oaEMLZQtANqu21ak05srSDoT cl8x59QWhwvXx83P0K2m2qPOIwLZoqSvBuChP8m7h7XFbUEQvw0NEofMTWnpKOOQIJHX dRYY6pBymo5ZXAxin0XDUqW/dklARjHHfq7mRaEDlyoJ+ZjUGt9cIgr+ejG/6p1lNKST GUh5TToP7zWTHP542o5HDDIRqO10eRFruzwEki/elZNuRlBShtN/PosTHdNiAoOOI7bw A8pQtlDcln3v/m27WoH/gNr9MdfeiM71jJgyJ8kxJN8IsKcjyyXYxEmIPOHVqIEBSXGN XDWQ== X-Gm-Message-State: AMCzsaWLNwKK9G7Zk5kAxjcaJGKMFl7nPd222vyFM1+GUQh5jHvyuFGQ s8AibBJgCpMLAnaZ+z7vL+QROBqcab8= X-Google-Smtp-Source: ABhQp+Tg3fVL71mYWd7e1pPdrHRbg/gH8WH8BOhOzjX6/QUjucaJWYIYaW8pkhHyN1yWezWtSrOyUA== X-Received: by 10.200.46.114 with SMTP id s47mr29417077qta.165.1510080577934; Tue, 07 Nov 2017 10:49:37 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:24 -0500 Message-Id: <20171107184930.12769-8-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 07 Nov 2017 18:49:39 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 07 Nov 2017 18:49:39 +0000 (UTC) for IP:'209.85.216.174' DOMAIN:'mail-qt0-f174.google.com' HELO:'mail-qt0-f174.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: -0.031 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_PASS) 209.85.216.174 mail-qt0-f174.google.com 209.85.216.174 mail-qt0-f174.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 07/13] vbox: Swap vboxSnapshotGetReadOnlyDisks arguments 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: , MIME-Version: 1.0 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.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 07 Nov 2017 18:49:43 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" So that the function signature matches vboxSnapshotGetReadWriteDisks Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 79030e36e..4d39beb1e 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -5889,8 +5889,8 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, } =20 static int -vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot, - virDomainSnapshotDefPtr def) +vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr def, + virDomainSnapshotPtr snapshot) { virDomainPtr dom =3D snapshot->domain; vboxDriverPtr data =3D dom->conn->privateData; @@ -6173,7 +6173,7 @@ static char *vboxDomainSnapshotGetXMLDesc(virDomainSn= apshotPtr snapshot, if (vboxSnapshotGetReadWriteDisks(def, snapshot) < 0) VIR_DEBUG("Could not get read write disks for snapshot"); =20 - if (vboxSnapshotGetReadOnlyDisks(snapshot, def) < 0) + if (vboxSnapshotGetReadOnlyDisks(def, snapshot) < 0) VIR_DEBUG("Could not get Readonly disks for snapshot"); } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080600153561.6939789707365; Tue, 7 Nov 2017 10:50:00 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id CBE5A356E3; Tue, 7 Nov 2017 18:49:58 +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 A518B5C1A1; Tue, 7 Nov 2017 18:49: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 69C101800FC5; Tue, 7 Nov 2017 18:49:58 +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 vA7Infcb024872 for ; Tue, 7 Nov 2017 13:49:41 -0500 Received: by smtp.corp.redhat.com (Postfix) id 5AAAE60BEF; Tue, 7 Nov 2017 18:49:41 +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 53EF11B429 for ; Tue, 7 Nov 2017 18:49:41 +0000 (UTC) Received: from mail-qt0-f171.google.com (mail-qt0-f171.google.com [209.85.216.171]) (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 2892381DFB for ; Tue, 7 Nov 2017 18:49:40 +0000 (UTC) Received: by mail-qt0-f171.google.com with SMTP id z19so266594qtg.11 for ; Tue, 07 Nov 2017 10:49:40 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.37 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:38 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CBE5A356E3 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CBE5A356E3 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="GhM5BAtD" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2892381DFB Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 2892381DFB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=D8hGlPpQKYBnUJG3mzNcmFtmdDiEcNOwKB2/tGN0oxw=; b=GhM5BAtD98iiNaCUqywYMXFrsy117H1CqeEc4JQX+pe/EiC5/5uQcstebSl4CIshxk ok9q0OnIE4gBtz3EY0p6T3jCG4VJSiCIqM3LkxQIAukEodX+7elw18fv7CX/wVo05B0g BTLZ3Aj7uxp0MNBq/fSM0c3DTzlRAIcgg6s4315txyXaCcFNXNfkcUlINRXRr7VkdHJ6 Ic+XjS2Zih0hslkQlYVbuaji1nmh4GoCCo5A0W/lsjkm49hKVfq6Y+q+ku4gGwmizsQa FYjaTGsJIBjBamhFLN2QP4Yvj2ZNBDShNoeH7g55Knb33Xy+JUCgzqLfJ3wKqIclrJox WbUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=D8hGlPpQKYBnUJG3mzNcmFtmdDiEcNOwKB2/tGN0oxw=; b=BS7xet6+8jut9MyVrp0YUO1mvJQ9r821KMCgtyKzB+xZGYCEkDZB9/oDhxrN4Uyagt B0VI03zU7nFnirMBMpXwlIfMLMpz8rOp4HYigGXiRVKTeCMNrhKvNEEiAin8WY0tWulS 3Kc1/9QC8En5OBmuaHR7NGTekfE0LM/LoAxfGss2d6goo40WVOo6r6xJb1KbVskf4AKU 4ozpM7hrn+D3YN0+XYGzFTeGm4w/uTTF4cO+3l2N26VZ7aoL0sX87XT6bDNhmVzMTYCi ce9OoQ7mdylAtJ+Fd0TPb+CSaNVdr3fChLz9Xvg2GScBT14goFDNzJsADCpvQh5r6F5N ocEA== X-Gm-Message-State: AMCzsaWEKyFhDjwmcme2+W0EDJQWNhmwj4kFC2ZqrkoKVutCHfCyUJNt MewST2Roke0XZ66gm+WbCH+LeofuggA= X-Google-Smtp-Source: ABhQp+SKDkeFoBDXYYRhEPgSfvpw+NU+gYgrZ3mFR9D9NKFRgIYKfXrShNC1FK/oK95soW4KzOoVfA== X-Received: by 10.237.63.202 with SMTP id w10mr29407196qth.56.1510080578846; Tue, 07 Nov 2017 10:49:38 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:25 -0500 Message-Id: <20171107184930.12769-9-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 07 Nov 2017 18:49:40 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 07 Nov 2017 18:49:40 +0000 (UTC) for IP:'209.85.216.171' DOMAIN:'mail-qt0-f171.google.com' HELO:'mail-qt0-f171.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.171 mail-qt0-f171.google.com 209.85.216.171 mail-qt0-f171.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 08/13] vbox: Correctly generate drive name in dumpxml 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: , MIME-Version: 1.0 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:49:59 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" If a VBOX VM has e.g. a SATA and SCSI disk attached, the XML generated by dumpxml used to produce "sda" for both of those disks. This is an invalid domain XML as libvirt does not allow duplicate device names. To address this, keep the running total of disks that will use "sd" prefix for device name and pass it to the vboxGenerateMediumName which no longer tries to "compute" the value based only on current and max port and slot values. After this the vboxGetMaxPortSlotValues is not needed and was deleted. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 192 ++++++++++++++-------------------------------= ---- 1 file changed, 52 insertions(+), 140 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 4d39beb1e..57b0fd515 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -290,61 +290,6 @@ static int openSessionForMachine(vboxDriverPtr data, c= onst unsigned char *dom_uu return 0; } =20 -/** - * function to get the values for max port per - * instance and max slots per port for the devices - * - * @returns true on Success, false on failure. - * @param vbox Input IVirtualBox pointer - * @param maxPortPerInst Output array of max port per instance - * @param maxSlotPerPort Output array of max slot per port - * - */ - -static bool vboxGetMaxPortSlotValues(IVirtualBox *vbox, - PRUint32 *maxPortPerInst, - PRUint32 *maxSlotPerPort) -{ - ISystemProperties *sysProps =3D NULL; - - if (!vbox) - return false; - - gVBoxAPI.UIVirtualBox.GetSystemProperties(vbox, &sysProps); - - if (!sysProps) - return false; - - gVBoxAPI.UISystemProperties.GetMaxPortCountForStorageBus(sysProps, - StorageBus_ID= E, - &maxPortPerIn= st[StorageBus_IDE]); - gVBoxAPI.UISystemProperties.GetMaxPortCountForStorageBus(sysProps, - StorageBus_SA= TA, - &maxPortPerIn= st[StorageBus_SATA]); - gVBoxAPI.UISystemProperties.GetMaxPortCountForStorageBus(sysProps, - StorageBus_SC= SI, - &maxPortPerIn= st[StorageBus_SCSI]); - gVBoxAPI.UISystemProperties.GetMaxPortCountForStorageBus(sysProps, - StorageBus_Fl= oppy, - &maxPortPerIn= st[StorageBus_Floppy]); - - gVBoxAPI.UISystemProperties.GetMaxDevicesPerPortForStorageBus(sysProps, - StorageB= us_IDE, - &maxSlot= PerPort[StorageBus_IDE]); - gVBoxAPI.UISystemProperties.GetMaxDevicesPerPortForStorageBus(sysProps, - StorageB= us_SATA, - &maxSlot= PerPort[StorageBus_SATA]); - gVBoxAPI.UISystemProperties.GetMaxDevicesPerPortForStorageBus(sysProps, - StorageB= us_SCSI, - &maxSlot= PerPort[StorageBus_SCSI]); - gVBoxAPI.UISystemProperties.GetMaxDevicesPerPortForStorageBus(sysProps, - StorageB= us_Floppy, - &maxSlot= PerPort[StorageBus_Floppy]); - - VBOX_RELEASE(sysProps); - - return true; -} =20 /** * function to generate the name for medium, @@ -352,57 +297,39 @@ static bool vboxGetMaxPortSlotValues(IVirtualBox *vbo= x, * * @returns null terminated string with device name or NULL * for failures - * @param conn Input Connection Pointer * @param storageBus Input storage bus type - * @param deviceInst Input device instance number * @param devicePort Input port number * @param deviceSlot Input slot number - * @param aMaxPortPerInst Input array of max port per device instance - * @param aMaxSlotPerPort Input array of max slot per device port - * + * @param sdCount Running total of disk devices with "sd" pr= efix */ -static char *vboxGenerateMediumName(PRUint32 storageBus, - PRInt32 deviceInst, - PRInt32 devicePort, - PRInt32 deviceSlot, - PRUint32 *aMaxPortPerInst, - PRUint32 *aMaxSlotPerPort) +static char * +vboxGenerateMediumName(PRUint32 storageBus, + PRInt32 devicePort, + PRInt32 deviceSlot, + size_t sdCount) { const char *prefix =3D NULL; char *name =3D NULL; int total =3D 0; - PRUint32 maxPortPerInst =3D 0; - PRUint32 maxSlotPerPort =3D 0; - - if (!aMaxPortPerInst || - !aMaxSlotPerPort) - return NULL; =20 if ((storageBus < StorageBus_IDE) || (storageBus > StorageBus_Floppy)) return NULL; =20 - maxPortPerInst =3D aMaxPortPerInst[storageBus]; - maxSlotPerPort =3D aMaxSlotPerPort[storageBus]; - total =3D (deviceInst * maxPortPerInst * maxSlotPerPort) - + (devicePort * maxSlotPerPort) - + deviceSlot; - if (storageBus =3D=3D StorageBus_IDE) { prefix =3D "hd"; + total =3D devicePort * 2 + deviceSlot; } else if ((storageBus =3D=3D StorageBus_SATA) || (storageBus =3D=3D StorageBus_SCSI)) { prefix =3D "sd"; + total =3D sdCount; } else if (storageBus =3D=3D StorageBus_Floppy) { + total =3D deviceSlot; prefix =3D "fd"; } =20 name =3D virIndexToDiskName(total, prefix); =20 - VIR_DEBUG("name=3D%s, total=3D%d, storageBus=3D%u, deviceInst=3D%d, " - "devicePort=3D%d deviceSlot=3D%d, maxPortPerInst=3D%u maxSlotPer= Port=3D%u", - NULLSTR(name), total, storageBus, deviceInst, devicePort, - deviceSlot, maxPortPerInst, maxSlotPerPort); return name; } =20 @@ -3259,9 +3186,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) { vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; int ret =3D -1, diskCount =3D 0; - size_t i; - PRUint32 maxPortPerInst[StorageBus_Floppy + 1] =3D {}; - PRUint32 maxSlotPerPort[StorageBus_Floppy + 1] =3D {}; + size_t sdCount =3D 0, i; =20 def->ndisks =3D 0; gVBoxAPI.UArray.vboxArrayGet(&mediumAttachments, machine, @@ -3293,9 +3218,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) def->disks[i] =3D disk; } =20 - if (!vboxGetMaxPortSlotValues(data->vboxObj, maxPortPerInst, maxSlotPe= rPort)) - goto cleanup; - /* get the attachment details here */ for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks; = i++) { IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; @@ -3307,7 +3229,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) IMedium *medium =3D NULL; PRUnichar *mediumLocUtf16 =3D NULL; char *mediumLocUtf8 =3D NULL; - PRUint32 deviceInst =3D 0; PRInt32 devicePort =3D 0; PRInt32 deviceSlot =3D 0; =20 @@ -3348,11 +3269,30 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) } =20 gVBoxAPI.UIStorageController.GetBus(storageController, &storageBus= ); + gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &devicePort); + gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &deviceSlot); + + def->disks[diskCount]->dst =3D vboxGenerateMediumName(storageBus, + devicePort, + deviceSlot, + sdCount); + if (!def->disks[diskCount]->dst) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not generate medium name for the disk " + "at: port:%d, slot:%d"), devicePort, deviceSl= ot); + VBOX_RELEASE(medium); + VBOX_RELEASE(storageController); + + goto cleanup; + } + if (storageBus =3D=3D StorageBus_IDE) { def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_IDE; } else if (storageBus =3D=3D StorageBus_SATA) { + sdCount++; def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SATA; } else if (storageBus =3D=3D StorageBus_SCSI) { + sdCount++; def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; } else if (storageBus =3D=3D StorageBus_Floppy) { def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_FDC; @@ -3366,24 +3306,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr dat= a, IMachine *machine) else if (deviceType =3D=3D DeviceType_DVD) def->disks[diskCount]->device =3D VIR_DOMAIN_DISK_DEVICE_CDROM; =20 - gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &devicePort); - gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &deviceSlot); - def->disks[diskCount]->dst =3D vboxGenerateMediumName(storageBus, - deviceInst, - devicePort, - deviceSlot, - maxPortPerInst, - maxSlotPerPort= ); - if (!def->disks[diskCount]->dst) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not generate medium name for the disk " - "at: controller instance:%u, port:%d, slot:%d= "), - deviceInst, devicePort, deviceSlot); - VBOX_RELEASE(medium); - VBOX_RELEASE(storageController); - - goto cleanup; - } =20 gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); if (readOnly =3D=3D PR_TRUE) @@ -5664,9 +5586,7 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, ISnapshot *snap =3D NULL; IMachine *snapMachine =3D NULL; vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; - PRUint32 maxPortPerInst[StorageBus_Floppy + 1] =3D {}; - PRUint32 maxSlotPerPort[StorageBus_Floppy + 1] =3D {}; - int diskCount =3D 0; + size_t diskCount =3D 0, sdCount =3D 0; nsresult rc; vboxIID snapIid; char *snapshotUuidStr =3D NULL; @@ -5735,9 +5655,6 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, goto cleanup; } =20 - if (!vboxGetMaxPortSlotValues(data->vboxObj, maxPortPerInst, maxSlotPe= rPort)) - goto cleanup; - /* get the attachment details here */ for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks; = i++) { IStorageController *storageController =3D NULL; @@ -5747,7 +5664,6 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, IMedium *disk =3D NULL; PRUnichar *childLocUtf16 =3D NULL; char *childLocUtf8 =3D NULL; - PRUint32 deviceInst =3D 0; PRInt32 devicePort =3D 0; PRInt32 deviceSlot =3D 0; vboxArray children =3D VBOX_ARRAY_INITIALIZER; @@ -5865,11 +5781,9 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPt= r def, =20 def->disks[diskCount].src->type =3D VIR_STORAGE_TYPE_F= ILE; def->disks[diskCount].name =3D vboxGenerateMediumName(= storageBus, - de= viceInst, de= vicePort, de= viceSlot, - ma= xPortPerInst, - ma= xSlotPerPort); + sd= Count); } VBOX_UTF8_FREE(diskSnapIdStr); } @@ -5877,6 +5791,9 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, VBOX_RELEASE(storageController); VBOX_RELEASE(disk); diskCount++; + + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Storage= Bus_SCSI) + sdCount++; } gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); =20 @@ -5902,10 +5819,7 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr= def, IMedium *disk =3D NULL; nsresult rc; vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; - size_t i =3D 0; - PRUint32 maxPortPerInst[StorageBus_Floppy + 1] =3D {}; - PRUint32 maxSlotPerPort[StorageBus_Floppy + 1] =3D {}; - int diskCount =3D 0; + size_t i =3D 0, diskCount =3D 0, sdCount =3D 0; int ret =3D -1; =20 if (!data->vboxObj) @@ -5968,9 +5882,6 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr = def, goto cleanup; } =20 - if (!vboxGetMaxPortSlotValues(data->vboxObj, maxPortPerInst, maxSlotPe= rPort)) - goto cleanup; - /* get the attachment details here */ for (i =3D 0; i < mediumAttachments.count && diskCount < def->dom->ndi= sks; i++) { PRUnichar *storageControllerName =3D NULL; @@ -5979,7 +5890,6 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr = def, PRBool readOnly =3D PR_FALSE; PRUnichar *mediumLocUtf16 =3D NULL; char *mediumLocUtf8 =3D NULL; - PRUint32 deviceInst =3D 0; PRInt32 devicePort =3D 0; PRInt32 deviceSlot =3D 0; IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; @@ -6054,11 +5964,26 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPt= r def, _("Cannot get read only attribute")); goto cleanup; } + + def->dom->disks[diskCount]->dst =3D vboxGenerateMediumName(storage= Bus, + devicePor= t, + deviceSlo= t, + sdCount); + if (!def->dom->disks[diskCount]->dst) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not generate medium name for the disk " + "at: port:%d, slot:%d"), devicePort, deviceSl= ot); + ret =3D -1; + goto cleanup; + } + if (storageBus =3D=3D StorageBus_IDE) { def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_IDE; } else if (storageBus =3D=3D StorageBus_SATA) { + sdCount++; def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SATA; } else if (storageBus =3D=3D StorageBus_SCSI) { + sdCount++; def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; } else if (storageBus =3D=3D StorageBus_Floppy) { def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_FDC; @@ -6080,21 +6005,8 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr= def, if (readOnly =3D=3D PR_TRUE) def->dom->disks[diskCount]->src->readonly =3D true; def->dom->disks[diskCount]->src->type =3D VIR_STORAGE_TYPE_FILE; - def->dom->disks[diskCount]->dst =3D vboxGenerateMediumName(storage= Bus, - deviceIns= t, - devicePor= t, - deviceSlo= t, - maxPortPe= rInst, - maxSlotPe= rPort); - if (!def->dom->disks[diskCount]->dst) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not generate medium name for the disk " - "at: controller instance:%u, port:%d, slot:%d= "), - deviceInst, devicePort, deviceSlot); - ret =3D -1; - goto cleanup; - } - diskCount ++; + + diskCount++; } =20 ret =3D 0; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080613708778.3632718319467; Tue, 7 Nov 2017 10:50:13 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 271497EAAF; Tue, 7 Nov 2017 18:50:12 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E8D536BF6F; Tue, 7 Nov 2017 18:50:11 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A4CD93D38A; Tue, 7 Nov 2017 18:50:11 +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 vA7Ingdk024882 for ; Tue, 7 Nov 2017 13:49:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id 537D5512F7; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mx1.redhat.com (ext-mx10.extmail.prod.ext.phx2.redhat.com [10.5.110.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4D50860171 for ; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mail-qk0-f169.google.com (mail-qk0-f169.google.com [209.85.220.169]) (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 C6FC65D687 for ; Tue, 7 Nov 2017 18:49:40 +0000 (UTC) Received: by mail-qk0-f169.google.com with SMTP id 78so299149qkz.0 for ; Tue, 07 Nov 2017 10:49:40 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.38 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:39 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 271497EAAF Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 271497EAAF Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="WzljQIGK" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C6FC65D687 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C6FC65D687 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=uicW2qanJ8TZ3kAe1PcmTaXeZgXAre9gI5A0rMB0ecs=; b=WzljQIGK5JaoojCCLlgib5loaKH5Rl1Lih2IaJkJny1Vhnq53lUOC93SzGi1vVYx2F +VTdkb7upLWe+q7aXvXze7i9oeDFsIydL0JEqkIbbTeuc+T/IY4HjM32qhDH1TE3vKX6 eCmVGMOR6e/l/3SyaCrSkR69j8XIIVAIs7XLnwTLWMaHUqXtiSPBVfcw2i2zdxs8m7h0 Q18YccpF3m9bu8xUg0oezlVX6RrUcgSExFY03WbCYfqRKWWFS9mOexYHLFkzn3NDnjhR RUkCYC/ZcEbNIgAMvJvkZLyn9Mvyg4+Sf+KHEbhsCmtyLKP/BUu13dPTVV0doEEK8uzT kAIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=uicW2qanJ8TZ3kAe1PcmTaXeZgXAre9gI5A0rMB0ecs=; b=aCZe4jU33VVZaG29B6oqXYjNpIGb3UxnJ3+LpmDc02OgqL/82kw+mm1JJHIa+Ype1m fRplWgqKelgAugsg8o/TfRM4g3pDT+fOwX6ZG+hv/CsKNthlqYSP3GozSs37+ORKhGqA cw54cv9Dtp/ci6UEkB9Y5wVP97s+xi0pdIweHJuSM5PFaEEhwF7NcOYp2JIEUt4H24oG BrNYc00G0z5xTASQx/MER5uuJC1RdPu6D+gLaHerLifUIPSPc1pMFhXXwSeo2wHCHZWH r/EcgdZTgVjokyqYxm4pFkD1X1qNOSZYWDyUlS+/h0vUls3Pmqbldwmm5FnVOcTBfD45 IAwQ== X-Gm-Message-State: AJaThX7N/Vi2Yo0oP/kztOaolq4ihLt2/lxHJEsS7ajlzkDG1XXwWp7C JyRQOlEdtJEYjSGCq9V/YIFcPX+w+nA= X-Google-Smtp-Source: ABhQp+RW5msjCNx42kCmiVkMz2pGxzBR9kj/w+IZ5YoxWFHHld56PaTcT1XnMUu4OTsESDcwHurvEw== X-Received: by 10.55.55.203 with SMTP id e194mr12524364qka.179.1510080579636; Tue, 07 Nov 2017 10:49:39 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:26 -0500 Message-Id: <20171107184930.12769-10-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 07 Nov 2017 18:49:41 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 07 Nov 2017 18:49:41 +0000 (UTC) for IP:'209.85.220.169' DOMAIN:'mail-qk0-f169.google.com' HELO:'mail-qk0-f169.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.220.169 mail-qk0-f169.google.com 209.85.220.169 mail-qk0-f169.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.39 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 09/13] vbox: Cleanup vboxDumpDisks implementation 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: , MIME-Version: 1.0 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 07 Nov 2017 18:50:12 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Primer the code for further changes: * move variable declarations to the top of the function * group together free/release statements * error check and report VBOX API calls used Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 190 +++++++++++++++++++++++++++++++--------------= ---- 1 file changed, 122 insertions(+), 68 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 57b0fd515..248f315eb 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -3186,6 +3186,16 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr dat= a, IMachine *machine) { vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; int ret =3D -1, diskCount =3D 0; + IMediumAttachment *mediumAttachment =3D NULL; + IMedium *medium =3D NULL; + IStorageController *controller =3D NULL; + PRUnichar *controllerName =3D NULL, *mediumLocUtf16 =3D NULL; + PRUint32 deviceType, storageBus; + PRInt32 devicePort, deviceSlot; + PRBool readOnly; + nsresult rc; + virDomainDiskDefPtr disk =3D NULL; + char *mediumLocUtf8 =3D NULL; size_t sdCount =3D 0, i; =20 def->ndisks =3D 0; @@ -3194,15 +3204,14 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) =20 /* get the number of attachments */ for (i =3D 0; i < mediumAttachments.count; i++) { - IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; - if (imediumattach) { - IMedium *medium =3D NULL; + mediumAttachment =3D mediumAttachments.items[i]; + if (!mediumAttachment) + continue; =20 - gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &medium); - if (medium) { - def->ndisks++; - VBOX_RELEASE(medium); - } + gVBoxAPI.UIMediumAttachment.GetMedium(mediumAttachment, &medium); + if (medium) { + def->ndisks++; + VBOX_RELEASE(medium); } } =20 @@ -3211,7 +3220,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) goto cleanup; =20 for (i =3D 0; i < def->ndisks; i++) { - virDomainDiskDefPtr disk =3D virDomainDiskDefNew(NULL); + disk =3D virDomainDiskDefNew(NULL); if (!disk) goto cleanup; =20 @@ -3220,103 +3229,140 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr = data, IMachine *machine) =20 /* get the attachment details here */ for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks; = i++) { - IMediumAttachment *imediumattach =3D mediumAttachments.items[i]; - IStorageController *storageController =3D NULL; - PRUnichar *storageControllerName =3D NULL; - PRUint32 deviceType =3D DeviceType_Null; - PRUint32 storageBus =3D StorageBus_Null; - PRBool readOnly =3D PR_FALSE; - IMedium *medium =3D NULL; - PRUnichar *mediumLocUtf16 =3D NULL; - char *mediumLocUtf8 =3D NULL; - PRInt32 devicePort =3D 0; - PRInt32 deviceSlot =3D 0; - - if (!imediumattach) + mediumAttachment =3D mediumAttachments.items[i]; + controller =3D NULL; + controllerName =3D NULL; + deviceType =3D DeviceType_Null; + storageBus =3D StorageBus_Null; + readOnly =3D PR_FALSE; + medium =3D NULL; + mediumLocUtf16 =3D NULL; + mediumLocUtf8 =3D NULL; + devicePort =3D 0; + deviceSlot =3D 0; + disk =3D def->disks[diskCount]; + + if (!mediumAttachment) continue; =20 - gVBoxAPI.UIMediumAttachment.GetMedium(imediumattach, &medium); + rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(mediumAttachment, &me= dium); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get IMedium, rc=3D%08x"), rc); + goto cleanup; + } + if (!medium) continue; =20 - gVBoxAPI.UIMediumAttachment.GetController(imediumattach, &storageC= ontrollerName); - if (!storageControllerName) { - VBOX_RELEASE(medium); - continue; + rc =3D gVBoxAPI.UIMediumAttachment.GetController(mediumAttachment, + &controllerName); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to get storage controller name, rc=3D= %08x"), + rc); + goto cleanup; } =20 - gVBoxAPI.UIMachine.GetStorageControllerByName(machine, - storageControllerNam= e, - &storageController); - VBOX_UTF16_FREE(storageControllerName); - if (!storageController) { - VBOX_RELEASE(medium); - continue; + rc =3D gVBoxAPI.UIMachine.GetStorageControllerByName(machine, + controllerName, + &controller); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get storage controller by name, rc= =3D%08x"), + rc); + goto cleanup; + } + + rc =3D gVBoxAPI.UIMedium.GetLocation(medium, &mediumLocUtf16); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get medium storage location, rc=3D= %08x"), + rc); + goto cleanup; } =20 - gVBoxAPI.UIMedium.GetLocation(medium, &mediumLocUtf16); VBOX_UTF16_TO_UTF8(mediumLocUtf16, &mediumLocUtf8); - VBOX_UTF16_FREE(mediumLocUtf16); - ignore_value(virDomainDiskSetSource(def->disks[diskCount], - mediumLocUtf8)); - VBOX_UTF8_FREE(mediumLocUtf8); =20 - if (!virDomainDiskGetSource(def->disks[diskCount])) { - VBOX_RELEASE(medium); - VBOX_RELEASE(storageController); + if (virDomainDiskSetSource(disk, mediumLocUtf8) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Could not set disk source")); + goto cleanup; + } =20 + rc =3D gVBoxAPI.UIMediumAttachment.GetType(mediumAttachment, &devi= ceType); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get device type, rc=3D%08x"), rc); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetPort(mediumAttachment, &devi= cePort); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get device port, rc=3D%08x"), rc); + goto cleanup; + } + rc =3D gVBoxAPI.UIMediumAttachment.GetDevice(mediumAttachment, &de= viceSlot); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get device slot, rc=3D%08x"), rc); + goto cleanup; + } + rc =3D gVBoxAPI.UIStorageController.GetBus(controller, &storageBus= ); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get storage controller bus, rc=3D%= 08x"), + rc); + goto cleanup; + } + rc =3D gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get read only state, rc=3D%08x"), = rc); goto cleanup; } =20 - gVBoxAPI.UIStorageController.GetBus(storageController, &storageBus= ); - gVBoxAPI.UIMediumAttachment.GetPort(imediumattach, &devicePort); - gVBoxAPI.UIMediumAttachment.GetDevice(imediumattach, &deviceSlot); + disk->dst =3D vboxGenerateMediumName(storageBus, devicePort, devic= eSlot, + sdCount); =20 - def->disks[diskCount]->dst =3D vboxGenerateMediumName(storageBus, - devicePort, - deviceSlot, - sdCount); - if (!def->disks[diskCount]->dst) { + if (!disk->dst) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not generate medium name for the disk " "at: port:%d, slot:%d"), devicePort, deviceSl= ot); - VBOX_RELEASE(medium); - VBOX_RELEASE(storageController); - goto cleanup; } =20 if (storageBus =3D=3D StorageBus_IDE) { - def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_IDE; + disk->bus =3D VIR_DOMAIN_DISK_BUS_IDE; } else if (storageBus =3D=3D StorageBus_SATA) { sdCount++; - def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SATA; + disk->bus =3D VIR_DOMAIN_DISK_BUS_SATA; } else if (storageBus =3D=3D StorageBus_SCSI) { sdCount++; - def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; + disk->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; } else if (storageBus =3D=3D StorageBus_Floppy) { - def->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_FDC; + disk->bus =3D VIR_DOMAIN_DISK_BUS_FDC; } =20 - gVBoxAPI.UIMediumAttachment.GetType(imediumattach, &deviceType); if (deviceType =3D=3D DeviceType_HardDisk) - def->disks[diskCount]->device =3D VIR_DOMAIN_DISK_DEVICE_DISK; + disk->device =3D VIR_DOMAIN_DISK_DEVICE_DISK; else if (deviceType =3D=3D DeviceType_Floppy) - def->disks[diskCount]->device =3D VIR_DOMAIN_DISK_DEVICE_FLOPP= Y; + disk->device =3D VIR_DOMAIN_DISK_DEVICE_FLOPPY; else if (deviceType =3D=3D DeviceType_DVD) - def->disks[diskCount]->device =3D VIR_DOMAIN_DISK_DEVICE_CDROM; - + disk->device =3D VIR_DOMAIN_DISK_DEVICE_CDROM; =20 - gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); if (readOnly =3D=3D PR_TRUE) - def->disks[diskCount]->src->readonly =3D true; + disk->src->readonly =3D true; =20 - virDomainDiskSetType(def->disks[diskCount], - VIR_STORAGE_TYPE_FILE); + virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE); =20 - VBOX_RELEASE(medium); - VBOX_RELEASE(storageController); diskCount++; + + VBOX_UTF16_FREE(controllerName); + VBOX_UTF8_FREE(mediumLocUtf8); + VBOX_UTF16_FREE(mediumLocUtf16); + VBOX_RELEASE(medium); + VBOX_RELEASE(controller); } =20 ret =3D 0; @@ -3324,6 +3370,14 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr dat= a, IMachine *machine) cleanup: gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); =20 + if (ret < 0) { + VBOX_UTF16_FREE(controllerName); + VBOX_UTF8_FREE(mediumLocUtf8); + VBOX_UTF16_FREE(mediumLocUtf16); + VBOX_RELEASE(medium); + VBOX_RELEASE(controller); + } + return ret; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151008060350251.67408338967084; Tue, 7 Nov 2017 10:50:03 -0800 (PST) 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 A11E461E42; Tue, 7 Nov 2017 18:50:01 +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 484E55D979; Tue, 7 Nov 2017 18:50: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 011B63FCFB; Tue, 7 Nov 2017 18:50:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vA7IngU7024886 for ; Tue, 7 Nov 2017 13:49:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id 5A9F55EDE4; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mx1.redhat.com (ext-mx02.extmail.prod.ext.phx2.redhat.com [10.5.110.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 55B055EDE0 for ; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mail-qk0-f171.google.com (mail-qk0-f171.google.com [209.85.220.171]) (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 420298765C for ; Tue, 7 Nov 2017 18:49:41 +0000 (UTC) Received: by mail-qk0-f171.google.com with SMTP id n66so267318qki.8 for ; Tue, 07 Nov 2017 10:49:41 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.39 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:39 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A11E461E42 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A11E461E42 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="2G6f6vr5" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 420298765C Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 420298765C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=NxQqW3hdWHbs5KNK0uLPFX/eh57ya1AHr9vWwrZOOIY=; b=2G6f6vr5TYvk84gkNaHyWfK7jj4eGx4zNSUBBVIpX9VGlWjPLQtZ/iUz6xFXWsvRZi EUyprcmUSMMo2i1r6Qyl/J6UMNTWoq/b/YcteptJf/ZSd1HObW7f7xPa18OW81JWJg8K HjJuBQ6FL9O2/i7DQeK2n4CVS4lKMw8NsaNn/Vr53fnUs7A/qdwlOa6XLiMxj+4210MU z+9e4AfEAKVustzCxdLBJ5qjA1bOFqU23uT9/Vp9MQn2032i8k1qJHC5q//rReh8gtOT PS3s3rWgzmjvUy0N8zb0gVZ5pEjl8cfobR8K9fM8Om6p1NhYwSl8lLUsgqo6FSf99JpU ITug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=NxQqW3hdWHbs5KNK0uLPFX/eh57ya1AHr9vWwrZOOIY=; b=BBgthUXZ/IFYUkSS6/i04jSbP+0uex+Gvw1QMYUhCKrLbL8Nm8JgzO3Al8tDdGoJxu L4XUUQEXASBL53U8EDkqIWAopbrF9+y9HlDYFrXMF39zcRTFqzeMgLJCseYzhIGekJys RUJ7g2BFcuQryxEpWUK+JvIMZIDXfmowDzwvx8xhKa+3OLr4OS/Vm5OV+7EMoTi2cgxK S/tzg7smi3ikOOmmGrPoOU3A45L6JzvmKU8fIGHpHKHmCWOfAEjZHbogO5J03DARzmJP ZHzP815ktFMl3SXuQ6JEiQm+fpKcmLoMtv3mIYf3J90cB15hw4JKt1HVJOY50EMkbO0j rUzA== X-Gm-Message-State: AJaThX5yvUcBUvl1ZoTJy67gVaGlFwkYgs2vrTEs0LlABq1WnXOMPwsu f1K6DO+vWNQLDHBpdQjIX3cKiD4VDXU= X-Google-Smtp-Source: ABhQp+TjtxjNw8Rarjf9//Iiz970P3J9b5/M489ggIsZFmBZ0u/hVkP3Y6SWhcWeep1fQU51U/W1LQ== X-Received: by 10.55.161.4 with SMTP id k4mr3467172qke.204.1510080580197; Tue, 07 Nov 2017 10:49:40 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:27 -0500 Message-Id: <20171107184930.12769-11-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 07 Nov 2017 18:49:41 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 07 Nov 2017 18:49:41 +0000 (UTC) for IP:'209.85.220.171' DOMAIN:'mail-qk0-f171.google.com' HELO:'mail-qk0-f171.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: -2.811 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_PASS) 209.85.220.171 mail-qk0-f171.google.com 209.85.220.171 mail-qk0-f171.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.26 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 10/13] vbox: Process empty removable disks in dumpxml 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: , MIME-Version: 1.0 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.39]); Tue, 07 Nov 2017 18:50:02 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Previously any removable storage device without media attached was omitted from domain XML dump. They're still (rightfully) omitted in snapshot XMl dump but need to be accounted properly to for the device names to stay in 'sync' between domain and snapshot XML dumps. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 82 ++++++++++++++++++++++++++++++----------------= ---- 1 file changed, 49 insertions(+), 33 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 248f315eb..661e09a27 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -3185,7 +3185,7 @@ static int vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine) { vboxArray mediumAttachments =3D VBOX_ARRAY_INITIALIZER; - int ret =3D -1, diskCount =3D 0; + int ret =3D -1; IMediumAttachment *mediumAttachment =3D NULL; IMedium *medium =3D NULL; IStorageController *controller =3D NULL; @@ -3208,11 +3208,15 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) if (!mediumAttachment) continue; =20 - gVBoxAPI.UIMediumAttachment.GetMedium(mediumAttachment, &medium); - if (medium) { - def->ndisks++; - VBOX_RELEASE(medium); + rc =3D gVBoxAPI.UIMediumAttachment.GetMedium(mediumAttachment, &me= dium); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get IMedium, rc=3D%08x"), rc); + goto cleanup; } + + def->ndisks++; + VBOX_RELEASE(medium); } =20 /* Allocate mem, if fails return error */ @@ -3228,7 +3232,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) } =20 /* get the attachment details here */ - for (i =3D 0; i < mediumAttachments.count && diskCount < def->ndisks; = i++) { + for (i =3D 0; i < mediumAttachments.count; i++) { mediumAttachment =3D mediumAttachments.items[i]; controller =3D NULL; controllerName =3D NULL; @@ -3240,7 +3244,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) mediumLocUtf8 =3D NULL; devicePort =3D 0; deviceSlot =3D 0; - disk =3D def->disks[diskCount]; + disk =3D def->disks[i]; =20 if (!mediumAttachment) continue; @@ -3252,9 +3256,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) goto cleanup; } =20 - if (!medium) - continue; - rc =3D gVBoxAPI.UIMediumAttachment.GetController(mediumAttachment, &controllerName); if (NS_FAILED(rc)) { @@ -3274,22 +3275,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr dat= a, IMachine *machine) goto cleanup; } =20 - rc =3D gVBoxAPI.UIMedium.GetLocation(medium, &mediumLocUtf16); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not get medium storage location, rc=3D= %08x"), - rc); - goto cleanup; - } - - VBOX_UTF16_TO_UTF8(mediumLocUtf16, &mediumLocUtf8); - - if (virDomainDiskSetSource(disk, mediumLocUtf8) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not set disk source")); - goto cleanup; - } - rc =3D gVBoxAPI.UIMediumAttachment.GetType(mediumAttachment, &devi= ceType); if (NS_FAILED(rc)) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -3315,11 +3300,30 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) rc); goto cleanup; } - rc =3D gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); - if (NS_FAILED(rc)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Could not get read only state, rc=3D%08x"), = rc); - goto cleanup; + + if (medium) { + rc =3D gVBoxAPI.UIMedium.GetLocation(medium, &mediumLocUtf16); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get medium storage location, r= c=3D%08x"), + rc); + goto cleanup; + } + + VBOX_UTF16_TO_UTF8(mediumLocUtf16, &mediumLocUtf8); + + if (virDomainDiskSetSource(disk, mediumLocUtf8) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Could not set disk source")); + goto cleanup; + } + + rc =3D gVBoxAPI.UIMedium.GetReadOnly(medium, &readOnly); + if (NS_FAILED(rc)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Could not get read only state, rc=3D%08x= "), rc); + goto cleanup; + } } =20 disk->dst =3D vboxGenerateMediumName(storageBus, devicePort, devic= eSlot, @@ -3356,8 +3360,6 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) =20 virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE); =20 - diskCount++; - VBOX_UTF16_FREE(controllerName); VBOX_UTF8_FREE(mediumLocUtf8); VBOX_UTF16_FREE(mediumLocUtf16); @@ -5788,6 +5790,13 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPt= r def, =20 /* skip empty removable disk */ if (!disk) { + /* removable disks with empty (ejected) media won't be display= ed + * in XML, but we need to update "sdCount" so that device name= s match + * in domain dumpxml and snapshot dumpxml + */ + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI) + sdCount++; + VBOX_RELEASE(storageController); continue; } @@ -5996,6 +6005,13 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr= def, =20 /* skip empty removable disk */ if (!disk) { + /* removable disks with empty (ejected) media won't be display= ed + * in XML, but we need to update "sdCount" so that device name= s match + * in domain dumpxml and snapshot dumpxml + */ + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI) + sdCount++; + VBOX_RELEASE(storageController); continue; } --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080604590336.52273087438937; Tue, 7 Nov 2017 10:50:04 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 0787F624DA; Tue, 7 Nov 2017 18:50:03 +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 C000060CA5; Tue, 7 Nov 2017 18:50:02 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 16E683FADE; Tue, 7 Nov 2017 18:50:02 +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 vA7IngAn024892 for ; Tue, 7 Nov 2017 13:49:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id B09B7512F7; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mx1.redhat.com (ext-mx07.extmail.prod.ext.phx2.redhat.com [10.5.110.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AC0D860171 for ; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) (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 CC304C04B927 for ; Tue, 7 Nov 2017 18:49:41 +0000 (UTC) Received: by mail-qt0-f195.google.com with SMTP id 8so308135qtv.1 for ; Tue, 07 Nov 2017 10:49:41 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.40 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:40 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0787F624DA Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0787F624DA Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="vyU3SUmt" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CC304C04B927 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CC304C04B927 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=/6+zVlbeox2o4uajh3YggDsG9ja9o7JeLnnOvrFSmII=; b=vyU3SUmt3YhNZowIKue/KCLbDwgH0K1rNQRW/qd88gNTABaqgx3DDgueeuikvX0K0h EawsLWXvR/8HYu8DYLwjwFa4QOyUjtPE8ZJxfEC21qXBm0/8luuZtuYtocaz0tHlB7fo hv7ato63n2Kfcgd26ABAUFZRlpt3enbgXqogATS/tLXUC8m4OAvRt9x1/xy2fxudMCtz JEx9cub9zRBPj35+1jg1dkAk/DPkyoSQfwh48nSqeIclCKS5nsyMFr20RZ/t9gg6N24P 6Mq9RwD16JoIJw2d7NKype89AQaQwmB+clXUPrzlTJWa7/ORHe/1jqULvgwIcY+a2kMF 0WFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=/6+zVlbeox2o4uajh3YggDsG9ja9o7JeLnnOvrFSmII=; b=jbpO9b4Ryt+RuWhsws4FOnWHDazWjTQe/71YpU3X8Ja+bOuJ4OWRhDnsNg82/ehZYJ sSs86e/sERHiAmY4fq4rx6YBRh+nhl1yGfVLTTN/TAur/tg4vmHaPn+zcxaGAIs8OK1x FfbctU3TN8n+F8H23Vv+9jP+RjfeUwIFJX/t/rAw/rcJbh5WYyd1s/6QnpQPy6JPTnzT QO3kHFEw76AdYeydtPhEgR7rMafnvgGc/bagh+eHFayITCFU7vFPdENzzuohHFcjG1tN qB1er6jFSxCYANny/MFVk90m6DXtbt+TrlG27zSYfooNzDXtk5r+S1wTLFaVzzMIZPHr VQYg== X-Gm-Message-State: AJaThX5EcGj2vj+MJnC0udhaW6IDmqyAHZGiODPIsqkh483v8nE2ue0s rcHY9TONinSLvZg+JXC6Hcypsctfgts= X-Google-Smtp-Source: ABhQp+SYxn2dWKLJxxyB9n6yEYAm7noi7h9SWmOHitXmGEzTSGzD3HfDp7/MFQ+MhCMQDQG93iSLyA== X-Received: by 10.237.34.88 with SMTP id o24mr5800911qtc.191.1510080580761; Tue, 07 Nov 2017 10:49:40 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:28 -0500 Message-Id: <20171107184930.12769-12-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 07 Nov 2017 18:49:42 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 07 Nov 2017 18:49:42 +0000 (UTC) for IP:'209.85.216.195' DOMAIN:'mail-qt0-f195.google.com' HELO:'mail-qt0-f195.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.195 mail-qt0-f195.google.com 209.85.216.195 mail-qt0-f195.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.31 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 11/13] vbox: Generate disk address element in dumpxml 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: , MIME-Version: 1.0 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.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 07 Nov 2017 18:50:03 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch adds
element to each device since device names alone won't adequately reflect the storage device layout in the VM. With this patch, the ouput produced by dumpxml will faithfully reproduce the storage layout of the VM if used with define. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 51 ++++++++++++++++++++++++++++++++++++++++++----= ---- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 661e09a27..8da08240e 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -3336,25 +3336,60 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) goto cleanup; } =20 - if (storageBus =3D=3D StorageBus_IDE) { + disk->info.type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE; + disk->info.addr.drive.bus =3D 0; + disk->info.addr.drive.unit =3D devicePort; + + switch ((enum StorageBus) storageBus) { + case StorageBus_IDE: disk->bus =3D VIR_DOMAIN_DISK_BUS_IDE; - } else if (storageBus =3D=3D StorageBus_SATA) { - sdCount++; + disk->info.addr.drive.bus =3D devicePort; /* primary, secondar= y */ + disk->info.addr.drive.unit =3D deviceSlot; /* master, slave */ + + break; + case StorageBus_SATA: disk->bus =3D VIR_DOMAIN_DISK_BUS_SATA; - } else if (storageBus =3D=3D StorageBus_SCSI) { sdCount++; + + break; + case StorageBus_SCSI: disk->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; - } else if (storageBus =3D=3D StorageBus_Floppy) { + sdCount++; + + break; + case StorageBus_Floppy: disk->bus =3D VIR_DOMAIN_DISK_BUS_FDC; + + break; + case StorageBus_SAS: + case StorageBus_Null: + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Unsupported null storage bus")); + goto cleanup; } =20 - if (deviceType =3D=3D DeviceType_HardDisk) + switch ((enum DeviceType) deviceType) { + case DeviceType_HardDisk: disk->device =3D VIR_DOMAIN_DISK_DEVICE_DISK; - else if (deviceType =3D=3D DeviceType_Floppy) + + break; + case DeviceType_Floppy: disk->device =3D VIR_DOMAIN_DISK_DEVICE_FLOPPY; - else if (deviceType =3D=3D DeviceType_DVD) + + break; + case DeviceType_DVD: disk->device =3D VIR_DOMAIN_DISK_DEVICE_CDROM; =20 + break; + case DeviceType_Network: + case DeviceType_USB: + case DeviceType_SharedFolder: + case DeviceType_Null: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unsupported vbox device type: %d"), deviceTy= pe); + goto cleanup; + } + if (readOnly =3D=3D PR_TRUE) disk->src->readonly =3D true; =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080616642372.79397274770315; Tue, 7 Nov 2017 10:50:16 -0800 (PST) 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 mx1.redhat.com (Postfix) with ESMTPS id 3099A285BA; Tue, 7 Nov 2017 18:50:15 +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 10ED460BE3; Tue, 7 Nov 2017 18: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 CE8623D38D; Tue, 7 Nov 2017 18:50:14 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vA7Inhwf024897 for ; Tue, 7 Nov 2017 13:49:43 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4FA7B5EDE0; Tue, 7 Nov 2017 18:49:43 +0000 (UTC) Received: from mx1.redhat.com (ext-mx03.extmail.prod.ext.phx2.redhat.com [10.5.110.27]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4AD665D6A9 for ; Tue, 7 Nov 2017 18:49:43 +0000 (UTC) Received: from mail-qt0-f171.google.com (mail-qt0-f171.google.com [209.85.216.171]) (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 542AF7E424 for ; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: by mail-qt0-f171.google.com with SMTP id 1so295714qtn.3 for ; Tue, 07 Nov 2017 10:49:42 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.40 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:40 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 3099A285BA Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 3099A285BA Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="ECM1k9Be" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 542AF7E424 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 542AF7E424 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=2DnCflPrf+xHyJt5m1kh6sa+U6TuqfdKpFKeleOzC/o=; b=ECM1k9Be589hJEAdiunSbQIDxvqTMIuIrIWA69Xe0udBrbhI6e1ruzQH2ljWfpFY1r gy9ZTHjRoQcdyjLNrP2pvpzR/LxVB7xN0hca1e/nZ68AWnSzaSEUttutqAySND7Rv9D3 QhXMj0kquP/vLdjRWZRU7T90nn1qW3R73WsdL+hUt+me7+5bNTXW8QX5tCVqRytY2274 dqYMqZxiVrRoHh4GhQhz+3fbULFT6l0oU+nSC6vM9pY/i0V9R/p2TCWngAFnyRTcqed2 aRCr9L4QzNd2THt62qTjx7BkVWSJZiJvmRwNdFaDcN2+DJYixdjyJQkfqoa0HVgj1kJK OwRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=2DnCflPrf+xHyJt5m1kh6sa+U6TuqfdKpFKeleOzC/o=; b=CkT/ZX2m4bYHm9Ps8ry0Rr6mlIWCPvVSOh1PRj8dlL2PfsJVWqGnrxVqI8KDxC+IMv nnQyGZC35YYruK3DvNZa5NudoB6FcShAGa/akfd8Vy6OHskuLDFU9XKt+ZgbEoxdvg+F 3Uw6Lgn2WKBJfnyDcoivHAh9Q44JE6WZG4Q2qJr1EXjHrdtc3skFA82PDpcZPQPEdcRC jv3y3OmNIokja3/4JDVB5QFYZs9LEAT7POWxKYC5su66qb/RV3oFUYCWsWRZo/5YHDqu EKXi5GFaD4JXuMKx3Tlu0nZCUGXAh9FJXy3ZQ14itQSo8ogvxCvM9KSPj/7u7xYO4l5B eu6g== X-Gm-Message-State: AMCzsaWPQuTA2ltNzek7eXQZzVyadCF+MAFRuFlH9LY5Wh/nYeNiq5RI U9V5p5z/YEOJVUwpNIoKgnvCexesTF8= X-Google-Smtp-Source: ABhQp+SEm1f0s0yknKc7bavPA3XyuLOKFcieoeUa2gIvnT12VG6cbOOyx+jz1NE7s+DqdWlV0tdCWw== X-Received: by 10.200.47.85 with SMTP id k21mr30386743qta.286.1510080581314; Tue, 07 Nov 2017 10:49:41 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:29 -0500 Message-Id: <20171107184930.12769-13-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 07 Nov 2017 18:49:42 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 07 Nov 2017 18:49:42 +0000 (UTC) for IP:'209.85.216.171' DOMAIN:'mail-qt0-f171.google.com' HELO:'mail-qt0-f171.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: 0.469 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.171 mail-qt0-f171.google.com 209.85.216.171 mail-qt0-f171.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.27 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 12/13] vbox: Add SAS controller support 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: , MIME-Version: 1.0 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.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 07 Nov 2017 18:50:15 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In VirtualBox SAS and SCSI are separate controller types whereas libvirt does not make such distinction. This patch adds support for attaching the VBOX SAS controllers by mapping the 'lsisas1068' controller model in libvirt XML to VBOX SAS controller type. If VBOX VM has disks attached to both SCSI and SAS controller libvirt domain XML will have two elements with index and model attributes set accordingly. In this case, each respective element must have
element specified to assign it to respective SCSI controller. Reviewed-by: John Ferlan --- src/vbox/vbox_common.c | 86 ++++++++++++++++++++++++++++++++++++++++------= ---- src/vbox/vbox_common.h | 1 + 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 8da08240e..a1d9b2e7d 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -312,20 +312,27 @@ vboxGenerateMediumName(PRUint32 storageBus, char *name =3D NULL; int total =3D 0; =20 - if ((storageBus < StorageBus_IDE) || - (storageBus > StorageBus_Floppy)) - return NULL; - - if (storageBus =3D=3D StorageBus_IDE) { + switch ((enum StorageBus) storageBus) { + case StorageBus_IDE: prefix =3D "hd"; total =3D devicePort * 2 + deviceSlot; - } else if ((storageBus =3D=3D StorageBus_SATA) || - (storageBus =3D=3D StorageBus_SCSI)) { + + break; + case StorageBus_SATA: + case StorageBus_SCSI: + case StorageBus_SAS: prefix =3D "sd"; total =3D sdCount; - } else if (storageBus =3D=3D StorageBus_Floppy) { + + break; + case StorageBus_Floppy: total =3D deviceSlot; prefix =3D "fd"; + + break; + case StorageBus_Null: + + return NULL; } =20 name =3D virIndexToDiskName(total, prefix); @@ -391,11 +398,17 @@ vboxSetStorageController(virDomainControllerDefPtr co= ntroller, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: vboxModel =3D StorageControllerType_BusLogic; =20 + break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068: + /* in vbox, lsisas has a dedicated SAS bus type with no model = */ + VBOX_UTF16_FREE(controllerName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SAS_NAME, &controllerName); + vboxBusType =3D StorageBus_SAS; + break; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -1034,7 +1047,7 @@ static int vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr data, IMachine *machin= e) { size_t i; - int type, ret =3D 0; + int type, ret =3D 0, model =3D -1; const char *src =3D NULL; nsresult rc =3D 0; virDomainDiskDefPtr disk =3D NULL; @@ -1113,6 +1126,13 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr = data, IMachine *machine) case VIR_DOMAIN_DISK_BUS_SCSI: VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SCSI_NAME, &storageCtlName); =20 + model =3D virDomainDeviceFindControllerModel(def, &disk->info, + VIR_DOMAIN_CONTROLL= ER_TYPE_SCSI); + if (model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068) { + VBOX_UTF16_FREE(storageCtlName); + VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_SAS_NAME, &storageCtlNa= me); + } + break; case VIR_DOMAIN_DISK_BUS_FDC: VBOX_UTF8_TO_UTF16(VBOX_CONTROLLER_FLOPPY_NAME, &storageCtlNam= e); @@ -3127,6 +3147,9 @@ vboxDumpStorageControllers(virDomainDefPtr def, IMach= ine *machine) =20 break; case StorageControllerType_LsiLogicSas: + model =3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068; + + break; case StorageControllerType_IntelAhci: case StorageControllerType_I82078: case StorageControllerType_Null: @@ -3195,12 +3218,13 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) PRBool readOnly; nsresult rc; virDomainDiskDefPtr disk =3D NULL; + virDomainControllerDefPtr ctrl =3D NULL; char *mediumLocUtf8 =3D NULL; - size_t sdCount =3D 0, i; + size_t sdCount =3D 0, i, j; =20 def->ndisks =3D 0; gVBoxAPI.UArray.vboxArrayGet(&mediumAttachments, machine, - gVBoxAPI.UArray.handleMachineGetMediumAtt= achments(machine)); + gVBoxAPI.UArray.handleMachineGetMediumAttachments(machine= )); =20 /* get the number of attachments */ for (i =3D 0; i < mediumAttachments.count; i++) { @@ -3353,15 +3377,38 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr da= ta, IMachine *machine) =20 break; case StorageBus_SCSI: + case StorageBus_SAS: disk->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; sdCount++; =20 + /* In vbox, if there's a disk attached to SAS controller, ther= e will + * be libvirt SCSI controller present with model "lsi1068", an= d we + * need to find its index + */ + for (j =3D 0; j < def->ncontrollers; j++) { + ctrl =3D def->controllers[j]; + + if (ctrl->type !=3D VIR_DOMAIN_CONTROLLER_TYPE_SCSI) + continue; + + if (storageBus =3D=3D StorageBus_SAS && + ctrl->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LS= ISAS1068) { + disk->info.addr.drive.controller =3D ctrl->idx; + break; + } + + if (storageBus =3D=3D StorageBus_SCSI && + ctrl->model !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSIS= AS1068) { + disk->info.addr.drive.controller =3D ctrl->idx; + break; + } + } + break; case StorageBus_Floppy: disk->bus =3D VIR_DOMAIN_DISK_BUS_FDC; =20 break; - case StorageBus_SAS: case StorageBus_Null: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unsupported null storage bus")); @@ -5829,7 +5876,8 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr= def, * in XML, but we need to update "sdCount" so that device name= s match * in domain dumpxml and snapshot dumpxml */ - if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI) + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI || + storageBus =3D=3D StorageBus_SAS) sdCount++; =20 VBOX_RELEASE(storageController); @@ -5890,8 +5938,10 @@ vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPt= r def, VBOX_RELEASE(disk); diskCount++; =20 - if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Storage= Bus_SCSI) + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Storage= Bus_SCSI || + storageBus =3D=3D StorageBus_SAS) sdCount++; + } gVBoxAPI.UArray.vboxArrayRelease(&mediumAttachments); =20 @@ -6044,7 +6094,8 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr = def, * in XML, but we need to update "sdCount" so that device name= s match * in domain dumpxml and snapshot dumpxml */ - if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI) + if (storageBus =3D=3D StorageBus_SATA || storageBus =3D=3D Sto= rageBus_SCSI || + storageBus =3D=3D StorageBus_SAS) sdCount++; =20 VBOX_RELEASE(storageController); @@ -6087,7 +6138,8 @@ vboxSnapshotGetReadOnlyDisks(virDomainSnapshotDefPtr = def, } else if (storageBus =3D=3D StorageBus_SATA) { sdCount++; def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SATA; - } else if (storageBus =3D=3D StorageBus_SCSI) { + } else if (storageBus =3D=3D StorageBus_SCSI || + storageBus =3D=3D StorageBus_SAS) { sdCount++; def->dom->disks[diskCount]->bus =3D VIR_DOMAIN_DISK_BUS_SCSI; } else if (storageBus =3D=3D StorageBus_Floppy) { diff --git a/src/vbox/vbox_common.h b/src/vbox/vbox_common.h index 5dc87239d..05636fea2 100644 --- a/src/vbox/vbox_common.h +++ b/src/vbox/vbox_common.h @@ -332,6 +332,7 @@ enum HardDiskVariant # define VBOX_CONTROLLER_FLOPPY_NAME "Floppy Controller" # define VBOX_CONTROLLER_SATA_NAME "SATA Controller" # define VBOX_CONTROLLER_SCSI_NAME "SCSI Controller" +# define VBOX_CONTROLLER_SAS_NAME "SAS Controller" =20 /* Simplied definitions in vbox_CAPI_*.h */ =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 16:21:14 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 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1510080619210192.2840320410902; Tue, 7 Nov 2017 10:50:19 -0800 (PST) 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 C94D74DB11; Tue, 7 Nov 2017 18:50: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 7E8D85D971; Tue, 7 Nov 2017 18:50: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 484901801214; Tue, 7 Nov 2017 18:50:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vA7InhN0024910 for ; Tue, 7 Nov 2017 13:49:43 -0500 Received: by smtp.corp.redhat.com (Postfix) id BE27D5EDE0; Tue, 7 Nov 2017 18:49:43 +0000 (UTC) Received: from mx1.redhat.com (ext-mx02.extmail.prod.ext.phx2.redhat.com [10.5.110.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B9C745D6A9 for ; Tue, 7 Nov 2017 18:49:43 +0000 (UTC) Received: from mail-qt0-f181.google.com (mail-qt0-f181.google.com [209.85.216.181]) (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 C81A087649 for ; Tue, 7 Nov 2017 18:49:42 +0000 (UTC) Received: by mail-qt0-f181.google.com with SMTP id z28so257746qtz.13 for ; Tue, 07 Nov 2017 10:49:42 -0800 (PST) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id t34sm1313175qtb.79.2017.11.07.10.49.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Nov 2017 10:49:41 -0800 (PST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C94D74DB11 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C94D74DB11 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=datto-com.20150623.gappssmtp.com header.i=@datto-com.20150623.gappssmtp.com header.b="odyZZbMe" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C81A087649 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=datto.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzamirski@datto.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C81A087649 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datto-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=gHWZchsP+kIBQJMaApKpS45nqhV8FsQvsBMT7Eo53jA=; b=odyZZbMeVvCpfE2unkuAFVJhna9MOPIKQhyQJ1euM3eqPHlb4ooUvMfG5rtxZe22Ie eVlA7xtb7QengXo6ICZfm+ujs7qf2TDr7aKHFOYWz0sYIo5qyxjjay+Bd59+VoShM62r achRz7k8/5NlzVGwz9KlfGilNDvVqyRsQvhI5T2trFpirkUNDz/Y4h5dk2J3XmBH4Zst 29LcsZqob/Vwjk37rOSupyZXkzpGkosSvrux66VkMFV8xsNXfuKRyN/xL7Lzwn+UTZDH KbnIMYb2H4YniE+jgDr4+CvSL1z93pQkX/JZUVh3+0O7XdE2kaVc8cChSD/zcvqHg9zb eqow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=gHWZchsP+kIBQJMaApKpS45nqhV8FsQvsBMT7Eo53jA=; b=YYNCAqHQFdZ0XGOG2i10XKgQYGpfUqqzzJDbKpMkWZ3eud5luzlxRXh6bkfwkwZSod foBVa+u46LdaMFwvHUxRlPTHO+u4uz0IoWj+4nDQPioGJsBDaOxRONM0jab8lsfaY9zo itWIJgHTRme+urOuIWjKCjqoYzbvOmPI1Jp41PH/ffK9kuQSPA3EYcBu7uDdSCgsbx3P K0La7wOUbLS8KwZUoTZT42cgHTqyf3HZzSPSy6tbJdt7pjgXz4rjr1GYGIp5Pe84Txc1 +Ir93ONfwRD+HlngV3shbGFZ4QP9zoXPlSsq/XzOsoAkU/QazRpGaoRbJzcssZl6p34w VJAw== X-Gm-Message-State: AMCzsaWK+BQMzIpHphiuxmfxOD77SwXATps6JlkdTc92CTp5j6r89RHu ruG+Z7oC8KiR+9grQvaQIzYn99bDcXo= X-Google-Smtp-Source: ABhQp+QdYH5tIs6V5b3HX1y7soeM/fUOWr6t5DDg8PixgrVadjDnEColbFMGjwdOJY4qwDRMRYyM2g== X-Received: by 10.200.55.251 with SMTP id e56mr30912638qtc.42.1510080581830; Tue, 07 Nov 2017 10:49:41 -0800 (PST) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 7 Nov 2017 13:49:30 -0500 Message-Id: <20171107184930.12769-14-dzamirski@datto.com> In-Reply-To: <20171107184930.12769-1-dzamirski@datto.com> References: <20171107184930.12769-1-dzamirski@datto.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 07 Nov 2017 18:49:43 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 07 Nov 2017 18:49:43 +0000 (UTC) for IP:'209.85.216.181' DOMAIN:'mail-qt0-f181.google.com' HELO:'mail-qt0-f181.google.com' FROM:'dzamirski@datto.com' RCPT:'' X-RedHat-Spam-Score: -0.221 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.216.181 mail-qt0-f181.google.com 209.85.216.181 mail-qt0-f181.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.26 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 13/13] docs: Update news.xml with vbox changes. 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: , MIME-Version: 1.0 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.29]); Tue, 07 Nov 2017 18:50:18 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Reviewed-by: John Ferlan --- docs/news.xml | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 74 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index ef855d895..454c63d8b 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -37,8 +37,82 @@
+ + + vbox: Add support for configuring storage controllers + + + The VirtualBox driver now supports the <controller><= /code> + element in the domain XML for configuring storage controllers in= VBOX + VMs. Additionally, libvirt's domain XML schema was updated to a= llow + optional model attribute for <controller + type=3D'ide'> which is used by the VBOX driver to = set the + IDE controller model to be one of 'piix4', 'piix4' (default), or + 'ich6'. Finally, with this change dumpxml generates + <controller> elements that correspond to curr= ent + VBOX VM storage controller configuration. + + + + + vbox: Add support for attaching empty removable disks + + + The VirutalBox driver now supports adding CD-ROM and floppy disk + devices that do not have the disk source specified. Previously s= uch + devices were silently ignored. + + + + + vbox: Add support for attaching SAS storage controllers + + + In VirtualBox, SCSI and SAS are distinct controller types whereas + libvirt does not make such distinction. Therefore, the VBOX driv= er was + updated to allow attaching SAS controllers via <control= ler + type=3D'scsi' model=3D'lsisas1068'> element. If th= ere are + both SCSI and SAS controllers present in the VBOX VM, the domain= XML + can associate the disk device using the <address> + element with the controller attribute, and optional= ly, + set the port via unit attribute. + +
+ + + vbox: Do not ignore failures to attach disk devices when defining + + + The define now fails and reports an error if any of= the + controller or disk devices specified i= n the + domain XML fail to attach to the VirtualBox VM. + + + + + vbox: Fix dumpxml to always output disk devices=20 + + + The VirtualBox driver was ignoring any disk devices in + dumpxml output if there was a SAS storage controller + attached to the VM. + + + + + vbox: Fix dumpxml to always generate valid domain X= ML + + + When a VirtualBox VM has multiple disks attached, each to a diff= erent + storage controller that uses 'sd' prefix for block device names = e.g. + one disk attached to SATA and one to SCSI controller, it no long= er + generates XML where both would have 'sda' device name assigned. + Instead it properly assigns 'sda' and 'sdb' to those disks in the + order of appearance. + +
--=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list