]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: fd: Remove support for 'direct' fd passing from 'qemuFDPass'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 16 May 2022 14:25:31 +0000 (16:25 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 17 May 2022 17:31:08 +0000 (19:31 +0200)
This finishes the separation of the fdset and direct helpers. Remove
'qemuFDPassNewDirect' and all internals which were applicable only in
direct mode.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_fd.c

index 3b4c0690803af5c6f64f38c80fbe4f4d7b57cbc7..bedd39b1217ffe312846be642f6c276de416efe9 100644 (file)
@@ -34,7 +34,6 @@ struct qemuFDPassFD {
 };
 
 struct _qemuFDPass {
-    bool useFDSet;
     unsigned int fdSetID;
     size_t nfds;
     struct qemuFDPassFD *fds;
@@ -65,20 +64,6 @@ qemuFDPassFree(qemuFDPass *fdpass)
 }
 
 
-static int
-qemuFDPassValidate(qemuFDPass *fdpass)
-{
-    if (!fdpass->useFDSet &&
-        fdpass->nfds > 1) {
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("direct FD passing supports only 1 file descriptor"));
-        return -1;
-    }
-
-    return 0;
-}
-
-
 /**
  * qemuFDPassNew:
  * @prefix: prefix used for naming the passed FDs
@@ -99,7 +84,6 @@ qemuFDPassNew(const char *prefix,
     qemuFDPass *fdpass = g_new0(qemuFDPass, 1);
 
     fdpass->prefix = g_strdup(prefix);
-    fdpass->useFDSet = true;
 
     if (priv) {
         fdpass->fdSetID = qemuDomainFDSetIDNew(priv);
@@ -112,34 +96,6 @@ qemuFDPassNew(const char *prefix,
 }
 
 
-/**
- * qemuFDPassNewDirect:
- * @prefix: prefix used for naming the passed FDs
- * @dompriv: qemu domain private data
- *
- * Create a new helper object for passing FDs to QEMU.
- *
- * The instance created via 'qemuFDPassNewDirect' will result in the older
- * approach of directly using FD number on the commandline and 'getfd'
- * QMP command.
- *
- * Non-test uses must pass a valid @dompriv.
- *
- * @prefix is used for naming the FD if needed and is later referenced when
- * removing the FDSet via monitor.
- */
-qemuFDPass *
-qemuFDPassNewDirect(const char *prefix,
-                    void *dompriv G_GNUC_UNUSED)
-{
-    qemuFDPass *fdpass = g_new0(qemuFDPass, 1);
-
-    fdpass->prefix = g_strdup(prefix);
-
-    return fdpass;
-}
-
-
 /**
  * qemuFDPassAddFD:
  * @fdpass: The fd passing helper struct
@@ -165,11 +121,6 @@ qemuFDPassAddFD(qemuFDPass *fdpass,
 
     newfd.opaque = g_strdup_printf("%s%s", fdpass->prefix, NULLSTR_EMPTY(suffix));
 
-    if (!fdpass->useFDSet) {
-        g_free(fdpass->path);
-        fdpass->path = g_strdup(newfd.opaque);
-    }
-
     VIR_APPEND_ELEMENT(fdpass->fds, fdpass->nfds, newfd);
 }
 
@@ -191,28 +142,15 @@ qemuFDPassTransferCommand(qemuFDPass *fdpass,
     if (!fdpass)
         return 0;
 
-    if (qemuFDPassValidate(fdpass) < 0)
-        return -1;
-
     for (i = 0; i < fdpass->nfds; i++) {
-        virCommandPassFD(cmd, fdpass->fds[i].fd, VIR_COMMAND_PASS_FD_CLOSE_PARENT);
-
-        if (fdpass->useFDSet) {
-            g_autofree char *arg = NULL;
-
-            arg = g_strdup_printf("set=%u,fd=%d,opaque=%s",
-                                  fdpass->fdSetID,
-                                  fdpass->fds[i].fd,
-                                  fdpass->fds[i].opaque);
-
-            virCommandAddArgList(cmd, "-add-fd", arg, NULL);
-        } else {
-            /* for monitor use the older FD passing needs the FD number */
-            g_free(fdpass->path);
-            fdpass->path = g_strdup_printf("%d", fdpass->fds[i].fd);
-        }
+        g_autofree char *arg = g_strdup_printf("set=%u,fd=%d,opaque=%s",
+                                               fdpass->fdSetID,
+                                               fdpass->fds[i].fd,
+                                               fdpass->fds[i].opaque);
 
+        virCommandPassFD(cmd, fdpass->fds[i].fd, VIR_COMMAND_PASS_FD_CLOSE_PARENT);
         fdpass->fds[i].fd = -1;
+        virCommandAddArgList(cmd, "-add-fd", arg, NULL);
     }
 
     return 0;
@@ -231,42 +169,30 @@ int
 qemuFDPassTransferMonitor(qemuFDPass *fdpass,
                           qemuMonitor *mon)
 {
+    g_autoptr(qemuMonitorFdsets) fdsets = NULL;
     size_t i;
 
     if (!fdpass)
         return 0;
 
-    if (qemuFDPassValidate(fdpass) < 0)
+    if (qemuMonitorQueryFdsets(mon, &fdsets) < 0)
         return -1;
-    if (fdpass->useFDSet) {
-        g_autoptr(qemuMonitorFdsets) fdsets = NULL;
 
-        if (qemuMonitorQueryFdsets(mon, &fdsets) < 0)
+    for (i = 0; i < fdsets->nfdsets; i++) {
+        if (fdsets->fdsets[i].id == fdpass->fdSetID) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("fdset '%u' is already in use by qemu"),
+                           fdpass->fdSetID);
             return -1;
-
-        for (i = 0; i < fdsets->nfdsets; i++) {
-            if (fdsets->fdsets[i].id == fdpass->fdSetID) {
-                virReportError(VIR_ERR_INTERNAL_ERROR,
-                               _("fdset '%u' is already in use by qemu"),
-                               fdpass->fdSetID);
-                return -1;
-            }
         }
     }
 
     for (i = 0; i < fdpass->nfds; i++) {
-        if (fdpass->useFDSet) {
-            if (qemuMonitorAddFileHandleToSet(mon,
-                                              fdpass->fds[i].fd,
-                                              fdpass->fdSetID,
-                                              fdpass->fds[i].opaque) < 0)
-                return -1;
-        } else {
-            if (qemuMonitorSendFileHandle(mon,
-                                          fdpass->fds[i].opaque,
-                                          fdpass->fds[i].fd) < 0)
-                return -1;
-        }
+        if (qemuMonitorAddFileHandleToSet(mon,
+                                          fdpass->fds[i].fd,
+                                          fdpass->fdSetID,
+                                          fdpass->fds[i].opaque) < 0)
+            return -1;
 
         VIR_FORCE_CLOSE(fdpass->fds[i].fd);
         fdpass->passed = true;
@@ -290,11 +216,7 @@ qemuFDPassTransferMonitorRollback(qemuFDPass *fdpass,
     if (!fdpass || !fdpass->passed)
         return;
 
-    if (fdpass->useFDSet) {
-        ignore_value(qemuMonitorRemoveFdset(mon, fdpass->fdSetID));
-    } else {
-        ignore_value(qemuMonitorCloseFileHandle(mon, fdpass->fds[0].opaque));
-    }
+    ignore_value(qemuMonitorRemoveFdset(mon, fdpass->fdSetID));
 }