[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [RFC PATCH 09/56] balloon: Make balloon si
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-block] [Qemu-devel] [RFC PATCH 09/56] balloon: Make balloon size unsigned in QAPI/QMP |
Date: |
Wed, 09 Aug 2017 08:04:34 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
"Dr. David Alan Gilbert" <address@hidden> writes:
> * Markus Armbruster (address@hidden) wrote:
>> 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 <address@hidden>
>> ---
>> 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;
>
> Can't you remove the:
> if (target <= 0) {
>
> check?
Functional change when target == 0. Impact is not clear to me.
> (The type of the trace_balloon_event probably needs fixing
> to be uint64_t rather than the unsigned long)
You're right. I'll fix it.
>> 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' } }
>
> I was going to ask whether that was a problem for any external users,
> but there again libvirt looks like it reads it into an unsigned long
> long.
Yes. See also my reply to Juan's review of PATCH 15.
[Qemu-block] [RFC PATCH 09/56] balloon: Make balloon size unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 03/56] monitor: Rewrite comment describing HMP .args_type, Markus Armbruster, 2017/08/07
[Qemu-block] [RFC PATCH 01/56] qobject: Touch up comments to say @param instead of 'param', Markus Armbruster, 2017/08/07