But:
$ qemu-img map --output=json -f qcow2 json:'{"driver":"qcow2","backing":null, \
"file":{"driver":"file","filename":"top.qcow2"}}'
[{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false},
{ "start": 65536, "length": 65536, "depth": 0, "zero": false, "data": true,
"offset": 327680},
{ "start": 131072, "length": 131072, "depth": 0, "zero": true, "data": false}]
also reports the entire file at "depth":0, which is misleading, since
we have just been arguing from the qemu:allocation-depth perspective
(and also from bdrv_block_status) that the qcow2 image is NOT 100%
allocated (in the sense where allocation == data comes locally).
Perhaps it might be better if we tweaked the above qemu-img map to
produce:
[{ "start": 0, "length": 65536, "depth": -1, "zero": true, "data": false},
{ "start": 65536, "length": 65536, "depth": 0, "zero": false, "data": true,
"offset": 327680},
{ "start": 131072, "length": 65536, "depth": 0, "zero": true, "data": false},
{ "start": 196608, "length": 65536, "depth": -1, "zero": true, "data": false}]
It will be more consistent with "offset" to drop "depth" from output
if we don't have it:
[{ "start": 0, "length": 65536, "zero": true, "data": false},
{ "start": 65536, "length": 65536, "depth": 0, "zero": false,
"data": true, "offset": 327680},
{ "start": 131072, "length": 65536, "depth": 0, "zero": true,
"data": false},
{ "start": 196608, "length": 65536, "zero": true, "data": false}]