[pve-devel] [PATCH common v3 1/6] schema: support sizes with verbose suffixes {K, M, G, T}iB
Fiona Ebner
f.ebner at proxmox.com
Wed Jul 23 13:57:36 CEST 2025
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.ebner at 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
More information about the pve-devel
mailing list