]> git.ipfire.org Git - thirdparty/qemu.git/commit
block: Let bdrv_co_is_zero_fast consolidate adjacent extents
authorEric Blake <eblake@redhat.com>
Fri, 9 May 2025 20:40:20 +0000 (15:40 -0500)
committerEric Blake <eblake@redhat.com>
Wed, 14 May 2025 20:55:12 +0000 (15:55 -0500)
commit31bf15d97dd1d205a3b264675f9a1b3bd1939068
tree8585c20bc572a0972ce154bca04e4844947a647e
parenta6a0a7fb0e327d17594c971b4a39de14e025b415
block: Let bdrv_co_is_zero_fast consolidate adjacent extents

Some BDS drivers have a cap on how much block status they can supply
in one query (for example, NBD talking to an older server cannot
inspect more than 4G per query; and qcow2 tends to cap its answers
rather than cross a cluster boundary of an L1 table).  Although the
existing callers of bdrv_co_is_zero_fast are not passing in that large
of a 'bytes' parameter, an upcoming caller wants to query the entire
image at once, and will thus benefit from being able to treat adjacent
zero regions in a coalesced manner, rather than claiming the region is
non-zero merely because pnum was truncated and didn't match the
incoming bytes.

While refactoring this into a loop, note that there is no need to
assign pnum prior to calling bdrv_co_common_block_status_above() (it
is guaranteed to be assigned deeper in the callstack).

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20250509204341.3553601-18-eblake@redhat.com>
block/io.c