[libvirt PATCHv4 09/15] qemu: validate virtiofs filesystems

Ján Tomko jtomko at redhat.com
Wed Feb 26 08:44:14 UTC 2020


On Wed, Feb 26, 2020 at 09:15:17AM +0100, Michal Privoznik wrote:
>On 2/26/20 8:33 AM, Peter Krempa wrote:
>>On Thu, Feb 20, 2020 at 15:32:46 +0100, Ján Tomko wrote:
>>>Reject unsupported configurations.
>>>
>>>Signed-off-by: Ján Tomko <jtomko at redhat.com>
>>>---
>>>  src/qemu/qemu_domain.c | 61 +++++++++++++++++++++++++++++++++++++++---
>>>  1 file changed, 58 insertions(+), 3 deletions(-)
>>>
>>>diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>>>index c3fc3fed1c..7cb283123d 100644
>>>--- a/src/qemu/qemu_domain.c
>>>+++ b/src/qemu/qemu_domain.c
>>>@@ -8266,10 +8266,44 @@ qemuDomainDeviceDefValidateIOMMU(const virDomainIOMMUDef *iommu,
>>>      return 0;
>>>  }
>>>+static int
>>>+qemuDomainDefValidateVirtioFSSharedMemory(const virDomainDef *def)
>>>+{
>>>+    size_t numa_nodes = virDomainNumaGetNodeCount(def->numa);
>>>+    size_t i;
>>>+
>>>+    for (i = 0; i < numa_nodes; i++) {
>>
>>This won't catch guests with no numa configured ...
>>

Consider this squashed in:
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 090720fd76..f992e3fc6e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -8276,6 +8276,12 @@ qemuDomainDefValidateVirtioFSSharedMemory(const virDomainDef *def)
      size_t numa_nodes = virDomainNumaGetNodeCount(def->numa);
      size_t i;

+    if (numa_nodes == 0) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("virtiofs requires one or more NUMA nodes"));
+        return -1;
+    }
+
      for (i = 0; i < numa_nodes; i++) {
          virDomainMemoryAccess node_access =
              virDomainNumaGetNodeMemoryAccessMode(def->numa, i);


>>>+        virDomainMemoryAccess node_access =
>>>+            virDomainNumaGetNodeMemoryAccessMode(def->numa, i);
>>>+
>>>+        switch (node_access) {
>>>+        case VIR_DOMAIN_MEMORY_ACCESS_DEFAULT:
>>>+            if (def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_SHARED) {
>>>+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>>>+                               _("virtiofs requires shared memory"));
>>
>>... so this error won't be reported.
>>
>>Also must all nodes have shared memory? Isn't one enough?
>
>Maybe it is. But I wouldn't burn our resources trying to figure out 
>all the corner cases and make this work in them. I'd say that we can 
>start with this check and if somebody ever wants us to refine it, we 
>can look into our options.

Yes. Checking all nodes is the prudent choice that ensures all of the memory
will be shared.

Jano


>
>Michal
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200226/beedd240/attachment-0001.sig>


More information about the libvir-list mailing list