From nobody Tue Sep 9 02:51:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1748860440; cv=none; d=zohomail.com; s=zohoarc; b=V5PUUUNhdtt1aYNS2JPOubBAO3+ttbkrpMkUHw0JRXeZNVws/XwV9guWxEbToDPxwxs1eVctX83t2e7o6pbxr761FQoPciCQnO251c+7GGvA/p7RKAd/+nbhm3MFJs8fZAX2zegMOD3c2VJ/tvq5UmDwvduib6YGQS4i2eI+Q0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1748860440; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=/kWAs2Q9vkMd4SFaDD4i90aUAGbK421uV5qG/sTu914=; b=FYizcmuKbtKsirAFn4PUWjQkf/9m0b8ep5rBNfXj7tsLe75cVvmVGJUaAjq2mTtvNP9iS7vOgp5ZK2wyJaCsdelCxNnLCMI00dSea9Qgq3Ha5LCJtLuKXgOyRo4s3pgoQOq4A6ImiDZH6ve1AHJZqHhcD43CbWjVC2drZJLL5uk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1748860440375211.277926551478; Mon, 2 Jun 2025 03:34:00 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 48D68135A; Mon, 2 Jun 2025 06:33:59 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 47A4014A9; Mon, 2 Jun 2025 06:31:17 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 66F3FE77; Mon, 2 Jun 2025 06:31:05 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id F3CB8E87 for ; Mon, 2 Jun 2025 06:31:02 -0400 (EDT) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-632-EsSRnVSnOaC83EWlVrY6lA-1; Mon, 02 Jun 2025 06:31:01 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-450df53d461so16959805e9.1 for ; Mon, 02 Jun 2025 03:31:01 -0700 (PDT) Received: from wheatley.localdomain ([85.93.96.130]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d800658csm116668005e9.27.2025.06.02.03.30.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Jun 2025 03:30:57 -0700 (PDT) Received: from wheatley.brq.redhat.com (wheatley.k8r.cz [127.0.0.1]) by wheatley.localdomain (Postfix) with ESMTP id 4C7A1B55DC70 for ; Mon, 02 Jun 2025 12:30:57 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1748860262; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TNIel87zqpg/l1MXRtY1wmMqex6RJFmHae1IDuJ+6cM=; b=FcU9G3oXqmbNKxJp06mDau0aUWCyv9HoydOHtwWc8pAuiKUs6RC4pcmqhBfpw9RYANv7HY DFEiQLlbDKGRc4v02AWZhzr9rDi/jobxPM59/poYuBPcEUjm8wO1tcvpqar9wG+aj5+m4P C80p28rwiKyNYM9MFYq6tiNLKv1dUu8= X-MC-Unique: EsSRnVSnOaC83EWlVrY6lA-1 X-Mimecast-MFC-AGG-ID: EsSRnVSnOaC83EWlVrY6lA_1748860260 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748860260; x=1749465060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TNIel87zqpg/l1MXRtY1wmMqex6RJFmHae1IDuJ+6cM=; b=L8ESMPv+wOL1KV2UTgEhaDtzyjktUXeIq3UUcdS9pgxTrnT/WimThtH11rfnRVH4MC /mzHXZPdwgHBppfVYZ5D55D28cDGECHpDQpA3VQElFnJptriO2PjFzV0hKeB4pM8MOKf zTuncuf/2TU1BOOPZbsciatd209rnJ2udDVzXIT8FON+yyMvGfPL5Zr/py9WUa0qrCmg u/WG7rdqwcC+AehHWBSBfeVp4MtvCsqYA9CJEJL49iV9tfjRiVgaHCu+/2NaElYnhMDS NIpNNALzy6MyfPp1nhWCTjqJL7S27W32RYFFWzZGkmlrdF/jOzJC0q8AnYvvxn3ZFi+0 kzgw== X-Gm-Message-State: AOJu0YxNj/WJVZtcwgfnGbmzQ9zRneQuSjpcENNDrYoTsSeEN1v8gkb3 dVgl9jL8tqeyuolbnqfK0skKF4p5Jxb28FGnk4wGBfzosp/Kn9we2IHyxhFhG5rmHIksIxcTMEY Qain6GeZh3ssmt6yhl55Ake48EldupK5IyqAkxbFQaVM02go1gxF0ZqFUvZRrar4USflRpj+4Av yIz3P43Q3q15dA3SDEQGm+3FCr28R37263qERhEe1kwNk= X-Gm-Gg: ASbGncsH1SFB8/QiiwXuuLb2/xFLPsDnsQCHw8yXe5g3nIihbBaCJGfTiJgI7JJ8ywY MuhdDmDnqzJ/8FDdgrnTucvnhwlosL6jEh0VuiyaqsKp8ptom/pyvfFmpESOZu9vhfJL/Ec+ozZ JQX4bwhVdESO4WdeJqW4T4xZe6EOaH/v/KdCeeo5Im3BGtmgzoJMvbsbgPDxqtqcrV8oCKYVqAo A1/ZwSiQeD36RPgdDdluaWqD9yWjSEPS7mBe5hvZddY4pm2w64l7woxeVSKEtYIkBuNSlm4HK6g 84F36NQUlcsv+oRDOk6Dpr2ifahKE4M= X-Received: by 2002:a05:600c:4e47:b0:43d:fa59:be39 with SMTP id 5b1f17b1804b1-450d8872f48mr91536665e9.33.1748860260029; Mon, 02 Jun 2025 03:31:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFMXuktEFmPc8IkNp/t5smOR66VKAFBGK7yVT9h5UDAHSUXZ9zaJaBx/52Jjq1PDT255cAwQg== X-Received: by 2002:a05:600c:4e47:b0:43d:fa59:be39 with SMTP id 5b1f17b1804b1-450d8872f48mr91536335e9.33.1748860259528; Mon, 02 Jun 2025 03:30:59 -0700 (PDT) To: devel@lists.libvirt.org Subject: [PATCH 01/11] docs, conf, schemas: Add support for NVMe controller Date: Mon, 2 Jun 2025 12:30:44 +0200 Message-ID: <20eaead3b70cb782db2dda5730662b08ebea8701.1748860220.git.mkletzan@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: cb9CSS37w5ebJJrM961UH1K3fSZ_UnqnHa8RPsBbWHE_1748860260 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TTJ3IJBFPOLNI7XPHXIDW5UUNMSV7EPH X-Message-ID-Hash: TTJ3IJBFPOLNI7XPHXIDW5UUNMSV7EPH X-MailFrom: mkletzan@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Martin Kletzander via Devel Reply-To: Martin Kletzander X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1748860443147116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Martin Kletzander Signed-off-by: Martin Kletzander Signed-off-by: Honglei Wang --- docs/formatdomain.rst | 10 +++++++++ src/bhyve/bhyve_command.c | 1 + src/conf/domain_conf.c | 16 ++++++++++++++ src/conf/domain_conf.h | 6 ++++++ src/conf/schemas/domaincommon.rng | 10 +++++++++ src/conf/virconftypes.h | 2 ++ src/qemu/qemu_command.c | 1 + src/qemu/qemu_domain_address.c | 2 ++ src/qemu/qemu_hotplug.c | 5 +++++ src/qemu/qemu_postparse.c | 1 + src/qemu/qemu_validate.c | 1 + src/vbox/vbox_common.c | 1 + .../genericxml2xmlindata/controller-nvme.xml | 21 +++++++++++++++++++ tests/genericxml2xmltest.c | 2 ++ 14 files changed, 79 insertions(+) create mode 100644 tests/genericxml2xmlindata/controller-nvme.xml diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 8753ee9c23a8..fdc90c61f86d 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -4140,6 +4140,10 @@ device hotplug is expected.
+ + + ... + ... ... @@ -4186,6 +4190,12 @@ specific features, such as: specifies maximum number of event channels (PV interrupts) that can be = used by the guest. =20 +``nvme`` + Supported :since:`Since 11.5.0`, the ``nvme`` controller can be used to + support NVMe disks. It has an optional ``serial`` sub-element just like + regular disks do. + + Note: The PowerPC64 "spapr-vio" addresses do not have an associated contro= ller. =20 For controllers that are themselves devices on a PCI or USB bus, an option= al diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index cd1ccf61f3a0..916d699c8030 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -425,6 +425,7 @@ bhyveBuildControllerArgStr(const virDomainDef *def, case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b3b0bd732955..1b09e25b53b6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -420,6 +420,7 @@ VIR_ENUM_IMPL(virDomainController, "pci", "xenbus", "isa", + "nvme", ); =20 VIR_ENUM_IMPL(virDomainControllerModelPCI, @@ -2563,6 +2564,7 @@ virDomainControllerDefNew(virDomainControllerType typ= e) case VIR_DOMAIN_CONTROLLER_TYPE_SATA: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_ISA: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; } @@ -2581,6 +2583,9 @@ void virDomainControllerDefFree(virDomainControllerDe= f *def) virDomainDeviceInfoClear(&def->info); g_free(def->virtio); =20 + if (def->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_NVME) + g_free(def->opts.nvmeopts.serial); + g_free(def); } =20 @@ -8784,6 +8789,7 @@ virDomainControllerModelTypeFromString(const virDomai= nControllerDef *def, case VIR_DOMAIN_CONTROLLER_TYPE_SATA: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: return -1; } @@ -8812,6 +8818,7 @@ virDomainControllerModelTypeToString(virDomainControl= lerDef *def, case VIR_DOMAIN_CONTROLLER_TYPE_SATA: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: return NULL; } @@ -9048,6 +9055,10 @@ virDomainControllerDefParseXML(virDomainXMLOption *x= mlopt, break; } =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: + def->opts.nvmeopts.serial =3D virXPathString("string(./serial)", c= txt); + break; + case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: @@ -24039,6 +24050,11 @@ virDomainControllerDefFormat(virBuffer *buf, } break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: + virBufferEscapeString(&childBuf, "%s\n", + def->opts.nvmeopts.serial); + break; + case VIR_DOMAIN_CONTROLLER_TYPE_PCI: if (virDomainControllerDefFormatPCI(&childBuf, def, flags) < 0) return -1; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 58b97a2b5490..f184a4b9b774 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -611,6 +611,7 @@ typedef enum { VIR_DOMAIN_CONTROLLER_TYPE_PCI, VIR_DOMAIN_CONTROLLER_TYPE_XENBUS, VIR_DOMAIN_CONTROLLER_TYPE_ISA, + VIR_DOMAIN_CONTROLLER_TYPE_NVME, =20 VIR_DOMAIN_CONTROLLER_TYPE_LAST } virDomainControllerType; @@ -766,6 +767,10 @@ struct _virDomainXenbusControllerOpts { int maxEventChannels; /* -1 =3D=3D undef */ }; =20 +struct _virDomainNVMeControllerOpts { + char *serial; +}; + /* Stores the virtual disk controller configuration */ struct _virDomainControllerDef { virDomainControllerType type; @@ -782,6 +787,7 @@ struct _virDomainControllerDef { virDomainPCIControllerOpts pciopts; virDomainUSBControllerOpts usbopts; virDomainXenbusControllerOpts xenbusopts; + virDomainNVMeControllerOpts nvmeopts; } opts; virDomainDeviceInfo info; virDomainVirtioOptions *virtio; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 5597d5a66baf..029d4ed4ec7a 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -3044,6 +3044,16 @@ + + + nvme + + + + + + + diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index c70437bc05fd..8c6fcdbeaabd 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -276,6 +276,8 @@ typedef struct _virDomainXMLPrivateDataCallbacks virDom= ainXMLPrivateDataCallback =20 typedef struct _virDomainXenbusControllerOpts virDomainXenbusControllerOpt= s; =20 +typedef struct _virDomainNVMeControllerOpts virDomainNVMeControllerOpts; + typedef enum { VIR_DOMAIN_DISK_IO_DEFAULT =3D 0, VIR_DOMAIN_DISK_IO_NATIVE, diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index fec48edfc1da..07963e33b351 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2851,6 +2851,7 @@ qemuBuildControllerDevProps(const virDomainDef *domai= nDef, =20 break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index e89cdee487bc..7bc769fc1934 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -616,6 +616,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDef *dev, } break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: @@ -1919,6 +1920,7 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDef *def, case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: case VIR_DOMAIN_CONTROLLER_TYPE_ISA: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index e84ad816a0f1..7a1170b2ddd1 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -5856,6 +5856,10 @@ qemuDomainDiskControllerIsBusy(virDomainObj *vm, continue; break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: + /* nvme is not supported by the qemu driver */ + break; + case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: /* xenbus is not supported by the qemu driver */ continue; @@ -5905,6 +5909,7 @@ qemuDomainControllerIsBusy(virDomainObj *vm, case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: case VIR_DOMAIN_CONTROLLER_TYPE_SATA: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: return qemuDomainDiskControllerIsBusy(vm, detach); =20 case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: diff --git a/src/qemu/qemu_postparse.c b/src/qemu/qemu_postparse.c index ed4af9ca8e8c..8150dffac67c 100644 --- a/src/qemu/qemu_postparse.c +++ b/src/qemu/qemu_postparse.c @@ -429,6 +429,7 @@ qemuDomainControllerDefPostParse(virDomainControllerDef= *cont, case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: case VIR_DOMAIN_CONTROLLER_TYPE_ISA: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; } diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index e45f63641864..23a4d70b3441 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4402,6 +4402,7 @@ qemuValidateDomainDeviceDefController(const virDomain= ControllerDef *controller, qemuCaps); break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 349ac832dc0a..6ffe7cc20bde 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -494,6 +494,7 @@ vboxSetStorageController(virDomainControllerDef *contro= ller, case VIR_DOMAIN_CONTROLLER_TYPE_PCI: case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: case VIR_DOMAIN_CONTROLLER_TYPE_ISA: + case VIR_DOMAIN_CONTROLLER_TYPE_NVME: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: vboxReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %1$s controlle= r type"), diff --git a/tests/genericxml2xmlindata/controller-nvme.xml b/tests/generic= xml2xmlindata/controller-nvme.xml new file mode 100644 index 000000000000..b2e8556c9d45 --- /dev/null +++ b/tests/genericxml2xmlindata/controller-nvme.xml @@ -0,0 +1,21 @@ + + bar + 00010203-0405-4607-8809-0a0b0c0d0e0f + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + CDEFGAHC + + + diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index dd26a8589dda..f4e04d84f825 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -231,6 +231,8 @@ mymain(void) =20 DO_TEST("fibrechannel-appid"); =20 + DO_TEST("controller-nvme"); + #define DO_TEST_BACKUP_FULL(name, intrnl) \ do { \ const struct testCompareBackupXMLData data =3D { .testname =3D nam= e, \ --=20 2.49.0