[pve-devel] [PATCH v2 common 1/1] schema: support sizes with verbose suffixes {K, M, G, T}iB
Fiona Ebner
f.ebner at proxmox.com
Mon Jun 2 13:32:03 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>
---
Changes in v2:
* Only add parsing support for now.
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 7c63af1..01f100d 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -880,16 +880,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.39.5
More information about the pve-devel
mailing list