Sizes should use QAPI type 'size' (uint64_t). balloon parameter @value is 'int' (int64_t). qmp_balloon() implicitly converts to ram_addr_t, i.e. uint64_t. BALLOON_CHANGE parameter @actual and BalloonInfo member @actual are also 'int'. virtio_balloon_set_config() and virtio_balloon_stat() implicitly convert from ram_addr_t.
Change all three to 'size', and adjust the code using them. balloon now accepts size values between 2^63 and 2^64-1. It accepts negative values as before, because that's how the QObject input visitor works for backward compatibility. Doing the same for HMP's balloon deserves its own commit (the next one). BALLOON_CHANGE and query-balloon now report sizes above 2^63-1 correctly instead of their (negative) two's complement. So does HMP's "info balloon". Signed-off-by: Markus Armbruster <arm...@redhat.com> --- balloon.c | 2 +- hmp.c | 2 +- qapi-schema.json | 4 ++-- qapi/event.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/balloon.c b/balloon.c index 1d720ff..2ecca76 100644 --- a/balloon.c +++ b/balloon.c @@ -102,7 +102,7 @@ BalloonInfo *qmp_query_balloon(Error **errp) return info; } -void qmp_balloon(int64_t target, Error **errp) +void qmp_balloon(uint64_t target, Error **errp) { if (!have_balloon(errp)) { return; diff --git a/hmp.c b/hmp.c index 8257dd0..4556045 100644 --- a/hmp.c +++ b/hmp.c @@ -781,7 +781,7 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict) return; } - monitor_printf(mon, "balloon: actual=%" PRId64 "\n", info->actual >> 20); + monitor_printf(mon, "balloon: actual=%" PRIu64 "\n", info->actual >> 20); qapi_free_BalloonInfo(info); } diff --git a/qapi-schema.json b/qapi-schema.json index 3ad2bc0..23eb60d 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2003,7 +2003,7 @@ # Since: 0.14.0 # ## -{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } +{ 'struct': 'BalloonInfo', 'data': {'actual': 'size' } } ## # @query-balloon: @@ -2603,7 +2603,7 @@ # <- { "return": {} } # ## -{ 'command': 'balloon', 'data': {'value': 'int'} } +{ 'command': 'balloon', 'data': {'value': 'size'} } ## # @Abort: diff --git a/qapi/event.json b/qapi/event.json index 6d22b02..9dfc70b 100644 --- a/qapi/event.json +++ b/qapi/event.json @@ -488,7 +488,7 @@ # ## { 'event': 'BALLOON_CHANGE', - 'data': { 'actual': 'int' } } + 'data': { 'actual': 'size' } } ## # @GUEST_PANICKED: -- 2.7.5