On 7/30/19 12:25 PM, Max Reitz wrote: > qcow2 v3 requires every snapshot table entry to have two extra data > fields: The 64-bit VM state size, and the virtual disk size. Both are > optional for v2 images, so they may not be present. > > qcow2_upgrade() therefore should update the snapshot table to ensure all > entries have these extra data fields. > > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1727347 > Reported-by: Eric Blake > Signed-off-by: Max Reitz > --- > block/qcow2.c | 29 +++++++++++++++++++++++++++-- > 1 file changed, 27 insertions(+), 2 deletions(-) > > + > + /* > + * In v2, snapshots do not need to have extra data. v3 requires > + * the 64-bit VM state size and the virtual disk size to be > + * present. > + * qcow2_write_snapshots() will always write the list in the > + * v3-compliant format. > + */ > + need_snapshot_update = false; > + for (i = 0; i < s->nb_snapshots; i++) { > + if (s->snapshots[i].extra_data_size < 16) { s/16/sizeof(extra)/ looks a bit nicer, but doesn't change semantics. Reviewed-by: Eric Blake -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org