On Wed, Sep 09, 2026 at 06:44:55PM -0300, Fabiano Rosas wrote: > Convert the code in migrate_params_test_apply() from an open-coded > copy of every migration parameter to a merge operation using QAPI > visitors and QDict. > > The purpose of that routine is to update a temporary structure > (pre-populated with the current migration parameters), with the values > received from the user via QAPI. As a result, the temporary structure > will then contain the "to be applied" parameters and it's validated > before being used to overwrite the parameters currently in use. > > The update is currently done as follows: > > where 'params' is the user input from QAPI, > for each parameter: > > a) check if the option is present > params->has_<name> == true > params-><name> != NULL // for strings > > b) if the parameter is a pointer, free the to-be-assigned member and > allocate memory for the copy from params > > c) assign the user provided value to the temporary structure. > > Step (a) is the same in principle as what the QAPI visitors do at > visit_type_MigrationParameters_members(). > > Steps (b) and (c) are roughly the same as what the QDict > implementation does when qdict_del() and qdict_put_obj() are combined. > > Therefore, replace the open-coded function with > migrate_params_merge(), which achieves the same goal, but uses > visitors and QDict. This hides the details of QAPI (has_*) from the > migration code and avoids the need to update > migrate_params_test_apply() every time a new migration parameter is > added. > > Signed-off-by: Fabiano Rosas <[email protected]>
Reviewed-by: Peter Xu <[email protected]> -- Peter Xu
