From nobody Fri Jan 9 08:53:47 2026 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; 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=pass; 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1767449943; cv=none; d=zohomail.com; s=zohoarc; b=WMyQWAUZJyhSDWmroiAsxZKYCI3qX9juA/F/ZHlZCOCFMlqH1t+O2m9UVg1x6YMTjPlNdQeuMl4OH1IdFguo2v+yMxGR9IJFNvICjUTbtup+Vlw3JjNZYi3UfsZ4hTCVpJj/WVuyoYbH82JuS2NdjZWe9aNkfChE5DD4bE9m0Po= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767449943; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=P+ZEOeWcd7X7i38LuvcnXzkh7AxfUg+aZDNAL4SqH9E=; b=HIP3eeQGsjjun7kZuc9W2iuaRgE0jUN/kLDKp/LovGRgPTfkB9B2nsx+kSJy6XSEQj6HNkImQHMYFBCLxX/FZD+zGBnwrSRcwiVnuNJieuTbVBbG/H2G5nSw/lpywwBrymuixjYMGS0Y04WkneQYR0ty27n/berkgp12WWXjNCo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1767449943815382.7913658484091; Sat, 3 Jan 2026 06:19:03 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 1A686417F8; Sat, 3 Jan 2026 09:19:03 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id CC32A4197B; Sat, 3 Jan 2026 09:17:32 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 1F5A33F8E5; Sat, 3 Jan 2026 09:14:32 -0500 (EST) Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id DFA0E3F8B4 for ; Sat, 3 Jan 2026 09:14:30 -0500 (EST) Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-64ba9a00b5aso15078206a12.2 for ; Sat, 03 Jan 2026 06:14:30 -0800 (PST) Received: from tulp.my.domain (2001-1c02-1a15-3000-c218-03ff-feb5-6cc4.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:c218:3ff:feb5:6cc4]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8037ab86cesm4961769166b.19.2026.01.03.06.14.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Jan 2026 06:14:27 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767449669; x=1768054469; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P+ZEOeWcd7X7i38LuvcnXzkh7AxfUg+aZDNAL4SqH9E=; b=XBTUtLSlesmXz9GErwnVkFvQZu16n+EQmzmIT+rv43lDvvvopYFHr5q/ou5mHsM4Yw H8OxtXSFYmGgjeSC7ksM30tcChyRQG4UIISAfQtzWhba4zyp4em5E6z/Wo/l5CpZprIa 99BISMaggFMBWXpubEsKEOJzzMyl6Uf+sj2Uafzx/nL9UbYY/hBYYKRND9bXnJXpIp4M H0YF8BNW0wCBq4YKdKDkgxdN1xSi555APNWrbdamXxzSdfUGh509W/aQMlqiiedTpXgP 9ioU0aLcYBnyspa0VVVIBtfkXRIy8dEBX//shRMO0cjKl0NwkcOKAW3DkppP3pCBEwod 8hhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767449669; x=1768054469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=P+ZEOeWcd7X7i38LuvcnXzkh7AxfUg+aZDNAL4SqH9E=; b=NsAEvOoAaK+nd4uBTrJI8+IQTcZOJfVuHMMXE9BLo6Y5Fds0hIArLpK6sghugP8EGx DRn1HC9+MJTiZm5V+2ZrFjpfwGkEamWk/pSzfNt9aC068IrWuZPnchlIw4mGQaQaz/P4 Xu0oGgOvY9vygg6VnQdjE1no82DzoH19fky4CPlm/kpYIQ9AtkECLkzWa8PfSpkjE/76 MbprZZzgqoCMI3R9ulGl5I23lV+6B0luXpRJgtsm7i8LZbq9pEMILDkUmhHEhTwA8MQ+ w+CnZ5l2GGpxOBElnv+Izv8obUgPYaymsUN7fc2T2TCp9b1U23d3KmSc4DQ05ICFT0Qs SoJw== X-Gm-Message-State: AOJu0YwrH2FVphRFvsJqhRFeBEmoRYWhFswX14QFFjBdoC+vY2UMdepa 6vrJtQPOrrC0OcnxOnjFIH64vCMRlqE/49Nvg4EDkuqtY0t3c326Nt48M0Dt47et X-Gm-Gg: AY/fxX7o1umgzVuzRUln8HWGiV2TE+Ev7GEzWpFDf1fFUjHlThNenNcx4f2zJl0a/pu /eL6mJH2cHNzTX9U/vTN1cuNURCULgrdVQm/MbeMKrXpk9ZK41/IINv1N1Bkc0qPRiCmda51/Yc GYuVLw1iJGAPPaR3PnkghxH1KY3pfjUx9tnVVy70wAPzyH24VCU8ZWKjhdLUd7nHRdwhL85cGq7 +A/27GxMfyQcHH28YTpXknX0s++A+4PpUk6vX4qjYqsDFkdJu/pwd1fLw3x6XPEOE/wPrvGP7Sa Z7LtaaCff2loEil9/yByI01Z2PavQX/osDxU6cBO8iYR8rknprXE6D77ECBXUjcei+EtvtkHE7z GJIE+v2aN8UxF63uael7yceAeAWis2Zm3Og3E+rIu3Z6aJEzkserAQbYAPwunPiF082kX0GDYv5 vhMIdcoutmzq4OdemwXIh/F/yRNPD6TWfH8+/wvbUOegUC39j+al8bqn3m/1AEJxkC0v5YI5xA6 SoiQHHJrNrwSzKPQDqzzXRJ X-Google-Smtp-Source: AGHT+IFkimdk9g2BRpDj1BMucS9uaYZw0Thv32nzDf8Ia0Ep2qN0TZSzpw2rc57izmyLIYG7KvS1JQ== X-Received: by 2002:a17:906:30d4:b0:b80:3fff:3369 with SMTP id a640c23a62f3a-b803fff3447mr3461205066b.48.1767449668985; Sat, 03 Jan 2026 06:14:28 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/3] conf: introduce CTL storage type Date: Sat, 3 Jan 2026 15:11:40 +0100 Message-ID: <20260103141142.53817-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260103141142.53817-1-bogorodskiy@gmail.com> References: <20260103141142.53817-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JQ5MT2MZN7DMDNQTGL4DISMMKXD2NF2X X-Message-ID-Hash: JQ5MT2MZN7DMDNQTGL4DISMMKXD2NF2X X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1767449945206154100 CTL stands for CAM Target Layer, and CAM stands for Common Access Method Storage subsystem, and is available on FreeBSD. Quoting the ctl(4) manual page: The ctl subsystem provides SCSI target devices emulation. It supports features such as: =E2=80=A2 Disk, CD-ROM and processor device emulation =E2=80=A2 Tagged queueing =E2=80=A2 SCSI task attribute support (ordered, head of queue, simple t= ags) =E2=80=A2 SCSI implicit command ordering support =E2=80=A2 Full task management support (abort, query, reset, etc.) =E2=80=A2 Support for multiple ports, initiators, targets and backing s= tores =E2=80=A2 Support for VMWare VAAI and Microsoft ODX offload (COMPARE AN= D WRITE, XCOPY, POPULATE TOKEN/WRITE USING TOKEN, WRITE SAME and UNMAP) =E2=80=A2 Persistent reservation support =E2=80=A2 Extensive VPD/mode/log pages support =E2=80=A2 Featured error reporting, error injection and basic SMART sup= port =E2=80=A2 High Availability clustering support with ALUA =E2=80=A2 All I/O handled in-kernel, no userland context switch overhead This is a preparation for implementing virtio-scsi support for the bhyve driver. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_process.c | 1 + src/ch/ch_monitor.c | 1 + src/conf/domain_conf.c | 7 +++++++ src/conf/schemas/domaincommon.rng | 13 +++++++++++++ src/conf/storage_source_conf.c | 6 +++++- src/conf/storage_source_conf.h | 1 + src/libxl/xen_xl.c | 1 + src/qemu/qemu_block.c | 2 ++ src/qemu/qemu_command.c | 1 + src/qemu/qemu_migration.c | 3 +++ src/qemu/qemu_process.c | 1 + src/qemu/qemu_snapshot.c | 4 ++++ src/qemu/qemu_validate.c | 1 + src/storage_file/storage_source.c | 1 + 14 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 7de614a1a3..1d436da609 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -405,6 +405,7 @@ bhyvePrepareNVRAM(bhyveConn *driver, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_LAST: case VIR_STORAGE_TYPE_NONE: break; diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 46b31acc76..52f281cf73 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -285,6 +285,7 @@ virCHMonitorBuildDiskJson(virDomainDiskDef *diskdef) case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_LAST: default: virReportEnumRangeError(virStorageType, diskdef->src->type); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 541dad5bdc..b85bbbcaf6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7831,6 +7831,9 @@ virDomainStorageSourceParse(xmlNodePtr node, if (!(src->vdpadev =3D virXMLPropStringRequired(node, "dev"))) return -1; break; + case VIR_STORAGE_TYPE_CTL: + src->path =3D virXMLPropString(node, "dev"); + break; case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -23711,6 +23714,10 @@ virDomainDiskSourceFormat(virBuffer *buf, virBufferEscapeString(&attrBuf, " dev=3D'%s'", src->vdpadev); break; =20 + case VIR_STORAGE_TYPE_CTL: + virBufferEscapeString(&attrBuf, " dev=3D'%s'", src->path); + break; + case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 1f9ac102a0..5d5fd87f87 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -1905,6 +1905,7 @@ + =20 @@ -2544,6 +2545,18 @@ =20 + + + ctl + + + + + + + + + diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c index 087de1eaf2..d7b9bdfecb 100644 --- a/src/conf/storage_source_conf.c +++ b/src/conf/storage_source_conf.c @@ -48,7 +48,8 @@ VIR_ENUM_IMPL(virStorage, "volume", "nvme", "vhostuser", - "vhostvdpa" + "vhostvdpa", + "ctl", ); =20 =20 @@ -976,6 +977,7 @@ virStorageSourceIsSameLocation(virStorageSource *a, case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_LAST: case VIR_STORAGE_TYPE_VOLUME: + case VIR_STORAGE_TYPE_CTL: /* nothing to do */ break; } @@ -1058,6 +1060,7 @@ virStorageSourceIsLocalStorage(const virStorageSource= *src) case VIR_STORAGE_TYPE_FILE: case VIR_STORAGE_TYPE_BLOCK: case VIR_STORAGE_TYPE_DIR: + case VIR_STORAGE_TYPE_CTL: return true; =20 case VIR_STORAGE_TYPE_NETWORK: @@ -1263,6 +1266,7 @@ virStorageSourceIsRelative(virStorageSource *src) case VIR_STORAGE_TYPE_FILE: case VIR_STORAGE_TYPE_BLOCK: case VIR_STORAGE_TYPE_DIR: + case VIR_STORAGE_TYPE_CTL: return !g_path_is_absolute(src->path); =20 case VIR_STORAGE_TYPE_NETWORK: diff --git a/src/conf/storage_source_conf.h b/src/conf/storage_source_conf.h index fc868b31af..22c35d420d 100644 --- a/src/conf/storage_source_conf.h +++ b/src/conf/storage_source_conf.h @@ -44,6 +44,7 @@ typedef enum { VIR_STORAGE_TYPE_NVME, VIR_STORAGE_TYPE_VHOST_USER, VIR_STORAGE_TYPE_VHOST_VDPA, + VIR_STORAGE_TYPE_CTL, =20 VIR_STORAGE_TYPE_LAST } virStorageType; diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c index b2ff0edcf2..e72e7d7f44 100644 --- a/src/libxl/xen_xl.c +++ b/src/libxl/xen_xl.c @@ -1531,6 +1531,7 @@ xenFormatXLDiskSrc(virStorageSource *src, char **srcs= tr) case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index a7062d3e96..9b43279797 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1046,6 +1046,7 @@ qemuBlockStorageSourceGetBackendProps(virStorageSourc= e *src, src->srcpool->pool, src->srcpool->volume); return NULL; =20 + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportEnumRangeError(virStorageType, actualType); @@ -2417,6 +2418,7 @@ qemuBlockStorageSourceCreateGetStorageProps(virStorag= eSource *src, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: return 0; =20 case VIR_STORAGE_TYPE_NONE: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 98229d7cf9..0de0a79b46 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1486,6 +1486,7 @@ qemuBuildDriveSourceStr(virDomainDiskDef *disk, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1371742529..08f05ff727 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -344,6 +344,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -499,6 +500,7 @@ qemuMigrationDstPrepareStorage(virDomainObj *vm, /* Existance of 'volume' type disks are handled when pre-creat= ing them */ break; =20 + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_LAST: case VIR_STORAGE_TYPE_NONE: break; @@ -1725,6 +1727,7 @@ qemuMigrationSrcCheckStorageSourceSafety(virStorageSo= urce *src, case VIR_STORAGE_TYPE_BLOCK: case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_LAST: *requires_safe_cache =3D true; break; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 0e50cd1ccc..4e1d713809 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4994,6 +4994,7 @@ qemuPrepareNVRAM(virQEMUDriver *driver, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_LAST: case VIR_STORAGE_TYPE_NONE: if (reset_nvram) { diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 5b0b52e2ba..bad135ee61 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -689,6 +689,7 @@ qemuSnapshotPrepareDiskExternalInactive(virDomainSnapsh= otDiskDef *snapdisk, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -708,6 +709,7 @@ qemuSnapshotPrepareDiskExternalInactive(virDomainSnapsh= otDiskDef *snapdisk, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -752,6 +754,7 @@ qemuSnapshotPrepareDiskExternalActive(virDomainSnapshot= DiskDef *snapdisk, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -914,6 +917,7 @@ qemuSnapshotPrepareDiskInternal(virDomainDiskDef *disk, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index da08fd17cd..c43e794816 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -717,6 +717,7 @@ qemuValidateDomainDefNvram(const virDomainDef *def, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported nvram disk type '%1$s'"), virStorageTypeToString(src->type)); diff --git a/src/storage_file/storage_source.c b/src/storage_file/storage_s= ource.c index 1883225a8b..e886433bb4 100644 --- a/src/storage_file/storage_source.c +++ b/src/storage_file/storage_source.c @@ -625,6 +625,7 @@ virStorageSourceUpdatePhysicalSize(virStorageSource *sr= c, case VIR_STORAGE_TYPE_NVME: case VIR_STORAGE_TYPE_VHOST_USER: case VIR_STORAGE_TYPE_VHOST_VDPA: + case VIR_STORAGE_TYPE_CTL: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: return -1; --=20 2.52.0