]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
port allocator: remove range check in release function
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Tue, 6 Feb 2018 09:09:08 +0000 (12:09 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 22 Feb 2018 12:52:45 +0000 (13:52 +0100)
Range check in virPortAllocatorSetUsed is not useful anymore
when we manage ports for entire unsigned short range values.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
src/bhyve/bhyve_process.c
src/libxl/libxl_domain.c
src/libxl/libxl_migration.c
src/qemu/qemu_migration.c
src/qemu/qemu_process.c
src/util/virportallocator.c
src/util/virportallocator.h
tests/bhyvexml2argvtest.c
tests/libxlxml2domconfigtest.c
tests/virportallocatortest.c

index e215f6a8dcde5b1c8c00eb0c36189cdd56277c8e..5e682faad663a673198ab397583376ab276d49a3 100644 (file)
@@ -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);
         }
index feb092ba4813e7430c825a675ad039014ce998ae..e76740247db3d6d6447aa6b1a449ba6fdff291f9 100644 (file)
@@ -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);
         }
     }
index a7a578c7292d943f20f7c9eb85b3d8b7d292cff1..ccf2daed1370a1786de5d99b462fc307b5243e0d 100644 (file)
@@ -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)
index 059e63a88a7463a8c2d1f875bb7b72c86811502f..b22a327b53556f462b0242f6d46234ac06459302 100644 (file)
@@ -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);
index 132606669c3ee80eaf53000240b20f4df8679f91..2053f8ead134b774ccd6bca220eacfea02ace901 100644 (file)
@@ -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);
index 23c7af1755f36b5594ae2e3c602262a206b18070..040d8238b94d94f13ce3b415c5e38fbdb2be15d6 100644 (file)
@@ -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"),
index ea816bc9710f8be2fa72135be898287987459164..2e0ba466ef3dd908b7611c353f9bfbcd8e823252 100644 (file)
@@ -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);
 
index e8089b8700a1ea01cf649daf28d222eb30c182aa..a7d5ce4c45dd6de7bc989df251f4a89e437fa364 100644 (file)
@@ -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);
     }
index bfe742b81926ae85d642186fa741c870db3eea7d..2a678b8d6234197223036994cc6a7acdbe34faee 100644 (file)
@@ -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);
     }
index 0a967d1f5cb8955f45411ce351c71b9f8a643479..86dd3bcfa3221fb2c552364657121f713796be6e 100644 (file)
@@ -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;