Francesco Romani has uploaded a new change for review. Change subject: core: enable hyperv optimization on windows ......................................................................
core: enable hyperv optimization on windows On VDSM side, we are catching-up with HyperV enligthenment support and recommended settings. Some of them are grouped under the 'hypervEnable' toggle and it is required to be explicitely enable for various reasons, the first one is they may be not completely transparent to not-windows guests. This patch automaticcaly enables these optimizations for windows guests. Change-Id: I01d50a539347211a6729cfb86922d60a6244d495 Bug-Url: https://bugzilla.redhat.com/1110305 Relates-To: https://bugzilla.redhat.com/1107835 Relates-To: https://bugzilla.redhat.com/1083529 Signed-off-by: Francesco Romani <from...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java M backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java M packaging/conf/osinfo-defaults.properties 6 files changed, 29 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/30188/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java index 0701038..f8a951c 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java @@ -255,4 +255,11 @@ */ boolean isSingleQxlDeviceEnabled(int osId); + /** + * Checks if is recommended enable the HyperV optimizations + * @param osId + * @param version + * @return an boolean + */ + public boolean isHypervEnabled(int osId, Version version); } diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java index 64c32b0..093ede8 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java @@ -408,6 +408,11 @@ } @Override + public boolean isHypervEnabled(int osId, Version version) { + return getBoolean(getValueByVersion(idToUnameLookup.get(osId), "devices.hyperv.enabled", version), false); + } + + @Override public int getOsIdByUniqueName(String uniqueOsName) { for (Map.Entry<Integer, String> entry : getUniqueOsNames().entrySet()) { if (entry.getValue().equals(uniqueOsName)) { diff --git a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java index c9f7d04..8d16db7 100644 --- a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java +++ b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java @@ -58,6 +58,7 @@ preferences.node("/os/rhel8/derivedFrom").put("value", "rhel7"); preferences.node("/os/windows_8/id").put("value", "20"); preferences.node("/backwardCompatibility").put("Windows8", "20"); + preferences.node("/os/windows_7/devices/hyperv/enabled").put("value", "true"); OsRepositoryImpl.INSTANCE.init(preferences); } @@ -233,4 +234,14 @@ assertEquals(20, OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("Windows8")); assertEquals(20, OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("windows_8")); } + + @Test + public void testHyperVLinux() throws Exception { + assertFalse(OsRepositoryImpl.INSTANCE.isHypervEnabled(OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("rhel7"), Version.v3_5)); + } + + @Test + public void testHyperVWindows() throws Exception { + assertTrue(OsRepositoryImpl.INSTANCE.isHypervEnabled(OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("windows_7"), Version.v3_5)); + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java index ceddc2b..5df1593 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java @@ -269,6 +269,7 @@ public static final String sysprepInf = "sysprepInf"; // for the binary sys public static final String spiceFileTransferEnable = "fileTransferEnable"; public static final String spiceCopyPasteEnable = "copyPasteEnable"; + public static final String hypervEnable = "hypervEnable"; // prep public static final String Boot = "boot"; // Optional public static final String BootOrder = "bootOrder"; diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java index 7ec210d..df2325a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java @@ -156,6 +156,10 @@ createInfo.put(VdsProperties.spiceCopyPasteEnable, Boolean.toString(vm.isSpiceCopyPasteEnabled())); } + + if (osRepository.isHypervEnabled(vm.getVmOsId(), vm.getVdsGroupCompatibilityVersion())) { + createInfo.put(VdsProperties.hypervEnable, "true"); + } } private void addCpuPinning(final String compatibilityVersion) { diff --git a/packaging/conf/osinfo-defaults.properties b/packaging/conf/osinfo-defaults.properties index bf579b7..f0937dc 100644 --- a/packaging/conf/osinfo-defaults.properties +++ b/packaging/conf/osinfo-defaults.properties @@ -155,6 +155,7 @@ os.windows_xp.devices.diskInterfaces.value.3.4 = IDE, VirtIO os.windows_xp.devices.diskInterfaces.value.3.5 = IDE, VirtIO os.windows_xp.family.value = windows +os.windows_xp.devices.hyperv.enabled.value = true -- To view, visit http://gerrit.ovirt.org/30188 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I01d50a539347211a6729cfb86922d60a6244d495 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Francesco Romani <from...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches