]> git.proxmox.com Git - mirror_qemu.git/commit
qemu-img: Allow target be aligned to sector size
authorHanna Reitz <hreitz@redhat.com>
Thu, 19 Aug 2021 10:12:00 +0000 (12:12 +0200)
committerHanna Reitz <hreitz@redhat.com>
Wed, 15 Sep 2021 13:54:07 +0000 (15:54 +0200)
commita1c62436a4f053766892355da0ca35c5df19fc22
treed2558f96ef5768b970277c0eb800690cb3735b73
parentff812c55634f767fb0f7f58b942af1a1c44e95cf
qemu-img: Allow target be aligned to sector size

We cannot write to images opened with O_DIRECT unless we allow them to
be resized so they are aligned to the sector size: Since 9c60a5d1978,
bdrv_node_refresh_perm() ensures that for nodes whose length is not
aligned to the request alignment and where someone has taken a WRITE
permission, the RESIZE permission is taken, too).

Let qemu-img convert pass the BDRV_O_RESIZE flag (which causes
blk_new_open() to take the RESIZE permission) when using cache=none for
the target, so that when writing to it, it can be aligned to the target
sector size.

Without this patch, an error is returned:

$ qemu-img convert -f raw -O raw -t none foo.img /mnt/tmp/foo.img
qemu-img: Could not open '/mnt/tmp/foo.img': Cannot get 'write'
permission without 'resize': Image size is not a multiple of request
alignment

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1994266
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20210819101200.64235-1-hreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
qemu-img.c