nfds = 0;
for (n = netpriv->vhostfds; n; n = n->next) {
- virBufferAsprintf(&buf, "%s:", qemuFDPassGetPath(n->data));
+ virBufferAsprintf(&buf, "%s:", qemuFDPassDirectGetPath(n->data));
nfds++;
}
return -1;
}
- for (n = netpriv->vhostfds; n; n = n->next) {
- if (qemuFDPassTransferCommand(n->data, cmd) < 0)
- return -1;
- }
+ for (n = netpriv->vhostfds; n; n = n->next)
+ qemuFDPassDirectTransferCommand(n->data, cmd);
if (qemuFDPassTransferCommand(netpriv->slirpfd, cmd) < 0 ||
qemuFDPassTransferCommand(netpriv->vdpafd, cmd) < 0)
g_clear_pointer(&priv->slirpfd, qemuFDPassFree);
g_clear_pointer(&priv->vdpafd, qemuFDPassFree);
- g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassFree);
+ g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassDirectFree);
g_slist_free_full(g_steal_pointer(&priv->tapfds), (GDestroyNotify) qemuFDPassFree);
}
/* file descriptor transfer helpers */
qemuFDPass *slirpfd;
GSList *tapfds;
- GSList *vhostfds;
+ GSList *vhostfds; /* qemuFDPassDirect */
qemuFDPass *vdpafd;
};
}
for (n = netpriv->vhostfds; n; n = n->next) {
- if (qemuFDPassTransferMonitor(n->data, priv->mon) < 0) {
+ if (qemuFDPassDirectTransferMonitor(n->data, priv->mon) < 0) {
qemuDomainObjExitMonitor(vm);
goto cleanup;
}
qemuFDPassTransferMonitorRollback(n->data, priv->mon);
for (n = netpriv->vhostfds; n; n = n->next)
- qemuFDPassTransferMonitorRollback(n->data, priv->mon);
+ qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);
qemuDomainObjExitMonitor(vm);
virErrorRestore(&originalError);
qemuInterfaceOpenVhostNet(virDomainObj *vm,
virDomainNetDef *net)
{
- qemuDomainObjPrivate *priv = vm->privateData;
qemuDomainNetworkPrivate *netpriv = QEMU_DOMAIN_NETWORK_PRIVATE(net);
size_t i;
const char *vhostnet_path = net->backend.vhost;
size_t vhostfdSize = net->driver.virtio.queues;
- g_autofree char *prefix = g_strdup_printf("vhostfd-%s", net->info.alias);
if (!vhostfdSize)
vhostfdSize = 1;
for (i = 0; i < vhostfdSize; i++) {
VIR_AUTOCLOSE fd = open(vhostnet_path, O_RDWR);
- g_autoptr(qemuFDPass) pass = qemuFDPassNewDirect(prefix, priv);
- g_autofree char *suffix = g_strdup_printf("%zu", i);
+ g_autofree char *name = g_strdup_printf("vhostfd-%s%zu", net->info.alias, i);
/* If the config says explicitly to use vhost and we couldn't open it,
* report an error.
break;
}
- qemuFDPassAddFD(pass, &fd, suffix);
- netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, g_steal_pointer(&pass));
+ netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, qemuFDPassDirectNew(name, &fd));
}
netpriv->vhostfds = g_slist_reverse(netpriv->vhostfds);
}
int
-qemuInterfaceOpenVhostNet(virDomainObj *vm,
+qemuInterfaceOpenVhostNet(virDomainObj *vm G_GNUC_UNUSED,
virDomainNetDef *net)
{
- qemuDomainObjPrivate *priv = vm->privateData;
qemuDomainNetworkPrivate *netpriv = QEMU_DOMAIN_NETWORK_PRIVATE(net);
- g_autofree char *prefix = g_strdup_printf("vhostfd-%s", net->info.alias);
size_t vhostfdSize = net->driver.virtio.queues;
size_t i;
return 0;
for (i = 0; i < vhostfdSize; i++) {
- g_autoptr(qemuFDPass) pass = qemuFDPassNewDirect(prefix, priv);
- g_autofree char *suffix = g_strdup_printf("%zu", i);
+ g_autofree char *name = g_strdup_printf("vhostfd-%s%zu", net->info.alias, i);
int fd = STDERR_FILENO + 42 + i;
- qemuFDPassAddFD(pass, &fd, suffix);
- netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, g_steal_pointer(&pass));
+ netpriv->vhostfds = g_slist_prepend(netpriv->vhostfds, qemuFDPassDirectNew(name, &fd));
}
netpriv->vhostfds = g_slist_reverse(netpriv->vhostfds);