[PATCH 1/2] qemuxml2argvmock: Mock qemuExtVhostUserGPUPrepareDomain

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Noticed when breaking on 'fork()' in qemuxml2argvtest (output slihtly
trimmed, of unimportant file locations:

  #0  0x00007ffff75abf18 in fork () at /lib64/libc.so.6
  #1  0x00007ffff7b88387 in virFork () at ../../../libvirt/src/util/vircommand.c:282
  #2  0x00007ffff7b8a7d2 in virExec (cmd=0x55555740d440) at ../../../libvirt/src/util/vircommand.c:741
  #3  virCommandRunAsync (cmd=cmd@entry=0x55555740d440, pid=pid@entry=0x0) at ../../../libvirt/src/util/vircommand.c:2658
  #4  0x00007ffff7b8c04f in virCommandRun (cmd=cmd@entry=0x55555740d440, exitstatus=exitstatus@entry=0x0)
  #5  0x00007ffff79f6daa in qemuVhostUserFillDomainGPU (driver=driver@entry=0x555555586120 <driver>, video=0x5555573e8d80)
  #6  0x00007ffff79f73f5 in qemuExtVhostUserGPUPrepareDomain (driver=driver@entry=0x555555586120 <driver>, video=<optimized out>)
  #7  0x00007ffff797c569 in qemuExtDevicesPrepareDomain (driver=driver@entry=0x555555586120 <driver>, vm=vm@entry=0x5555573dfef0)
  #8  0x00007ffff79d69ef in qemuProcessPrepareDomain
  #9  0x00007ffff79dda36 in qemuProcessCreatePretendCmdPrepare
  #10 0x000055555556fa28 in testCompareXMLToArgvCreateArgs
  #11 testCompareXMLToArgv (data=0x5555573440f0) at ../../../libvirt/tests/qemuxml2argvtest.c:733
  #12 0x0000555555570f7a in virTestRun
  #13 0x0000555555571201 in virTestRunLog
      (ret=0x7fffffffdb4c, title=0x55555697c360 "QEMU XML-2-ARGV virtio-options.x86_64-latest", body=0x55555556f820 <testCompareXMLToArgv>, data=0x5555573440f0) at ../../../libvirt/tests/testutils.c:198
  #14 0x000055555555c1b9 in testRun

Code paths in 'qemuProcessPrepareDomain' should not invoke external
helpers. Note this in a comment and mock the function for now. It will
need a more complex refactor.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/qemu/qemu_vhost_user_gpu.c | 4 ++++
 src/qemu/qemu_vhost_user_gpu.h | 2 +-
 tests/qemuxml2argvmock.c       | 9 +++++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_vhost_user_gpu.c b/src/qemu/qemu_vhost_user_gpu.c
index 933adfe8de..cca76526d1 100644
--- a/src/qemu/qemu_vhost_user_gpu.c
+++ b/src/qemu/qemu_vhost_user_gpu.c
@@ -78,6 +78,10 @@ qemuVhostUserGPUGetPid(const char *stateDir,
 }


+/** TODO: this is called from qemuProcessPrepareDomain which is NOT supposed to
+ * query the host in any way. This function is mocked in qemuxml2argvmock.so
+ * to prevent probing the host vgpu process capabilities.
+ */
 int qemuExtVhostUserGPUPrepareDomain(virQEMUDriver *driver,
                                      virDomainVideoDef *video)
 {
diff --git a/src/qemu/qemu_vhost_user_gpu.h b/src/qemu/qemu_vhost_user_gpu.h
index 2b86982cb8..d19798d781 100644
--- a/src/qemu/qemu_vhost_user_gpu.h
+++ b/src/qemu/qemu_vhost_user_gpu.h
@@ -26,7 +26,7 @@
 int qemuExtVhostUserGPUPrepareDomain(virQEMUDriver *driver,
                                      virDomainVideoDef *video)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
-    G_GNUC_WARN_UNUSED_RESULT;
+    G_GNUC_WARN_UNUSED_RESULT G_NO_INLINE;

 int qemuExtVhostUserGPUStart(virQEMUDriver *driver,
                              virDomainObj *vm,
diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
index 52c44b2ed0..2deccd79c4 100644
--- a/tests/qemuxml2argvmock.c
+++ b/tests/qemuxml2argvmock.c
@@ -37,6 +37,7 @@
 #include "qemu/qemu_command.h"
 #include <unistd.h>
 #include <fcntl.h>
+#include "qemu/qemu_vhost_user_gpu.h"

 #define VIR_FROM_THIS VIR_FROM_NONE

@@ -267,3 +268,11 @@ virIdentityEnsureSystemToken(void)
 {
     return g_strdup("3de80bcbf22d4833897f1638e01be9b2");
 }
+
+
+int
+qemuExtVhostUserGPUPrepareDomain(virQEMUDriver *driver G_GNUC_UNUSED,
+                                 virDomainVideoDef *video G_GNUC_UNUSED)
+{
+    return 0;
+}
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux