mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
Return -1 in virPortAllocatorAcquire if all ports are used
Report the error in virPortAllocatorAcquire instead of doing it in every caller. The error contains the port range name instead of the intended use for the port, e.g.: Unable to find an unused port in range 'display' (65534-65535) instead of: Unable to find an unused port for SPICE This also adds error reporting when the QEMU driver could not find an unused port for VNC, VNC WebSockets or NBD migration.
This commit is contained in:
parent
d16d90fd40
commit
8c41794af8
@ -950,11 +950,6 @@ libxlMakeVfb(libxlDriverPrivatePtr driver,
|
||||
|
||||
if (virPortAllocatorAcquire(driver->reservedVNCPorts, &port) < 0)
|
||||
return -1;
|
||||
if (port == 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("Unable to find an unused VNC port"));
|
||||
return -1;
|
||||
}
|
||||
l_vfb->data.vnc.port = port;
|
||||
}
|
||||
x_vfb->vnc.display = l_vfb->data.vnc.port - LIBXL_VNC_PORT_MIN;
|
||||
|
@ -2561,14 +2561,8 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
||||
* to be a correct hostname which refers to the target machine).
|
||||
*/
|
||||
if (uri_in == NULL) {
|
||||
if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) {
|
||||
if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0)
|
||||
goto cleanup;
|
||||
} else if (!port) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("No migration port available within the "
|
||||
"configured range"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((hostname = virGetHostname()) == NULL)
|
||||
goto cleanup;
|
||||
@ -2623,14 +2617,8 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
if (uri->port == 0) {
|
||||
if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) {
|
||||
if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0)
|
||||
goto cleanup;
|
||||
} else if (!port) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("No migration port available within the "
|
||||
"configured range"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (well_formed_uri) {
|
||||
uri->port = port;
|
||||
|
@ -3397,12 +3397,6 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
|
||||
if (virPortAllocatorAcquire(driver->remotePorts, &port) < 0)
|
||||
goto error;
|
||||
|
||||
if (port == 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Unable to find an unused port for SPICE"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
graphics->data.spice.port = port;
|
||||
}
|
||||
|
||||
@ -3428,11 +3422,6 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
|
||||
if (virPortAllocatorAcquire(driver->remotePorts, &tlsPort) < 0)
|
||||
goto error;
|
||||
|
||||
if (tlsPort == 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Unable to find an unused port for SPICE TLS"));
|
||||
goto error;
|
||||
}
|
||||
graphics->data.spice.tlsPort = tlsPort;
|
||||
}
|
||||
}
|
||||
|
@ -157,10 +157,15 @@ int virPortAllocatorAcquire(virPortAllocatorPtr pa,
|
||||
goto cleanup;
|
||||
}
|
||||
*port = i;
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
if (*port == 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unable to find an unused port in range '%s' (%d-%d)"),
|
||||
pa->name, pa->start, pa->end);
|
||||
}
|
||||
cleanup:
|
||||
virObjectUnlock(pa);
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
|
@ -118,11 +118,9 @@ static int testAllocAll(const void *args ATTRIBUTE_UNUSED)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virPortAllocatorAcquire(alloc, &p7) < 0)
|
||||
goto cleanup;
|
||||
if (p7 != 0) {
|
||||
if (virPortAllocatorAcquire(alloc, &p7) == 0) {
|
||||
if (virTestGetDebug())
|
||||
fprintf(stderr, "Expected 0, got %d", p7);
|
||||
fprintf(stderr, "Expected error, got %d", p7);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user