On Fri, Apr 18, 2025 at 04:52:46PM -0500, Eric Blake wrote:
> This patch is purely mechanical, changing bool want_zero into an
> unsigned int for bitwise-or of flags.  As of this patch, all
> implementations are unchanged (the old want_zero==true is now
> mode==BDRV_WANT_PRECISE which is a superset of BDRV_WANT_ZERO); but
> the callers in io.c that used to pass want_zero==false are now
> prepared for future driver changes that can now distinguish bewteen
> BDRV_WANT_ZERO vs. BDRV_WANT_ALLOCATED.  The next patch will actually
> change the file-posix driver along those lines, now that we have
> more-specific hints.
> 
> As for the background why this patch is useful: right now, the
> file-posix driver recognizes that if allocation is being queried, the
> entire image can be reported as allocated (there is no backing file to
> refer to) - but this throws away information on whether the entire
> image reads as zero (trivially true if lseek(SEEK_HOLE) at offset 0
> returns -ENXIO, a bit more complicated to prove if the raw file was
> created with 'qemu-img create' since we intentionally allocate a small
> chunk of all-zero data to help with alignment probing).  Later patches
> will add a generic algorithm for seeing if an entire file reads as
> zeroes.
> 
> Signed-off-by: Eric Blake <ebl...@redhat.com>
> ---
> 
> In response to Stefan's ask for what it would look like as a bitmask
> of flags instead of an enum.  Only the first two patches of the series
> change.
> 
>  block/coroutines.h               |  4 +--
>  include/block/block-common.h     | 11 +++++++
>  include/block/block_int-common.h | 27 +++++++++--------
>  include/block/block_int-io.h     |  4 +--
>  block/io.c                       | 51 ++++++++++++++++----------------
>  block/blkdebug.c                 |  6 ++--
>  block/copy-before-write.c        |  4 +--
>  block/file-posix.c               |  4 +--
>  block/gluster.c                  |  4 +--
>  block/iscsi.c                    |  6 ++--
>  block/nbd.c                      |  4 +--
>  block/null.c                     |  6 ++--
>  block/parallels.c                |  6 ++--
>  block/qcow.c                     |  2 +-
>  block/qcow2.c                    |  6 ++--
>  block/qed.c                      |  6 ++--
>  block/quorum.c                   |  4 +--
>  block/raw-format.c               |  4 +--
>  block/rbd.c                      |  6 ++--
>  block/snapshot-access.c          |  4 +--
>  block/vdi.c                      |  4 +--
>  block/vmdk.c                     |  2 +-
>  block/vpc.c                      |  2 +-
>  block/vvfat.c                    |  6 ++--
>  tests/unit/test-block-iothread.c |  2 +-
>  25 files changed, 99 insertions(+), 86 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>

Attachment: signature.asc
Description: PGP signature

Reply via email to