[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 26/56] block: Make BlockMeasureInfo sizes unsign
From: |
Markus Armbruster |
Subject: |
[Qemu-block] [RFC PATCH 26/56] block: Make BlockMeasureInfo sizes unsigned in QAPI |
Date: |
Mon, 7 Aug 2017 16:45:30 +0200 |
Sizes should use QAPI type 'size' (uint64_t). BlockMeasureInfo
members @required and @fully-allocated are 'int' (int64_t).
qcow2_measure() computes their values from qcow2_calc_prealloc_size(),
@virtual_size and @required, all uint64_t (the former only since the
previous commit).
raw_measure() computes them either from bdrv_getlength() or from
qemu_opt_get_size_del(). The former is int64_t, but we error out if
it's negative. The latter is uint64_t.
Change these BlockMeasureInfo members to 'size'.
qemu-img now reports them correctly above 2^63-1 instead of their
(negative) two's complement.
Signed-off-by: Markus Armbruster <address@hidden>
---
block/raw-format.c | 10 ++++++----
qapi/block-core.json | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/block/raw-format.c b/block/raw-format.c
index 142649e..6b73d5b 100644
--- a/block/raw-format.c
+++ b/block/raw-format.c
@@ -316,14 +316,16 @@ static BlockMeasureInfo *raw_measure(QemuOpts *opts,
BlockDriverState *in_bs,
Error **errp)
{
BlockMeasureInfo *info;
- int64_t required;
+ int64_t size;
+ uint64_t required;
if (in_bs) {
- required = bdrv_getlength(in_bs);
- if (required < 0) {
- error_setg_errno(errp, -required, "Unable to get image size");
+ size = bdrv_getlength(in_bs);
+ if (size < 0) {
+ error_setg_errno(errp, -size, "Unable to get image size");
return NULL;
}
+ required = size;
} else {
required = ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
BDRV_SECTOR_SIZE);
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 02e12f7..bc8e5b6 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -485,7 +485,7 @@
# Since: 2.10
##
{ 'struct': 'BlockMeasureInfo',
- 'data': {'required': 'int', 'fully-allocated': 'int'} }
+ 'data': {'required': 'size', 'fully-allocated': 'size'} }
##
# @query-block:
--
2.7.5
- Re: [Qemu-block] [Qemu-devel] [RFC PATCH 12/56] pc-dimm: Make size and address unsigned in QAPI/QMP, (continued)
[Qemu-block] [RFC PATCH 29/56] block: Make BlockDirtyInfo byte count unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 35/56] blockjob: Lift speed sign conversion into block_job_set_speed(), Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 37/56] blockjob: Make BlockJobInfo and event speed unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 33/56] block: Make block_resize size unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 26/56] block: Make BlockMeasureInfo sizes unsigned in QAPI,
Markus Armbruster <=
[Qemu-block] [RFC PATCH 32/56] hmp: Make block_set_io_throttle's arguments unsigned, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 27/56] block/dirty-bitmap: Clean up signed vs. unsigned dirty counts, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 31/56] block: Make throttle byte rates and sizes unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07