block/io: Update BSC only if want_zero is true
authorHanna Reitz <hreitz@redhat.com>
Tue, 18 Jan 2022 16:59:59 +0000 (17:59 +0100)
committerEric Blake <eblake@redhat.com>
Fri, 28 Jan 2022 22:52:40 +0000 (16:52 -0600)
commit113b727ce788335cf76f65355d670c9bc130fd75
treef88a392bce62431f6bbe9415895132cc1a0783d9
parent3a8fa0edd18f76e222d983a31e486e76a51348a7
block/io: Update BSC only if want_zero is true

We update the block-status cache whenever we get new information from a
bdrv_co_block_status() call to the block driver.  However, if we have
passed want_zero=false to that call, it may flag areas containing zeroes
as data, and so we would update the block-status cache with wrong
information.

Therefore, we should not update the cache with want_zero=false.

Reported-by: Nir Soffer <nsoffer@redhat.com>
Fixes: 0bc329fbb00 ("block: block-status cache for data regions")
Reviewed-by: Nir Soffer <nsoffer@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20220118170000.49423-2-hreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
block/io.c