On 13.07.20 13:19, Max Reitz wrote: > On 10.07.20 16:21, Kevin Wolf wrote: >> Unaligned requests will automatically be aligned to bl.request_alignment >> and we don't want to extend requests to access space beyond the end of >> the image, so it's required that the image size is aligned. >> >> With write requests, this could cause assertion failures like this if >> RESIZE permissions weren't requested: >> >> qemu-img: block/io.c:1910: bdrv_co_write_req_prepare: Assertion `end_sector <= bs->total_sectors || child->perm & BLK_PERM_RESIZE' failed. >> >> This was e.g. triggered by qemu-img converting to a target image with 4k >> request alignment when the image was only aligned to 512 bytes, but not >> to 4k. >> >> Signed-off-by: Kevin Wolf >> --- >> block.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) > > (I think we had some proposal like this before, but I can’t find it, > unfortunately...) (Ah, here it is: https://lists.nongnu.org/archive/html/qemu-devel/2020-03/msg03077.html (Which interestingly teases yet another mysterious “we had a discussion on this before”...)) > I can’t see how with this patch you could create qcow2 images and then > use them with direct I/O, because AFAICS, qemu-img create doesn’t allow > specifying caching options, so AFAIU you’re stuck with: > > $ ./qemu-img create -f qcow2 /mnt/tmp/foo.qcow2 1M > Formatting '/mnt/tmp/foo.qcow2', fmt=qcow2 cluster_size=65536 > compression_type=zlib size=1048576 lazy_refcounts=off refcount_bits=16 > > $ sudo ./qemu-io -t none /mnt/tmp/foo.qcow2 > qemu-io: can't open device /mnt/tmp/foo.qcow2: Image size is not a > multiple of request alignment > > (/mnt/tmp is a filesystem on a “losetup -b 4096” device.) > > Or you use blockdev-create, that seems to work (because of course you > can set the cache mode on the protocol node when you open it for > formatting). But, well, I think there should be a working qemu-img > create case. > > Also, I’m afraid of breaking existing use cases with this patch (just > qemu-img create + using the image with cache=none). > > Max >