On 12/05/2014 09:53 AM, Max Reitz wrote:
It is easy to create only self-referential refblocks, but there are
cases where that is impossible. This adds a test for two of those cases
(combined in a single test case).
Suggested-by: Eric Blake <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
---
This patch depends on version 4 (or hopefully any later version) of my
"qcow2: Support refcount orders != 4" series.
---
tests/qemu-iotests/115 | 95 ++++++++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/115.out | 8 ++++
tests/qemu-iotests/group | 1 +
3 files changed, 104 insertions(+)
create mode 100755 tests/qemu-iotests/115
create mode 100644 tests/qemu-iotests/115.out
+
+# One refblock can describe (with cluster_size=512 and refcount_bits=64)
+# 512/8 = 64 clusters, therefore the L1 table should cover 128 clusters, which
+# equals 128 * (512/8) = 8192 entries (actually, 8192 - 512/8 = 8129 would
This math is slightly off; you really only need 127 consecutive clusters
to guarantee that you have an aligned 64 clusters somewhere in the mix.
Also, 8192 - 512/8 = 8128 (you are missing the +1 L2 entry that is
necessary to ensure the rollover to 128 clusters). The real minimum of
L2 entries to provoke the situation we are after is thus 127 * (512/8) -
512/8 + 1 = 8065...
+# suffice, but it does not really matter). 8192 L2 tables can in turn describe
...at any rate, your conclusion that it does not really matter is
correct; and rounding up to the actual power of 2 is both easier to
explain and more likely to happen in practice (I'm not going to go out
of my way to create a 255.9M guest image, after all).
So, whether or not you want to tweak the comment wording, the test
itself is correct.