"Dr. David Alan Gilbert" <[email protected]> writes:

> * Peter Xu ([email protected]) wrote:
>> On Thu, Sep 17, 2026 at 01:53:22PM +0200, Markus Armbruster wrote:
>> > Fabiano Rosas <[email protected]> writes:
>> > 
>> > > The hmp_info_migrate_parameters function currently open-codes the
>> > > mon_printf calls for each migration parameter. As with the set command
>> > > in the last patch, this should not be necessary as the QAPI
>> > > infrastructure already has generated code that takes type and struct
>> > > member names into account, including converting _ from C into the '-'
>> > > character as part of parameter names strings.
>> > >
>> > > The current code is also quite painful to rebase if a series has been
>> > > carried for a long time while parameters have been added in master.
>> > >
>> > > Replace all of this with a conversion from MigrationParameters to
>> > > QDict using an output visitor and a loop over the QDict that prints
>> > > per-QAPI-type formatted strings.
>> > >
>> > > Modelled after block/qapi.c:dump_qobject, but with some changes to
>> > > keep the migration command output formatting.
>> > >
>> > > Signed-off-by: Fabiano Rosas <[email protected]>
>> > 
>> > Old output of info migrate_parameters for me:
>> > 
>> >     announce-initial: 50
>> >     announce-max: 550
>> >     announce-rounds: 5
>> >     announce-step: 100
>> >     throttle-trigger-threshold: 50
>> >     cpu-throttle-initial: 20
>> >     cpu-throttle-increment: 10
>> >     cpu-throttle-tailslow: off
>> >     max-cpu-throttle: 99
>> >     tls-creds: 
>> >     tls-hostname: 
>> >     tls-authz: 
>> >     max-bandwidth: 134217728
>> >     avail-switchover-bandwidth: 0
>> >     max-postcopy-bandwidth: 0
>> >     downtime-limit: 300
>> >     x-checkpoint-delay: 20000
>> >     multifd-channels: 2
>> >     multifd-compression: none
>> >     zero-page-detection: multifd
>> >     xbzrle-cache-size: 67108864
>> >     x-vcpu-dirty-limit-period: 1000
>> >     vcpu-dirty-limit: 1
>> >     mode: normal
>> >     direct-io: off
>> >     x-rdma-chunk-size: 1048576
>> >     cpr-exec-command:
>> > 
>> > New output:
>> > 
>> >     cpu-throttle-tailslow: off
>> >     xbzrle-cache-size: 67108864
>> >     cpu-throttle-initial: 20
>> >     announce-max: 550
>> >     direct-io: off
>> >     avail-switchover-bandwidth: 0
>> >     local: off
>> >     zero-page-detection: multifd
>> >     multifd-qatzip-level: 1
>> >     x-rdma-chunk-size: 1048576
>> >     multifd-channels: 2
>> >     mode: normal
>> >     multifd-zstd-level: 1
>> >     announce-initial: 50
>> >     downtime-limit: 300
>> >     tls-authz: 
>> >     cpr-exec-command:
>> > 
>> >     vcpu-dirty-limit: 1
>> >     multifd-compression: none
>> >     announce-rounds: 5
>> >     announce-step: 100
>> >     tls-creds: 
>> >     x-vcpu-dirty-limit-period: 1000
>> >     multifd-zlib-level: 1
>> >     max-cpu-throttle: 99
>> >     max-postcopy-bandwidth: 0
>> >     tls-hostname: 
>> >     throttle-trigger-threshold: 50
>> >     max-bandwidth: 134217728
>> >     x-checkpoint-delay: 20000
>> >     cpu-throttle-increment: 10
>> > 
>> > New output has an unwanted blank line after "cpr-exec-command:".
>> > 
>> > New output adds @local, @multifd-qatzip-level, @multifd-zlib-level,
>> > @multifd-zstd-level.  Commit message should point that out.
>> > 
>> > Order of parameters changes, and not for the better.  Hmm.
>> 
>> Good point.. it might start to be awkward to users looking for tls-*,
>> multifd-*, announce-* or cpu-throttle*, etc. after this change, expecting
>> them grouped.
>> 
>> Maybe we can sort them by name with inserting top level to a QList first
>> from the QDict.
>
> Are there any filter visitors in qemu's visitor system - e.g. something that
> sorts?

No.  Visitors walk members in source order.  Source order is good as
long as we care to make it good.  But it doesn't help us here, because
we use the visitor only to convert to QObject, then walk that.  This
loses order.

If QDict iterated in insertion order, we'd be fine.  Python dict do.
Could be a fun little project for someone with time to spare.

The other solution is to iterate over sorted QDict keys, as Peter says.

> Dave
>
>> We won't be able to keep all relevant fields together, for example, we used
>> to have max-cpu-throttle together with cpu-throttle-*, now also separate
>> even with alphabetical order, but it's a special case of bad name since the
>> start.. where it could have been "cpu-throttle-max".  Meanwhile, as another
>> good side effect, we can finally have max-* fields together too.
>> 
>> -- 
>> Peter Xu
>> 


Reply via email to