mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu: Convert passing of 'tapfds' to 'qemuFDPassDirect'
Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
7869eb9b31
commit
1715dfce38
@ -4208,7 +4208,7 @@ qemuBuildHostNetProps(virDomainNetDef *net)
|
|||||||
if (netpriv->tapfds) {
|
if (netpriv->tapfds) {
|
||||||
nfds = 0;
|
nfds = 0;
|
||||||
for (n = netpriv->tapfds; n; n = n->next) {
|
for (n = netpriv->tapfds; n; n = n->next) {
|
||||||
virBufferAsprintf(&buf, "%s:", qemuFDPassGetPath(n->data));
|
virBufferAsprintf(&buf, "%s:", qemuFDPassDirectGetPath(n->data));
|
||||||
nfds++;
|
nfds++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8709,16 +8709,13 @@ qemuBuildInterfaceConnect(virDomainObj *vm,
|
|||||||
|
|
||||||
/* 'vhostfd' is set to true in all cases when we need to process tapfds */
|
/* 'vhostfd' is set to true in all cases when we need to process tapfds */
|
||||||
if (vhostfd) {
|
if (vhostfd) {
|
||||||
g_autofree char *prefix = g_strdup_printf("tapfd-%s", net->info.alias);
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
for (i = 0; i < tapfdSize; i++) {
|
for (i = 0; i < tapfdSize; i++) {
|
||||||
g_autoptr(qemuFDPass) pass = qemuFDPassNewDirect(prefix, priv);
|
g_autofree char *name = g_strdup_printf("tapfd-%s%zu", net->info.alias, i);
|
||||||
g_autofree char *suffix = g_strdup_printf("%zu", i);
|
|
||||||
int fd = tapfd[i]; /* we want to keep the array intact for security labeling*/
|
int fd = tapfd[i]; /* we want to keep the array intact for security labeling*/
|
||||||
|
|
||||||
qemuFDPassAddFD(pass, &fd, suffix);
|
netpriv->tapfds = g_slist_prepend(netpriv->tapfds, qemuFDPassDirectNew(name, &fd));
|
||||||
netpriv->tapfds = g_slist_prepend(netpriv->tapfds, g_steal_pointer(&pass));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
netpriv->tapfds = g_slist_reverse(netpriv->tapfds);
|
netpriv->tapfds = g_slist_reverse(netpriv->tapfds);
|
||||||
@ -8881,10 +8878,8 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
|
|||||||
virNetDevSetMTU(net->ifname, net->mtu) < 0)
|
virNetDevSetMTU(net->ifname, net->mtu) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
for (n = netpriv->tapfds; n; n = n->next) {
|
for (n = netpriv->tapfds; n; n = n->next)
|
||||||
if (qemuFDPassTransferCommand(n->data, cmd) < 0)
|
qemuFDPassDirectTransferCommand(n->data, cmd);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (n = netpriv->vhostfds; n; n = n->next)
|
for (n = netpriv->vhostfds; n; n = n->next)
|
||||||
qemuFDPassDirectTransferCommand(n->data, cmd);
|
qemuFDPassDirectTransferCommand(n->data, cmd);
|
||||||
|
@ -1054,7 +1054,7 @@ qemuDomainNetworkPrivateClearFDs(qemuDomainNetworkPrivate *priv)
|
|||||||
g_clear_pointer(&priv->slirpfd, qemuFDPassFree);
|
g_clear_pointer(&priv->slirpfd, qemuFDPassFree);
|
||||||
g_clear_pointer(&priv->vdpafd, qemuFDPassFree);
|
g_clear_pointer(&priv->vdpafd, qemuFDPassFree);
|
||||||
g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassDirectFree);
|
g_slist_free_full(g_steal_pointer(&priv->vhostfds), (GDestroyNotify) qemuFDPassDirectFree);
|
||||||
g_slist_free_full(g_steal_pointer(&priv->tapfds), (GDestroyNotify) qemuFDPassFree);
|
g_slist_free_full(g_steal_pointer(&priv->tapfds), (GDestroyNotify) qemuFDPassDirectFree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -404,7 +404,7 @@ struct _qemuDomainNetworkPrivate {
|
|||||||
|
|
||||||
/* file descriptor transfer helpers */
|
/* file descriptor transfer helpers */
|
||||||
qemuFDPass *slirpfd;
|
qemuFDPass *slirpfd;
|
||||||
GSList *tapfds;
|
GSList *tapfds; /* qemuFDPassDirect */
|
||||||
GSList *vhostfds; /* qemuFDPassDirect */
|
GSList *vhostfds; /* qemuFDPassDirect */
|
||||||
qemuFDPass *vdpafd;
|
qemuFDPass *vdpafd;
|
||||||
};
|
};
|
||||||
|
@ -1373,7 +1373,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
|
|||||||
qemuDomainObjEnterMonitor(driver, vm);
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
|
||||||
for (n = netpriv->tapfds; n; n = n->next) {
|
for (n = netpriv->tapfds; n; n = n->next) {
|
||||||
if (qemuFDPassTransferMonitor(n->data, priv->mon) < 0) {
|
if (qemuFDPassDirectTransferMonitor(n->data, priv->mon) < 0) {
|
||||||
qemuDomainObjExitMonitor(vm);
|
qemuDomainObjExitMonitor(vm);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -1525,7 +1525,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
|
|||||||
netdev_name);
|
netdev_name);
|
||||||
|
|
||||||
for (n = netpriv->tapfds; n; n = n->next)
|
for (n = netpriv->tapfds; n; n = n->next)
|
||||||
qemuFDPassTransferMonitorRollback(n->data, priv->mon);
|
qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);
|
||||||
|
|
||||||
for (n = netpriv->vhostfds; n; n = n->next)
|
for (n = netpriv->vhostfds; n; n = n->next)
|
||||||
qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);
|
qemuFDPassDirectTransferMonitorRollback(n->data, priv->mon);
|
||||||
|
Loading…
Reference in New Issue
Block a user