From 56def261da5825abe771f59d062685c3d90081ac Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Feb 22 2018 12:52:45 +0000 Subject: port allocator: remove range check in release function Range check in virPortAllocatorSetUsed is not useful anymore when we manage ports for entire unsigned short range values. Signed-off-by: Nikolay Shirokovskiy --- diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index e215f6a..5e682fa 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -296,8 +296,7 @@ virBhyveProcessStop(bhyveConnPtr driver, /* VNC autoport cleanup */ if ((vm->def->ngraphics == 1) && vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { - if (virPortAllocatorRelease(driver->remotePorts, - vm->def->graphics[0]->data.vnc.port) < 0) { + if (virPortAllocatorRelease(vm->def->graphics[0]->data.vnc.port) < 0) { VIR_WARN("Failed to release VNC port for '%s'", vm->def->name); } diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index feb092b..e767402 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -777,8 +777,7 @@ libxlDomainCleanup(libxlDriverPrivatePtr driver, vm->def->graphics[0]->data.vnc.autoport) { vnc_port = vm->def->graphics[0]->data.vnc.port; if (vnc_port >= LIBXL_VNC_PORT_MIN) { - if (virPortAllocatorRelease(driver->reservedGraphicsPorts, - vnc_port) < 0) + if (virPortAllocatorRelease(vnc_port) < 0) VIR_DEBUG("Could not mark port %d as unused", vnc_port); } } diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index a7a578c..ccf2dae 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -805,7 +805,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn, } VIR_FREE(socks); virObjectUnref(args); - virPortAllocatorRelease(driver->migrationPorts, priv->migrationPort); + virPortAllocatorRelease(priv->migrationPort); priv->migrationPort = 0; /* Remove virDomainObj from domain list */ @@ -1262,7 +1262,7 @@ libxlDomainMigrationFinish(virConnectPtr dconn, virObjectEventPtr event = NULL; virDomainPtr dom = NULL; - virPortAllocatorRelease(driver->migrationPorts, priv->migrationPort); + virPortAllocatorRelease(priv->migrationPort); priv->migrationPort = 0; if (cancelled) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 059e63a..b22a327 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -582,7 +582,7 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver, cleanup: VIR_FREE(diskAlias); if (ret < 0 && nbdPort == 0) - virPortAllocatorRelease(driver->migrationPorts, port); + virPortAllocatorRelease(port); return ret; exit_monitor: @@ -610,7 +610,7 @@ qemuMigrationDstStopNBDServer(virQEMUDriverPtr driver, if (qemuDomainObjExitMonitor(driver, vm) < 0) return -1; - virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort); + virPortAllocatorRelease(priv->nbdPort); priv->nbdPort = 0; return 0; } @@ -2270,7 +2270,7 @@ qemuMigrationDstPrepareCleanup(virQEMUDriverPtr driver, qemuDomainJobTypeToString(priv->job.active), qemuDomainAsyncJobTypeToString(priv->job.asyncJob)); - virPortAllocatorRelease(driver->migrationPorts, priv->migrationPort); + virPortAllocatorRelease(priv->migrationPort); priv->migrationPort = 0; if (!qemuMigrationJobIsActive(vm, QEMU_ASYNC_JOB_MIGRATION_IN)) @@ -2949,7 +2949,7 @@ qemuMigrationDstPrepareAny(virQEMUDriverPtr driver, * it is given in parameters */ if (nbdPort == 0) - virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort); + virPortAllocatorRelease(priv->nbdPort); priv->nbdPort = 0; virDomainObjRemoveTransientDef(vm); qemuDomainRemoveInactiveJob(driver, vm); @@ -3190,7 +3190,7 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver, if (ret != 0) { VIR_FREE(*uri_out); if (autoPort) - virPortAllocatorRelease(driver->migrationPorts, port); + virPortAllocatorRelease(port); } return ret; } @@ -5554,7 +5554,7 @@ qemuMigrationDstFinish(virQEMUDriverPtr driver, cleanup: VIR_FREE(jobInfo); - virPortAllocatorRelease(driver->migrationPorts, port); + virPortAllocatorRelease(port); if (priv->mon) qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); VIR_FREE(priv->origname); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 1326066..2053f8e 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6568,7 +6568,7 @@ void qemuProcessStop(virQEMUDriverPtr driver, } } - virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort); + virPortAllocatorRelease(priv->nbdPort); priv->nbdPort = 0; if (priv->agent) { @@ -6729,15 +6729,13 @@ void qemuProcessStop(virQEMUDriverPtr driver, virDomainGraphicsDefPtr graphics = vm->def->graphics[i]; if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { if (graphics->data.vnc.autoport) { - virPortAllocatorRelease(driver->remotePorts, - graphics->data.vnc.port); + virPortAllocatorRelease(graphics->data.vnc.port); } else if (graphics->data.vnc.portReserved) { virPortAllocatorSetUsed(graphics->data.spice.port, false); graphics->data.vnc.portReserved = false; } if (graphics->data.vnc.websocketGenerated) { - virPortAllocatorRelease(driver->webSocketPorts, - graphics->data.vnc.websocket); + virPortAllocatorRelease(graphics->data.vnc.websocket); graphics->data.vnc.websocketGenerated = false; graphics->data.vnc.websocket = -1; } else if (graphics->data.vnc.websocket) { @@ -6746,10 +6744,8 @@ void qemuProcessStop(virQEMUDriverPtr driver, } if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { if (graphics->data.spice.autoport) { - virPortAllocatorRelease(driver->remotePorts, - graphics->data.spice.port); - virPortAllocatorRelease(driver->remotePorts, - graphics->data.spice.tlsPort); + virPortAllocatorRelease(graphics->data.spice.port); + virPortAllocatorRelease(graphics->data.spice.tlsPort); } else { if (graphics->data.spice.portReserved) { virPortAllocatorSetUsed(graphics->data.spice.port, false); diff --git a/src/util/virportallocator.c b/src/util/virportallocator.c index 23c7af1..040d823 100644 --- a/src/util/virportallocator.c +++ b/src/util/virportallocator.c @@ -266,8 +266,7 @@ virPortAllocatorAcquire(virPortAllocatorRangePtr range, } int -virPortAllocatorRelease(virPortAllocatorRangePtr range, - unsigned short port) +virPortAllocatorRelease(unsigned short port) { int ret = -1; virPortAllocatorPtr pa = virPortAllocatorGet(); @@ -280,13 +279,6 @@ virPortAllocatorRelease(virPortAllocatorRangePtr range, virObjectLock(pa); - if (port < range->start || - port > range->end) { - virReportInvalidArg(port, "port %d must be in range (%d, %d)", - port, range->start, range->end); - goto cleanup; - } - if (virBitmapClearBit(pa->bitmap, port) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to release port %d"), diff --git a/src/util/virportallocator.h b/src/util/virportallocator.h index ea816bc..2e0ba46 100644 --- a/src/util/virportallocator.h +++ b/src/util/virportallocator.h @@ -43,8 +43,7 @@ void virPortAllocatorRangeFree(virPortAllocatorRangePtr range); int virPortAllocatorAcquire(virPortAllocatorRangePtr range, unsigned short *port); -int virPortAllocatorRelease(virPortAllocatorRangePtr range, - unsigned short port); +int virPortAllocatorRelease(unsigned short port); int virPortAllocatorSetUsed(unsigned short port, bool value); diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index e8089b8..a7d5ce4 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -95,7 +95,7 @@ static int testCompareXMLToArgvFiles(const char *xml, vmdef->ngraphics == 1 && vmdef->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { if (vmdef->graphics[0]->data.vnc.autoport) - virPortAllocatorRelease(gports, vmdef->graphics[0]->data.vnc.port); + virPortAllocatorRelease(vmdef->graphics[0]->data.vnc.port); else virPortAllocatorSetUsed(vmdef->graphics[0]->data.vnc.port, false); } diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c index bfe742b..2a678b8 100644 --- a/tests/libxlxml2domconfigtest.c +++ b/tests/libxlxml2domconfigtest.c @@ -116,7 +116,7 @@ testCompareXMLToDomConfig(const char *xmlfile, vmdef->ngraphics == 1 && vmdef->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { if (vmdef->graphics[0]->data.vnc.autoport) - virPortAllocatorRelease(gports, vmdef->graphics[0]->data.vnc.port); + virPortAllocatorRelease(vmdef->graphics[0]->data.vnc.port); else virPortAllocatorSetUsed(vmdef->graphics[0]->data.vnc.port, false); } diff --git a/tests/virportallocatortest.c b/tests/virportallocatortest.c index 0a967d1..86dd3bc 100644 --- a/tests/virportallocatortest.c +++ b/tests/virportallocatortest.c @@ -98,13 +98,13 @@ static int testAllocAll(const void *args ATTRIBUTE_UNUSED) ret = 0; cleanup: - virPortAllocatorRelease(ports, p1); - virPortAllocatorRelease(ports, p2); - virPortAllocatorRelease(ports, p3); - virPortAllocatorRelease(ports, p4); - virPortAllocatorRelease(ports, p5); - virPortAllocatorRelease(ports, p6); - virPortAllocatorRelease(ports, p7); + virPortAllocatorRelease(p1); + virPortAllocatorRelease(p2); + virPortAllocatorRelease(p3); + virPortAllocatorRelease(p4); + virPortAllocatorRelease(p5); + virPortAllocatorRelease(p6); + virPortAllocatorRelease(p7); virPortAllocatorRangeFree(ports); return ret; @@ -142,8 +142,7 @@ static int testAllocReuse(const void *args ATTRIBUTE_UNUSED) goto cleanup; } - - if (virPortAllocatorRelease(ports, p2) < 0) + if (virPortAllocatorRelease(p2) < 0) goto cleanup; if (virPortAllocatorAcquire(ports, &p4) < 0) @@ -155,9 +154,9 @@ static int testAllocReuse(const void *args ATTRIBUTE_UNUSED) ret = 0; cleanup: - virPortAllocatorRelease(ports, p1); - virPortAllocatorRelease(ports, p3); - virPortAllocatorRelease(ports, p4); + virPortAllocatorRelease(p1); + virPortAllocatorRelease(p3); + virPortAllocatorRelease(p4); virPortAllocatorRangeFree(ports); return ret;