mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
vmx: check for present/enabled devices earlier
When parsing filesystems, network interfaces, serial ports, and parallel ports, check earlier whether they are present/enabled, delaying the allocation of the objects. This is mostly a small optimization, with no behaviour change. Signed-off-by: Pino Toscano <ptoscano@redhat.com>
This commit is contained in:
parent
c4c32cb300
commit
5d5430e1fc
@ -2439,11 +2439,6 @@ int virVMXParseFileSystem(virConfPtr conf, int number, virDomainFSDefPtr *def)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(*def = virDomainFSDefNew()))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
(*def)->type = VIR_DOMAIN_FS_TYPE_MOUNT;
|
|
||||||
|
|
||||||
snprintf(prefix, sizeof(prefix), "sharedFolder%d", number);
|
snprintf(prefix, sizeof(prefix), "sharedFolder%d", number);
|
||||||
|
|
||||||
VMX_BUILD_NAME(present);
|
VMX_BUILD_NAME(present);
|
||||||
@ -2454,14 +2449,19 @@ int virVMXParseFileSystem(virConfPtr conf, int number, virDomainFSDefPtr *def)
|
|||||||
|
|
||||||
/* vmx:present */
|
/* vmx:present */
|
||||||
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
/* vmx:enabled */
|
/* vmx:enabled */
|
||||||
if (virVMXGetConfigBoolean(conf, enabled_name, &enabled, false, true) < 0)
|
if (virVMXGetConfigBoolean(conf, enabled_name, &enabled, false, true) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
if (!(present && enabled))
|
if (!(present && enabled))
|
||||||
goto ignore;
|
return 0;
|
||||||
|
|
||||||
|
if (!(*def = virDomainFSDefNew()))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
(*def)->type = VIR_DOMAIN_FS_TYPE_MOUNT;
|
||||||
|
|
||||||
/* vmx:hostPath */
|
/* vmx:hostPath */
|
||||||
if (virVMXGetConfigString(conf, hostPath_name, &hostPath, false) < 0)
|
if (virVMXGetConfigString(conf, hostPath_name, &hostPath, false) < 0)
|
||||||
@ -2497,14 +2497,6 @@ int virVMXParseFileSystem(virConfPtr conf, int number, virDomainFSDefPtr *def)
|
|||||||
VIR_FREE(guestName);
|
VIR_FREE(guestName);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
ignore:
|
|
||||||
virDomainFSDefFree(*def);
|
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
result = 0;
|
|
||||||
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2557,9 +2549,6 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (VIR_ALLOC(*def) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
snprintf(prefix, sizeof(prefix), "ethernet%d", controller);
|
snprintf(prefix, sizeof(prefix), "ethernet%d", controller);
|
||||||
|
|
||||||
VMX_BUILD_NAME(present);
|
VMX_BUILD_NAME(present);
|
||||||
@ -2575,17 +2564,20 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
|
|||||||
|
|
||||||
/* vmx:present */
|
/* vmx:present */
|
||||||
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
/* vmx:startConnected */
|
/* vmx:startConnected */
|
||||||
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
||||||
true, true) < 0) {
|
true, true) < 0) {
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Need to distiguish between active and inactive domains here */
|
/* FIXME: Need to distiguish between active and inactive domains here */
|
||||||
if (! present/* && ! startConnected*/)
|
if (! present/* && ! startConnected*/)
|
||||||
goto ignore;
|
return 0;
|
||||||
|
|
||||||
|
if (VIR_ALLOC(*def) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* vmx:connectionType -> def:type */
|
/* vmx:connectionType -> def:type */
|
||||||
if (virVMXGetConfigString(conf, connectionType_name, &connectionType,
|
if (virVMXGetConfigString(conf, connectionType_name, &connectionType,
|
||||||
@ -2726,14 +2718,6 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
|
|||||||
VIR_FREE(vnet);
|
VIR_FREE(vnet);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
ignore:
|
|
||||||
virDomainNetDefFree(*def);
|
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
result = 0;
|
|
||||||
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2773,11 +2757,6 @@ virVMXParseSerial(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(*def = virDomainChrDefNew(NULL)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
(*def)->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
|
|
||||||
|
|
||||||
snprintf(prefix, sizeof(prefix), "serial%d", port);
|
snprintf(prefix, sizeof(prefix), "serial%d", port);
|
||||||
|
|
||||||
VMX_BUILD_NAME(present);
|
VMX_BUILD_NAME(present);
|
||||||
@ -2788,17 +2767,22 @@ virVMXParseSerial(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
|
|
||||||
/* vmx:present */
|
/* vmx:present */
|
||||||
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
/* vmx:startConnected */
|
/* vmx:startConnected */
|
||||||
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
||||||
true, true) < 0) {
|
true, true) < 0) {
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Need to distiguish between active and inactive domains here */
|
/* FIXME: Need to distiguish between active and inactive domains here */
|
||||||
if (! present/* && ! startConnected*/)
|
if (! present/* && ! startConnected*/)
|
||||||
goto ignore;
|
return 0;
|
||||||
|
|
||||||
|
if (!(*def = virDomainChrDefNew(NULL)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
(*def)->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
|
||||||
|
|
||||||
/* vmx:fileType -> def:type */
|
/* vmx:fileType -> def:type */
|
||||||
if (virVMXGetConfigString(conf, fileType_name, &fileType, true) < 0)
|
if (virVMXGetConfigString(conf, fileType_name, &fileType, true) < 0)
|
||||||
@ -2919,14 +2903,6 @@ virVMXParseSerial(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
virURIFree(parsedUri);
|
virURIFree(parsedUri);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
ignore:
|
|
||||||
virDomainChrDefFree(*def);
|
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
result = 0;
|
|
||||||
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2961,11 +2937,6 @@ virVMXParseParallel(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(*def = virDomainChrDefNew(NULL)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
(*def)->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL;
|
|
||||||
|
|
||||||
snprintf(prefix, sizeof(prefix), "parallel%d", port);
|
snprintf(prefix, sizeof(prefix), "parallel%d", port);
|
||||||
|
|
||||||
VMX_BUILD_NAME(present);
|
VMX_BUILD_NAME(present);
|
||||||
@ -2975,17 +2946,22 @@ virVMXParseParallel(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
|
|
||||||
/* vmx:present */
|
/* vmx:present */
|
||||||
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
if (virVMXGetConfigBoolean(conf, present_name, &present, false, true) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
/* vmx:startConnected */
|
/* vmx:startConnected */
|
||||||
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
if (virVMXGetConfigBoolean(conf, startConnected_name, &startConnected,
|
||||||
true, true) < 0) {
|
true, true) < 0) {
|
||||||
goto cleanup;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Need to distiguish between active and inactive domains here */
|
/* FIXME: Need to distiguish between active and inactive domains here */
|
||||||
if (! present/* && ! startConnected*/)
|
if (! present/* && ! startConnected*/)
|
||||||
goto ignore;
|
return 0;
|
||||||
|
|
||||||
|
if (!(*def = virDomainChrDefNew(NULL)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
(*def)->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL;
|
||||||
|
|
||||||
/* vmx:fileType -> def:type */
|
/* vmx:fileType -> def:type */
|
||||||
if (virVMXGetConfigString(conf, fileType_name, &fileType, false) < 0)
|
if (virVMXGetConfigString(conf, fileType_name, &fileType, false) < 0)
|
||||||
@ -3029,14 +3005,6 @@ virVMXParseParallel(virVMXContext *ctx, virConfPtr conf, int port,
|
|||||||
VIR_FREE(fileName);
|
VIR_FREE(fileName);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
ignore:
|
|
||||||
virDomainChrDefFree(*def);
|
|
||||||
*def = NULL;
|
|
||||||
|
|
||||||
result = 0;
|
|
||||||
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user