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. 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
