[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 53/56] block: Make blockdev-add byte counts unsi
From: |
Markus Armbruster |
Subject: |
[Qemu-block] [RFC PATCH 53/56] block: Make blockdev-add byte counts unsigned in QAPI/QMP |
Date: |
Mon, 7 Aug 2017 16:45:57 +0200 |
File offsets, sizes and alignments should use QAPI type 'size'
(uint64_t). blockdev-add parameters are 'int' (int64_t):
BlockdevOptionsNull member @size; BlockdevOptionsQcow2 members
@cache-size, @l2-cache-size, @refcount-cache-size; BlockdevOptionsNfs
members @readahead-size, @page-cache-size; BlockdevOptionsCurlBase
member @readahead; BlockdevOptionsRaw members @offset, @size.
The block drivers get their values with qemu_opt_get_size(), which
returns uint64_t. They store them in uint64_t variables, except for
the null driver, which stores in BDRVNullState member int64_t length.
Change these BlockdevOptionsFOO members to 'size'.
Change BDRVNullState member length to uint64_t. This moves the
implicit conversion to int64_t from null_file_open() to
null_getlength(). No worse than before.
blockdev-add and -blockdev now accept values between 2^63 and 2^64-1.
They accept negative values as before, because that's how the QObject
input visitor works for backward compatibility.
Values above 2^63 are unlikely to actually work; the block subsystem
isn't prepared for them. Again, no worse than before.
Aside: we call the same thing @readahead-size in one place, and
@readahead in another place. Sad.
Signed-off-by: Markus Armbruster <address@hidden>
---
block/null.c | 2 +-
qapi/block-core.json | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/block/null.c b/block/null.c
index 876f909..2ab0e70 100644
--- a/block/null.c
+++ b/block/null.c
@@ -20,7 +20,7 @@
#define NULL_OPT_ZEROES "read-zeroes"
typedef struct {
- int64_t length;
+ uint64_t length;
int64_t latency_ns;
bool read_zeroes;
} BDRVNullState;
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 64b84a5..3482f8c 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -2189,7 +2189,7 @@
# Since: 2.9
##
{ 'struct': 'BlockdevOptionsNull',
- 'data': { '*size': 'int', '*latency-ns': 'uint64' } }
+ 'data': { '*size': 'size', '*latency-ns': 'uint64' } }
##
# @BlockdevOptionsVVFAT:
@@ -2421,9 +2421,9 @@
'*pass-discard-snapshot': 'bool',
'*pass-discard-other': 'bool',
'*overlap-check': 'Qcow2OverlapChecks',
- '*cache-size': 'int',
- '*l2-cache-size': 'int',
- '*refcount-cache-size': 'int',
+ '*cache-size': 'size',
+ '*l2-cache-size': 'size',
+ '*refcount-cache-size': 'size',
'*cache-clean-interval': 'int',
'*encrypt': 'BlockdevQcow2Encryption' } }
@@ -2568,9 +2568,9 @@
{ 'struct': 'BlockdevOptionsBlkdebug',
'data': { 'image': 'BlockdevRef',
'*config': 'str',
- '*align': 'int', '*max-transfer': 'int32',
- '*opt-write-zero': 'int32', '*max-write-zero': 'int32',
- '*opt-discard': 'int32', '*max-discard': 'int32',
+ '*align': 'size', '*max-transfer': 'size',
+ '*opt-write-zero': 'size', '*max-write-zero': 'size',
+ '*opt-discard': 'size', '*max-discard': 'size',
'*inject-error': ['BlkdebugInjectErrorOptions'],
'*set-state': ['BlkdebugSetStateOptions'] } }
@@ -2862,8 +2862,8 @@
'*user': 'int',
'*group': 'int',
'*tcp-syn-count': 'int',
- '*readahead-size': 'int',
- '*page-cache-size': 'int',
+ '*readahead-size': 'size',
+ '*page-cache-size': 'size',
'*debug': 'int' } }
##
@@ -2893,7 +2893,7 @@
##
{ 'struct': 'BlockdevOptionsCurlBase',
'data': { 'url': 'str',
- '*readahead': 'int',
+ '*readahead': 'size',
'*timeout': 'int',
'*username': 'str',
'*password-secret': 'str',
@@ -3001,7 +3001,7 @@
##
{ 'struct': 'BlockdevOptionsRaw',
'base': 'BlockdevOptionsGenericFormat',
- 'data': { '*offset': 'int', '*size': 'int' } }
+ 'data': { '*offset': 'size', '*size': 'size' } }
##
# @BlockdevOptionsVxHS:
--
2.7.5
- [Qemu-block] [RFC PATCH 55/56] block: Make MapEntry offsets and size unsigned in QAPI, (continued)
- [Qemu-block] [RFC PATCH 55/56] block: Make MapEntry offsets and size unsigned in QAPI, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 56/56] crypto: Make QCryptoBlockInfoLUKS offsets unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 42/56] blockjob: Lift speed sign conversion out of stream_start(), Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 34/56] block: Make BlockDeviceStats sizes, offsets unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 14/56] migration: Fix migrate-set-cache-size error reporting, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 47/56] blockjob: Make BlockJobInfo and event offsets unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 20/56] block: Make ImageInfo sizes unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 51/56] block/nfs: Fix for readahead-size, page-cache-size > INT64_MAX, Markus Armbruster, 2017/08/07
- [Qemu-block] [RFC PATCH 53/56] block: Make blockdev-add byte counts unsigned in QAPI/QMP,
Markus Armbruster <=
- [Qemu-block] [RFC PATCH 41/56] blockjob: Lift speed sign conversion out of mirror_start_job(), Markus Armbruster, 2017/08/07