[PATCH v3 00/16] qcow2: Let check -r all repair some snapshot bits

Max Reitz posted 16 patches 4 years, 6 months ago
Test asan passed
Test checkpatch passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191011152814.14791-1-mreitz@redhat.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Max Reitz <mreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Jason Wang <jasowang@redhat.com>
block/qcow2.h                |  15 +-
include/hw/virtio/virtio.h   |   7 -
include/qemu/compiler.h      |   7 +
block/qcow2-snapshot.c       | 323 +++++++++++++++++++--
block/qcow2.c                | 155 +++++++++--
hw/block/virtio-blk.c        |   4 +-
hw/net/virtio-net.c          |  10 +-
tests/qemu-iotests/261       | 523 +++++++++++++++++++++++++++++++++++
tests/qemu-iotests/261.out   | 346 +++++++++++++++++++++++
tests/qemu-iotests/common.rc |  20 ++
tests/qemu-iotests/group     |   1 +
11 files changed, 1354 insertions(+), 57 deletions(-)
create mode 100755 tests/qemu-iotests/261
create mode 100644 tests/qemu-iotests/261.out
[PATCH v3 00/16] qcow2: Let check -r all repair some snapshot bits
Posted by Max Reitz 4 years, 6 months ago
Hi,

The v1 cover letter explained this series’s purpose:
https://lists.nongnu.org/archive/html/qemu-block/2019-07/msg01290.html

The v2 cover letter explained the v2 changes:
https://lists.nongnu.org/archive/html/qemu-block/2019-08/msg00921.html


The only changes in v3 are:
- Patches 12 and 13: Added notes to the commit messages why it’s OK to
                     not let the user choose which snapshots to drop

(I wanted to also address Eric’s idea of letting
QCowSnapshot.extra_data_size be always >= sizeof(QCowSnapshotExtraData)
and thus save the MAX(sizeof(extra), sn->extra_data_size) in
qcow2_write_snapshots(), but that doesn’t really work, because then we
have no way of knowing later whether the image is compliant and thus
needs fixing or not.  He gave me an R-b anyway, so I guess it’s fine.
O:-))

This series now has R-bs from Eric on all patches.  I’m only posting it
because I felt a bit bad about just taking the series as-is and add the
commit notes to 12 and 13 while applying it.
(Also, maybe there is someone who saw me have a bit of discussion with
Eric and thus assumed I would definitely send a v3 that they could then
review.)


Max Reitz (16):
  include: Move endof() up from hw/virtio/virtio.h
  qcow2: Use endof()
  qcow2: Add Error ** to qcow2_read_snapshots()
  qcow2: Keep unknown extra snapshot data
  qcow2: Make qcow2_write_snapshots() public
  qcow2: Put qcow2_upgrade() into its own function
  qcow2: Write v3-compliant snapshot list on upgrade
  qcow2: Separate qcow2_check_read_snapshot_table()
  qcow2: Add qcow2_check_fix_snapshot_table()
  qcow2: Fix broken snapshot table entries
  qcow2: Keep track of the snapshot table length
  qcow2: Fix overly long snapshot tables
  qcow2: Repair snapshot table with too many entries
  qcow2: Fix v3 snapshot table entry compliancy
  iotests: Add peek_file* functions
  iotests: Test qcow2's snapshot table handling

 block/qcow2.h                |  15 +-
 include/hw/virtio/virtio.h   |   7 -
 include/qemu/compiler.h      |   7 +
 block/qcow2-snapshot.c       | 323 +++++++++++++++++++--
 block/qcow2.c                | 155 +++++++++--
 hw/block/virtio-blk.c        |   4 +-
 hw/net/virtio-net.c          |  10 +-
 tests/qemu-iotests/261       | 523 +++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/261.out   | 346 +++++++++++++++++++++++
 tests/qemu-iotests/common.rc |  20 ++
 tests/qemu-iotests/group     |   1 +
 11 files changed, 1354 insertions(+), 57 deletions(-)
 create mode 100755 tests/qemu-iotests/261
 create mode 100644 tests/qemu-iotests/261.out

-- 
2.21.0


Re: [PATCH v3 00/16] qcow2: Let check -r all repair some snapshot bits
Posted by Max Reitz 4 years, 6 months ago
On 11.10.19 17:27, Max Reitz wrote:
> Hi,
> 
> The v1 cover letter explained this series’s purpose:
> https://lists.nongnu.org/archive/html/qemu-block/2019-07/msg01290.html
> 
> The v2 cover letter explained the v2 changes:
> https://lists.nongnu.org/archive/html/qemu-block/2019-08/msg00921.html
> 
> 
> The only changes in v3 are:
> - Patches 12 and 13: Added notes to the commit messages why it’s OK to
>                      not let the user choose which snapshots to drop
> 
> (I wanted to also address Eric’s idea of letting
> QCowSnapshot.extra_data_size be always >= sizeof(QCowSnapshotExtraData)
> and thus save the MAX(sizeof(extra), sn->extra_data_size) in
> qcow2_write_snapshots(), but that doesn’t really work, because then we
> have no way of knowing later whether the image is compliant and thus
> needs fixing or not.  He gave me an R-b anyway, so I guess it’s fine.
> O:-))
> 
> This series now has R-bs from Eric on all patches.  I’m only posting it
> because I felt a bit bad about just taking the series as-is and add the
> commit notes to 12 and 13 while applying it.
> (Also, maybe there is someone who saw me have a bit of discussion with
> Eric and thus assumed I would definitely send a v3 that they could then
> review.)
> 
> 
> Max Reitz (16):
>   include: Move endof() up from hw/virtio/virtio.h
>   qcow2: Use endof()
>   qcow2: Add Error ** to qcow2_read_snapshots()
>   qcow2: Keep unknown extra snapshot data
>   qcow2: Make qcow2_write_snapshots() public
>   qcow2: Put qcow2_upgrade() into its own function
>   qcow2: Write v3-compliant snapshot list on upgrade
>   qcow2: Separate qcow2_check_read_snapshot_table()
>   qcow2: Add qcow2_check_fix_snapshot_table()
>   qcow2: Fix broken snapshot table entries
>   qcow2: Keep track of the snapshot table length
>   qcow2: Fix overly long snapshot tables
>   qcow2: Repair snapshot table with too many entries
>   qcow2: Fix v3 snapshot table entry compliancy
>   iotests: Add peek_file* functions
>   iotests: Test qcow2's snapshot table handling
> 
>  block/qcow2.h                |  15 +-
>  include/hw/virtio/virtio.h   |   7 -
>  include/qemu/compiler.h      |   7 +
>  block/qcow2-snapshot.c       | 323 +++++++++++++++++++--
>  block/qcow2.c                | 155 +++++++++--
>  hw/block/virtio-blk.c        |   4 +-
>  hw/net/virtio-net.c          |  10 +-
>  tests/qemu-iotests/261       | 523 +++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/261.out   | 346 +++++++++++++++++++++++
>  tests/qemu-iotests/common.rc |  20 ++
>  tests/qemu-iotests/group     |   1 +
>  11 files changed, 1354 insertions(+), 57 deletions(-)
>  create mode 100755 tests/qemu-iotests/261
>  create mode 100644 tests/qemu-iotests/261.out

Thanks for the review, applied to my block branch:

https://git.xanclic.moe/XanClic/qemu/commits/branch/block

Max