]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuProcessPrepareHostBackendChardevFileHelper: Always use FD passing
authorPeter Krempa <pkrempa@redhat.com>
Mon, 7 Feb 2022 16:12:31 +0000 (17:12 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 14 Feb 2022 12:13:59 +0000 (13:13 +0100)
Code paths which don't wish to use FD passing are supposed to not call
the function which sets up the chardev for FD passing.

This is ensured by calling it only in the host prepare step.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_process.c
tests/qemuxml2argvdata/aarch64-pci-serial.args
tests/qemuxml2argvdata/name-escape.x86_64-2.11.0.args
tests/qemuxml2argvdata/serial-file-chardev.args
tests/qemuxml2argvdata/serial-file-log.args
tests/qemuxml2argvdata/serial-many-chardev.args
tests/qemuxml2argvtest.c

index 0b9d96b7d505cd4735b94eb40ce6ad0798c8ab0e..283e05a34b53334fcbb883594248d41eb2978cab 100644 (file)
@@ -6730,18 +6730,9 @@ qemuProcessPrepareHostBackendChardevFileHelper(const char *path,
                                                int *fd,
                                                virLogManager *logManager,
                                                virSecurityManager *secManager,
-                                               virQEMUCaps *qemuCaps,
                                                virQEMUDriverConfig *cfg,
                                                const virDomainDef *def)
 {
-    /* Technically, to pass an FD via /dev/fdset we don't need
-     * any capability check because X_QEMU_CAPS_ADD_FD is already
-     * assumed. But keeping the old style is still handy when
-     * building a standalone command line (e.g. for tests). */
-    if (!logManager &&
-        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE))
-        return 0;
-
     if (logManager) {
         int flags = 0;
 
@@ -6839,7 +6830,6 @@ qemuProcessPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
                                                            &charpriv->fd,
                                                            data->logManager,
                                                            data->secManager,
-                                                           data->qemuCaps,
                                                            data->cfg,
                                                            data->def) < 0)
             return -1;
@@ -6880,7 +6870,6 @@ qemuProcessPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
                                                            &charpriv->logfd,
                                                            data->logManager,
                                                            data->secManager,
-                                                           data->qemuCaps,
                                                            data->cfg,
                                                            data->def) < 0)
             return -1;
index b4f84cf778fdac529931b0ef13bb10e695a135a5..aca88e8e60641c95660fb5830c1efb7f143044c9 100644 (file)
@@ -29,6 +29,7 @@ QEMU_AUDIO_DRV=none \
 -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1 \
 -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x0 \
 -device pcie-root-port,port=16,chassis=3,id=pci.3,bus=pcie.0,addr=0x2 \
--chardev pty,id=charserial0,logfile=/tmp/log,logappend=on \
+-add-fd set=0,fd=1751 \
+-chardev pty,id=charserial0,logfile=/dev/fdset/0,logappend=on \
 -device pci-serial,chardev=charserial0,id=serial0,bus=pci.2,addr=0x1 \
 -msg timestamp=on
index a246c08b125fdeb59001421fe5fb025e56b1c97c..6d4c5bff6e0cc72b15b509f38651102a2853f5d1 100644 (file)
@@ -33,7 +33,8 @@ QEMU_AUDIO_DRV=spice \
 -device ccid-card-emulated,backend=certificates,cert1=cert1,,foo,cert2=cert2,cert3=cert3,db=/etc/pki/nssdb,,foo,id=smartcard0,bus=ccid0.0 \
 -chardev tty,id=charserial0,path=/dev/ttyS2,,foo \
 -device isa-serial,chardev=charserial0,id=serial0,index=1 \
--chardev file,id=charserial1,path=/tmp/serial.log,,foo,append=on \
+-add-fd set=0,fd=1750 \
+-chardev file,id=charserial1,path=/dev/fdset/0,append=on \
 -device isa-serial,chardev=charserial1,id=serial1,index=0 \
 -chardev pipe,id=charchannel0,path=/tmp/guestfwd,,foo \
 -netdev user,guestfwd=tcp:10.0.2.1:4600-chardev:charchannel0,id=channel0 \
index 4ec07d9b1fed2bac2c2587de0f9663a491159844..7df5c2a1156e213d43e9188f392da20b5797e859 100644 (file)
@@ -29,7 +29,8 @@ QEMU_AUDIO_DRV=none \
 -usb \
 -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
--chardev file,id=charserial0,path=/tmp/serial.log,append=on \
+-add-fd set=0,fd=1750 \
+-chardev file,id=charserial0,path=/dev/fdset/0,append=on \
 -device isa-serial,chardev=charserial0,id=serial0,index=0 \
 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
 -msg timestamp=on
index 1ffa30d207f8aa9fe40fb6049468777a697ad933..72d7c492983a57a7bcd92c06ab4d220d13895cc6 100644 (file)
@@ -29,6 +29,8 @@ QEMU_AUDIO_DRV=none \
 -usb \
 -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
--chardev file,id=charserial0,path=/tmp/serial.log,logfile=/var/lib/libvirt/qemu/demo-serial.log,logappend=off \
+-add-fd set=0,fd=1750 \
+-add-fd set=1,fd=1751 \
+-chardev file,id=charserial0,path=/dev/fdset/0,append=on,logfile=/dev/fdset/1,logappend=on \
 -device isa-serial,chardev=charserial0,id=serial0,index=0 \
 -msg timestamp=on
index e0005656ea0d622307c9c1721bc046eba8288e80..5e80348d11b6be4b7ae249a56245dd3c4bb8574c 100644 (file)
@@ -31,7 +31,8 @@ QEMU_AUDIO_DRV=none \
 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
 -chardev pty,id=charserial0 \
 -device isa-serial,chardev=charserial0,id=serial0,index=0 \
--chardev file,id=charserial1,path=/tmp/serial.log \
+-add-fd set=0,fd=1750 \
+-chardev file,id=charserial1,path=/dev/fdset/0,append=on \
 -device isa-serial,chardev=charserial1,id=serial1,index=1 \
 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
 -msg timestamp=on
index 6cf35a0ebfe9187f18f0f58b66dbe2f5707ec43d..b2d6606d6ea632950ccc21ddacff5adeedc0bcb9 100644 (file)
@@ -416,11 +416,9 @@ testPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
         break;
 
     case VIR_DOMAIN_CHR_TYPE_FILE:
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE)) {
-            if (fcntl(1750, F_GETFD) != -1)
-                abort();
-            charpriv->fd = 1750;
-        }
+        if (fcntl(1750, F_GETFD) != -1)
+            abort();
+        charpriv->fd = 1750;
         break;
 
     case VIR_DOMAIN_CHR_TYPE_UNIX:
@@ -440,11 +438,9 @@ testPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
     }
 
     if (chardev->logfile) {
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS_COMMANDLINE)) {
-            if (fcntl(1751, F_GETFD) != -1)
-                abort();
-            charpriv->logfd = 1751;
-        }
+        if (fcntl(1751, F_GETFD) != -1)
+            abort();
+        charpriv->logfd = 1751;
     }
 
     return 0;