|
|
34b321 |
From b7cea737b24456765a21ed43ebd9b68ebbbf3537 Mon Sep 17 00:00:00 2001
|
|
|
34b321 |
From: John Snow <jsnow@redhat.com>
|
|
|
34b321 |
Date: Mon, 23 Nov 2015 17:38:21 +0100
|
|
|
34b321 |
Subject: [PATCH 02/27] cutils: Support 'P' and 'E' suffixes in strtosz()
|
|
|
34b321 |
|
|
|
34b321 |
RH-Author: John Snow <jsnow@redhat.com>
|
|
|
34b321 |
Message-id: <1448300320-7772-3-git-send-email-jsnow@redhat.com>
|
|
|
34b321 |
Patchwork-id: 68430
|
|
|
34b321 |
O-Subject: [RHEL-7.3 qemu-kvm PATCH v2 02/21] cutils: Support 'P' and 'E' suffixes in strtosz()
|
|
|
34b321 |
Bugzilla: 1272523
|
|
|
34b321 |
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
|
34b321 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
34b321 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
34b321 |
|
|
|
34b321 |
From: Kevin Wolf <kwolf@redhat.com>
|
|
|
34b321 |
|
|
|
34b321 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
34b321 |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
34b321 |
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
34b321 |
(cherry picked from commit 5e00984aef7c1c317e27c0e8acf66526513c770f)
|
|
|
34b321 |
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
|
34b321 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
34b321 |
---
|
|
|
34b321 |
include/qemu-common.h | 2 ++
|
|
|
34b321 |
monitor.c | 8 ++++----
|
|
|
34b321 |
qemu-img.c | 10 ++++++----
|
|
|
34b321 |
tests/qemu-iotests/049.out | 8 ++++----
|
|
|
34b321 |
util/cutils.c | 4 ++++
|
|
|
34b321 |
5 files changed, 20 insertions(+), 12 deletions(-)
|
|
|
34b321 |
|
|
|
34b321 |
diff --git a/include/qemu-common.h b/include/qemu-common.h
|
|
|
34b321 |
index aee85e3..67f57c9 100644
|
|
|
34b321 |
--- a/include/qemu-common.h
|
|
|
34b321 |
+++ b/include/qemu-common.h
|
|
|
34b321 |
@@ -178,6 +178,8 @@ int parse_uint_full(const char *s, unsigned long long *value, int base);
|
|
|
34b321 |
* A-Z, as strtosz() will use qemu_toupper() on the given argument
|
|
|
34b321 |
* prior to comparison.
|
|
|
34b321 |
*/
|
|
|
34b321 |
+#define STRTOSZ_DEFSUFFIX_EB 'E'
|
|
|
34b321 |
+#define STRTOSZ_DEFSUFFIX_PB 'P'
|
|
|
34b321 |
#define STRTOSZ_DEFSUFFIX_TB 'T'
|
|
|
34b321 |
#define STRTOSZ_DEFSUFFIX_GB 'G'
|
|
|
34b321 |
#define STRTOSZ_DEFSUFFIX_MB 'M'
|
|
|
34b321 |
diff --git a/monitor.c b/monitor.c
|
|
|
34b321 |
index 6a1d06e..33c5bc8 100644
|
|
|
34b321 |
--- a/monitor.c
|
|
|
34b321 |
+++ b/monitor.c
|
|
|
34b321 |
@@ -94,10 +94,10 @@
|
|
|
34b321 |
* 'M' Non-negative target long (32 or 64 bit), in user mode the
|
|
|
34b321 |
* value is multiplied by 2^20 (think Mebibyte)
|
|
|
34b321 |
* 'o' octets (aka bytes)
|
|
|
34b321 |
- * user mode accepts an optional T, t, G, g, M, m, K, k
|
|
|
34b321 |
- * suffix, which multiplies the value by 2^40 for
|
|
|
34b321 |
- * suffixes T and t, 2^30 for suffixes G and g, 2^20 for
|
|
|
34b321 |
- * M and m, 2^10 for K and k
|
|
|
34b321 |
+ * user mode accepts an optional E, e, P, p, T, t, G, g, M, m,
|
|
|
34b321 |
+ * K, k suffix, which multiplies the value by 2^60 for suffixes E
|
|
|
34b321 |
+ * and e, 2^50 for suffixes P and p, 2^40 for suffixes T and t,
|
|
|
34b321 |
+ * 2^30 for suffixes G and g, 2^20 for M and m, 2^10 for K and k
|
|
|
34b321 |
* 'T' double
|
|
|
34b321 |
* user mode accepts an optional ms, us, ns suffix,
|
|
|
34b321 |
* which divides the value by 1e3, 1e6, 1e9, respectively
|
|
|
34b321 |
diff --git a/qemu-img.c b/qemu-img.c
|
|
|
34b321 |
index 9c021e7..eb2d4cb 100644
|
|
|
34b321 |
--- a/qemu-img.c
|
|
|
34b321 |
+++ b/qemu-img.c
|
|
|
34b321 |
@@ -87,8 +87,9 @@ static void help(void)
|
|
|
34b321 |
" 'src_cache' is the cache mode used to read input disk images, the valid\n"
|
|
|
34b321 |
" options are the same as for the 'cache' option\n"
|
|
|
34b321 |
" 'size' is the disk image size in bytes. Optional suffixes\n"
|
|
|
34b321 |
- " 'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M)\n"
|
|
|
34b321 |
- " and T (terabyte, 1024G) are supported. 'b' is ignored.\n"
|
|
|
34b321 |
+ " 'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M),\n"
|
|
|
34b321 |
+ " 'T' (terabyte, 1024G), 'P' (petabyte, 1024T) and 'E' (exabyte, 1024P) are\n"
|
|
|
34b321 |
+ " supported. 'b' is ignored.\n"
|
|
|
34b321 |
" 'output_filename' is the destination disk image filename\n"
|
|
|
34b321 |
" 'output_fmt' is the destination format\n"
|
|
|
34b321 |
" 'options' is a comma separated list of format specific options in a\n"
|
|
|
34b321 |
@@ -417,8 +418,9 @@ static int img_create(int argc, char **argv)
|
|
|
34b321 |
error_report("Image size must be less than 8 EiB!");
|
|
|
34b321 |
} else {
|
|
|
34b321 |
error_report("Invalid image size specified! You may use k, M, "
|
|
|
34b321 |
- "G or T suffixes for ");
|
|
|
34b321 |
- error_report("kilobytes, megabytes, gigabytes and terabytes.");
|
|
|
34b321 |
+ "G, T, P or E suffixes for ");
|
|
|
34b321 |
+ error_report("kilobytes, megabytes, gigabytes, terabytes, "
|
|
|
34b321 |
+ "petabytes and exabytes.");
|
|
|
34b321 |
}
|
|
|
34b321 |
goto fail;
|
|
|
34b321 |
}
|
|
|
34b321 |
diff --git a/tests/qemu-iotests/049.out b/tests/qemu-iotests/049.out
|
|
|
34b321 |
index b2fcf0b..3e56772 100644
|
|
|
34b321 |
--- a/tests/qemu-iotests/049.out
|
|
|
34b321 |
+++ b/tests/qemu-iotests/049.out
|
|
|
34b321 |
@@ -108,15 +108,15 @@ qemu-img: TEST_DIR/t.qcow2: Could not resize image: Operation not supported
|
|
|
34b321 |
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=-1024 encryption=off cluster_size=65536 lazy_refcounts=off
|
|
|
34b321 |
|
|
|
34b321 |
qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- 1kilobyte
|
|
|
34b321 |
-qemu-img: Invalid image size specified! You may use k, M, G or T suffixes for
|
|
|
34b321 |
-qemu-img: kilobytes, megabytes, gigabytes and terabytes.
|
|
|
34b321 |
+qemu-img: Invalid image size specified! You may use k, M, G, T, P or E suffixes for
|
|
|
34b321 |
+qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes.
|
|
|
34b321 |
|
|
|
34b321 |
qemu-img create -f qcow2 -o size=1kilobyte TEST_DIR/t.qcow2
|
|
|
34b321 |
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 encryption=off cluster_size=65536 lazy_refcounts=off
|
|
|
34b321 |
|
|
|
34b321 |
qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- foobar
|
|
|
34b321 |
-qemu-img: Invalid image size specified! You may use k, M, G or T suffixes for
|
|
|
34b321 |
-qemu-img: kilobytes, megabytes, gigabytes and terabytes.
|
|
|
34b321 |
+qemu-img: Invalid image size specified! You may use k, M, G, T, P or E suffixes for
|
|
|
34b321 |
+qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes.
|
|
|
34b321 |
|
|
|
34b321 |
qemu-img create -f qcow2 -o size=foobar TEST_DIR/t.qcow2
|
|
|
34b321 |
qemu-img: Parameter 'size' expects a size
|
|
|
34b321 |
diff --git a/util/cutils.c b/util/cutils.c
|
|
|
34b321 |
index a165819..8f28896 100644
|
|
|
34b321 |
--- a/util/cutils.c
|
|
|
34b321 |
+++ b/util/cutils.c
|
|
|
34b321 |
@@ -267,6 +267,10 @@ static int64_t suffix_mul(char suffix, int64_t unit)
|
|
|
34b321 |
return unit * unit * unit;
|
|
|
34b321 |
case STRTOSZ_DEFSUFFIX_TB:
|
|
|
34b321 |
return unit * unit * unit * unit;
|
|
|
34b321 |
+ case STRTOSZ_DEFSUFFIX_PB:
|
|
|
34b321 |
+ return unit * unit * unit * unit * unit;
|
|
|
34b321 |
+ case STRTOSZ_DEFSUFFIX_EB:
|
|
|
34b321 |
+ return unit * unit * unit * unit * unit * unit;
|
|
|
34b321 |
}
|
|
|
34b321 |
return -1;
|
|
|
34b321 |
}
|
|
|
34b321 |
--
|
|
|
34b321 |
1.8.3.1
|
|
|
34b321 |
|