Am 12.08.2019 um 21:46 hat Max Reitz geschrieben: > On 12.08.19 20:11, Vladimir Sementsov-Ogievskiy wrote: > > Hi all! > > > > I'm not sure, is it a bug or a feature, but using qcow2 under raw is > > broken. It should be either fixed like I propose (by Max's suggestion) > > or somehow forbidden (just forbid backing-file supporting node to be > > file child of raw-format node). > > I agree, I think only filters should return BDRV_BLOCK_RAW. If BDRV_BLOCK_RAW isn't suitable for raw, something went wrong. :-) But anyway, raw is essentially a filter, at least if you don't use the offset option. And BDRV_BLOCK_RAW shouldn't even depend on an unchanged offset because the .bdrv_co_block_status implementation returns the right offset. And indeed, you can replace raw with blkdebug and it still fails (the testcase from patch 2 fails, too, but it's obvious enough this way): $ ./qemu-img map --output=json --image-opts driver=qcow2,file.driver=file,file.filename=/tmp/test.qcow2 [{ "start": 0, "length": 1048576, "depth": 1, "zero": true, "data": false}, { "start": 1048576, "length": 1048576, "depth": 1, "zero": false, "data": true, "offset": 327680}, { "start": 2097152, "length": 65011712, "depth": 1, "zero": true, "data": false}] $ ./qemu-img map --output=json --image-opts driver=raw,file.driver=qcow2,file.file.driver=file,file.file.filename=/tmp/test.qcow2 [{ "start": 0, "length": 67108864, "depth": 0, "zero": false, "data": false}] $ ./qemu-img map --output=json --image-opts driver=blkdebug,image.driver=qcow2,image.file.driver=file,image.file.filename=/tmp/test.qcow2 [{ "start": 0, "length": 67108864, "depth": 0, "zero": false, "data": false}] After applying your "deal with filters" series, blkdebug actually prints the expected result and passes the iotests case, but raw still doesn't. So you must have fixed something for filters that declare themselves filters, even though that semantics should probably be coupled to BDRV_BLOCK_RAW instead so that the raw format can benefit from it, too. Kevin