From f049d4d189f5e5abe7ff64e6c4bd45151f95012e Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 14 Sep 2023 05:13:16 -0600 Subject: [PATCH] Increase reserve on ScaleIO disk formatting for fragmentation (#7955) Signed-off-by: Marcus Sorensen Co-authored-by: Marcus Sorensen --- .../cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java | 4 ++-- .../hypervisor/kvm/storage/ScaleIOStorageAdaptorTest.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java index 607dd620f61..b85be041e48 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptor.java @@ -552,12 +552,12 @@ public class ScaleIOStorageAdaptor implements StorageAdaptor { /** * Calculates usable size from raw size, assuming qcow2 requires 192k/1GB for metadata - * We also remove 32MiB for potential encryption/safety factor. + * We also remove 128MiB for encryption/fragmentation/safety factor. * @param raw size in bytes * @return usable size in bytesbytes */ public static long getUsableBytesFromRawBytes(Long raw) { - long usable = raw - (32 << 20) - ((raw >> 30) * 200704); + long usable = raw - (128 << 20) - ((raw >> 30) * 200704); if (usable < 0) { usable = 0L; } diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptorTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptorTest.java index c06442c6ae3..6115dade07c 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptorTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/storage/ScaleIOStorageAdaptorTest.java @@ -23,9 +23,9 @@ import org.junit.Test; public class ScaleIOStorageAdaptorTest { @Test public void getUsableBytesFromRawBytesTest() { - Assert.assertEquals("Overhead calculated for 8Gi size", 8554774528L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(8L << 30)); - Assert.assertEquals("Overhead calculated for 4Ti size", 4294130925568L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(4000L << 30)); - Assert.assertEquals("Overhead calculated for 500Gi size", 536737005568L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(500L << 30)); + Assert.assertEquals("Overhead calculated for 8Gi size", 8454111232L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(8L << 30)); + Assert.assertEquals("Overhead calculated for 4Ti size", 4294030262272L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(4000L << 30)); + Assert.assertEquals("Overhead calculated for 500Gi size", 536636342272L, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(500L << 30)); Assert.assertEquals("Unsupported small size", 0, ScaleIOStorageAdaptor.getUsableBytesFromRawBytes(1L)); } }