On Fri, Jan 26, 2018 at 01:34:39PM -0600, Eric Blake wrote:
> We don't need the can_write_zeroes_with_unmap field in
> BlockDriverInfo, because it is redundant information with
> supported_zero_flags & BDRV_REQ_MAY_UNMAP.  Note that
> BlockDriverInfo and supported_zero_flags are both per-device
> settings, rather than global state about the driver as a
> whole, which means one or both of these bits of information
> can already be conditional.  Let's audit how they were set:
> 
> crypto: always setting can_write_ to false is pointless (the
> struct starts life zero-initialized), no use of supported_
> 
> nbd: just recently fixed to set can_write_ if supported_
> includes MAY_UNMAP (thus this commit effectively reverts
> bca80059e and solves the problem mentioned there in a more
> global way)
> 
> file-posix, iscsi, qcow2: can_write_ is conditional, while
> supported_ was unconditional; but passing MAY_UNMAP would
> fail with ENOTSUP if the condition wasn't met
> 
> qed: can_write_ is unconditional, but pwrite_zeroes lacks
> support for MAY_UNMAP and supported_ is not set. Perhaps
> support can be added later (since it would be similar to
> qcow2), but for now claiming false is no real loss
> 
> all other drivers: can_write_ is not set, and supported_ is
> either unset or a passthrough
> 
> Simplify the code by moving the conditional into
> supported_zero_flags for all drivers, then dropping the
> now-unused BDI field.  For callers that relied on
> bdrv_can_write_zeroes_with_unmap(), we return the same
> per-device settings for drivers that had conditions (no
> observable change in behavior there); and can now return
> true (instead of false) for drivers that support passthrough
> (for example, the commit driver) which gives those drivers
> the same fix as nbd just got in bca80059e.  For callers that
> relied on supported_zero_flags, we now have a few more places
> that can avoid a wasted call to pwrite_zeroes() that will
> just fail with ENOTSUP.
> 
> Suggested-by: Paolo Bonzini <pbonz...@redhat.com>
> Signed-off-by: Eric Blake <ebl...@redhat.com>
> 
> ---
> The commit id mentioned above is dependent on me not having to respin
> my latest NBD pull request:
> 
> Based-on: <20180126160411.4033-1-ebl...@redhat.com>
> ([PULL 0/8] NBD patches through 26 Jan)
> ---
>  include/block/block.h | 11 -----------
>  block.c               |  8 +-------
>  block/crypto.c        |  1 -
>  block/file-posix.c    |  3 +--
>  block/iscsi.c         |  6 ++++--
>  block/nbd.c           | 11 -----------
>  block/qcow2.c         |  3 +--
>  block/qed.c           |  1 -
>  8 files changed, 7 insertions(+), 37 deletions(-)

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

Attachment: signature.asc
Description: PGP signature

Reply via email to