@@ -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;
@@ -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:
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 <armbru@redhat.com> --- block/null.c | 2 +- qapi/block-core.json | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-)