In preparation for qemu maybe actually supporting variable refcount widths in the far future, drop the hardcoded REFCOUNT_SHIFT and instead use the value as given by the image.
Also, the qcow2 documentation gave the width of a refcount block entry as sizeof(uint16_t), which is wrong for any refcount order other than 4. Fix that. This is a follow-up to my "[PATCH v5 00/11] qcow2: Fix image repairing" series and therefore depends on it. v2: - Patch 2: Fix wrongly fixed calculation [BenoƮt, Eric] - Patch 3: Added [Eric] git-backport-diff against v1: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/3:[----] [--] 'qcow2: Drop REFCOUNT_SHIFT' 002/3:[0002] [FC] 'docs/qcow2: Correct refcount_block_entries' 003/3:[down] 'docs/qcow2: Limit refcount_order to [0, 6]' Max Reitz (3): qcow2: Drop REFCOUNT_SHIFT docs/qcow2: Correct refcount_block_entries docs/qcow2: Limit refcount_order to [0, 6] block/qcow2-refcount.c | 32 ++++++++++++++------------------ block/qcow2.c | 2 +- block/qcow2.h | 2 -- docs/specs/qcow2.txt | 3 ++- 4 files changed, 17 insertions(+), 22 deletions(-) -- 2.1.0