From 5a0eeb882e3a2bc6b731be432995fa8725a5a167 Mon Sep 17 00:00:00 2001 From: karthik-us Date: Tue, 10 Oct 2023 16:39:37 +0530 Subject: [PATCH] cephfs: Fix cephfs PVC sizing Issue: The RoundOffCephFSVolSize() function omits the fractional part when calculating the size for cephfs volumes, leading to the created volume capacity to be lesser than the requested volume capacity. Fix: Consider the fractional part during the size calculation so the rounded off volume size will be greater than or equal to the requested volume size. Signed-off-by: karthik-us Fixes: #4179 --- internal/util/util.go | 4 ++-- internal/util/util_test.go | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/util/util.go b/internal/util/util.go index 659b40320..2f927b5ab 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -67,9 +67,9 @@ func RoundOffCephFSVolSize(bytes int64) int64 { return 4 * helpers.MiB } - bytes /= helpers.MiB + floatbytes := float64(bytes) / helpers.MiB - bytes = int64(math.Ceil(float64(bytes)/4) * 4) + bytes = int64(math.Ceil(floatbytes/4) * 4) return RoundOffBytes(bytes * helpers.MiB) } diff --git a/internal/util/util_test.go b/internal/util/util_test.go index d8ff37450..aaacbda0f 100644 --- a/internal/util/util_test.go +++ b/internal/util/util_test.go @@ -375,6 +375,16 @@ func TestRoundOffCephFSVolSize(t *testing.T) { 1677722, 4194304, // 4 MiB }, + { + "101MB conversion", + 101000000, + 104857600, // 100MiB + }, + { + "500MB conversion", + 500000000, + 503316480, // 480MiB + }, { "1023MiB conversion", 1072693248,