Peter Xu <[email protected]> wrote: > For VMS_ARRAY typed vmsd fields, also dump the number of entries in the > array in -vmstate-dump. > > Without such information, vmstate static checker can report false negatives > of incompatible vmsd on VMS_ARRAY typed fields, when the src/dst do not > have the same type of array defined. It's because in the checker we only > check against size of fields within a VMSD field. > > One example: e1000e used to have a field defined as a boolean array with 5 > entries, then removed it and replaced it with UNUSED (in 31e3f318c8b535): > > - VMSTATE_BOOL_ARRAY(core.eitr_intr_pending, E1000EState, > - E1000E_MSIX_VEC_NUM), > + VMSTATE_UNUSED(E1000E_MSIX_VEC_NUM), > > It's a legal replacement but vmstate static checker is not happy with it, > because it checks only against the "size" field between the two > fields (here one is BOOL_ARRAY, the other is UNUSED): > > For BOOL_ARRAY: > > { > "field": "core.eitr_intr_pending", > "version_id": 0, > "field_exists": false, > "size": 1 > }, > > For UNUSED: > > { > "field": "unused", > "version_id": 0, > "field_exists": false, > "size": 5 > }, > > It's not the script to blame because there's just not enough information > dumped to show the total size of the entry for an array. Add it. > > Note that this will not break old vmstate checker because the field will > just be ignored. > > Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: Juan Quintela <[email protected]> queued.
