When creating a snapshots, the refcount adjustment function basically
adjusted the refcounts of any cluster with a non-zero L2 entry. However,
the L2 entry of unallocated zero clusters is exactly one (therefore
non-zero) which led to wrong refcount updates on cluster 0 (the main
qcow2 header), since the cluster index for these unallocated zero clusters
is 0.

This series fixes this by taking all cluster types specifically into
account using qcow2_get_cluster_type and handling them accordingly.
Furthermore, a short test is added.

v2:
 - more thorough commit message
 - take pre-allocated zero clusters into account
 - abort on unknown cluster type
 - a test case

Max Reitz (2):
  qcow2-refcount: Snapshot update for zero clusters
  qemu-iotests: Snapshotting zero clusters

 block/qcow2-refcount.c   | 52 ++++++++++++++++++++++++++-------------
 tests/qemu-iotests/062   | 64 ++++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/group |  1 +
 3 files changed, 100 insertions(+), 17 deletions(-)
 create mode 100755 tests/qemu-iotests/062

-- 
1.8.3.1


Reply via email to