From 5b688e6dc1edc0044623ee00e1803b9514548511 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Tue, 5 Jan 2021 19:15:07 +0100 Subject: [PATCH] Add validation for virtiofs boot order setting MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Ján Tomko Reviewed-by: Michal Privoznik --- src/conf/domain_validate.c | 17 ++++++++++++++++- src/qemu/qemu_validate.c | 6 ++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index a2f236c299..c56b03ff3a 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1578,6 +1578,19 @@ virDomainShmemDefValidate(const virDomainShmemDef *shmem) return 0; } +static int +virDomainFSDefValidate(const virDomainFSDef *fs) +{ + if (fs->info.bootIndex && + fs->fsdriver != VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("boot order is only supported for virtiofs")); + return -1; + } + + return 0; +} + static int virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, @@ -1623,10 +1636,12 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_SHMEM: return virDomainShmemDefValidate(dev->data.shmem); + case VIR_DOMAIN_DEVICE_FS: + return virDomainFSDefValidate(dev->data.fs); + case VIR_DOMAIN_DEVICE_AUDIO: /* TODO: validate? */ case VIR_DOMAIN_DEVICE_LEASE: - case VIR_DOMAIN_DEVICE_FS: case VIR_DOMAIN_DEVICE_SOUND: case VIR_DOMAIN_DEVICE_WATCHDOG: case VIR_DOMAIN_DEVICE_GRAPHICS: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index cb9311cb9c..88f4344df0 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4093,6 +4093,12 @@ qemuValidateDomainDeviceDefFS(virDomainFSDefPtr fs, } if (qemuValidateDomainDefVirtioFSSharedMemory(def, qemuCaps) < 0) return -1; + if (fs->info.bootIndex && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VHOST_USER_FS_BOOTINDEX)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting virtiofs boot order is not supported with this QEMU binary")); + return -1; + } break; case VIR_DOMAIN_FS_DRIVER_TYPE_LAST: -- 2.47.2