The single-letter suffixes are ambiguous and especially in the context
of disks, the powers of ten are usually used. Proxmox VE uses
multiples of 1024 however.

This is in preparation to adapt format_size() to prefer the verbose
suffixes which is planned for Proxmox VE 9.

The single-letter suffixes stay supported for backwards-compatibility
for API/CLI users as well as parsing backup configurations. The
function is currently also used for parsing the 'target-size' Ceph
pool option (still restricted via schema to single-letter suffixes).

Signed-off-by: Fiona Ebner <f.eb...@proxmox.com>
---

NOTE: should also be applied for Proxmox VE 8.

 src/PVE/JSONSchema.pm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
index 43e0ca0..e7c366f 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -990,16 +990,16 @@ sub check_format {
 sub parse_size {
     my ($value) = @_;
 
-    return undef if $value !~ m/^(\d+(\.\d+)?)([KMGT])?$/;
+    return undef if $value !~ m/^(\d+(\.\d+)?)([KMGT](?:iB)?)?$/;
     my ($size, $unit) = ($1, $3);
     if ($unit) {
-        if ($unit eq 'K') {
+        if ($unit eq 'K' || $unit eq 'KiB') {
             $size = $size * 1024;
-        } elsif ($unit eq 'M') {
+        } elsif ($unit eq 'M' || $unit eq 'MiB') {
             $size = $size * 1024 * 1024;
-        } elsif ($unit eq 'G') {
+        } elsif ($unit eq 'G' || $unit eq 'GiB') {
             $size = $size * 1024 * 1024 * 1024;
-        } elsif ($unit eq 'T') {
+        } elsif ($unit eq 'T' || $unit eq 'TiB') {
             $size = $size * 1024 * 1024 * 1024 * 1024;
         }
     }
-- 
2.47.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to