]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add validation for virtiofs boot order setting
authorJán Tomko <jtomko@redhat.com>
Tue, 5 Jan 2021 18:15:07 +0000 (19:15 +0100)
committerJán Tomko <jtomko@redhat.com>
Fri, 29 Jan 2021 13:34:15 +0000 (14:34 +0100)
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_validate.c
src/qemu/qemu_validate.c

index a2f236c299afc88878ca6cfa052b237d67ca6b91..c56b03ff3ac8706881aff398a31eafaed2b18c28 100644 (file)
@@ -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:
index cb9311cb9c0c7d253657928f86e9e62eaca92627..88f4344df0bc3758ec9ea629e7b2b0dfba508a9b 100644 (file)
@@ -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: