[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] block: Reject misaligned write requests with BDRV_REQ_NO_
From: |
Kevin Wolf |
Subject: |
Re: [PATCH v2] block: Reject misaligned write requests with BDRV_REQ_NO_FALLBACK |
Date: |
Mon, 14 Oct 2019 11:26:01 +0200 |
User-agent: |
Mutt/1.12.1 (2019-06-15) |
Am 14.10.2019 um 10:15 hat Alberto Garcia geschrieben:
> The BDRV_REQ_NO_FALLBACK flag means that an operation should only be
> performed if it can be offloaded or otherwise performed efficiently.
>
> However a misaligned write request requires a RMW so we should return
> an error and let the caller decide how to proceed.
>
> This hits an assertion since commit c8bb23cbdb if the required
> alignment is larger than the cluster size:
>
> qemu-img create -f qcow2 -o cluster_size=2k img.qcow2 4G
> qemu-io -c "open -o driver=qcow2,file.align=4k blkdebug::img.qcow2" \
> -c 'write 0 512'
> qemu-io: block/io.c:1127: bdrv_driver_pwritev: Assertion `!(flags &
> BDRV_REQ_NO_FALLBACK)' failed.
> Aborted
>
> The reason is that when writing to an unallocated cluster we try to
> skip the copy-on-write part and zeroize it using BDRV_REQ_NO_FALLBACK
> instead, resulting in a write request that is too small (2KB cluster
> size vs 4KB required alignment).
>
> Signed-off-by: Alberto Garcia <address@hidden>
Thanks, applied to the block branch.
Kevin