<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 5, 2021, 21:33 Eric Blake <<a href="mailto:eblake@redhat.com">eblake@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 3/5/21 11:16 AM, Nir Soffer wrote:<br>
> If a request includes only zeroes, use efficient zero method instead of<br>
> sending the zeroes over the wire.<br>
> <br>
> Signed-off-by: Nir Soffer <<a href="mailto:nsoffer@redhat.com" target="_blank" rel="noreferrer">nsoffer@redhat.com</a>><br>
> ---<br>
>  examples/Makefile.am  |  1 +<br>
>  examples/copy-libev.c | 68 ++++++++++++++++++++++++++++++++++---------<br>
>  2 files changed, 55 insertions(+), 14 deletions(-)<br>
> <br>
<br>
> +static void<br>
> +start_zero(struct request *r)<br>
> +{<br>
> +    int64_t cookie;<br>
> +<br>
> +    DEBUG ("start zero offset=%ld len=%ld", r->offset, r->length);<br>
> +<br>
> +    cookie = nbd_aio_zero (<br>
> +        dst.nbd, r->length, r->offset,<br>
> +        (nbd_completion_callback) { .callback=request_completed,<br>
> +                                    .user_data=r },<br>
> +        0);<br>
> +    if (cookie == -1)<br>
> +        FAIL ("Cannot start zero: %s", nbd_get_error ());<br>
<br>
You didn't check nbd_can_zero anywhere.  If the server does not<br>
advertise support for NBD_CMD_ZERO (possible to do with nbdkit<br>
--filter=nozero), then this will always fail.  It may be worth adding a<br>
manual fallback to write in this case, instead of completely failing.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Right, should be easy to add.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
-- <br>
Eric Blake, Principal Software Engineer<br>
Red Hat, Inc.           +1-919-301-3226<br>
Virtualization:  <a href="http://qemu.org" rel="noreferrer noreferrer" target="_blank">qemu.org</a> | <a href="http://libvirt.org" rel="noreferrer noreferrer" target="_blank">libvirt.org</a><br>
<br>
</blockquote></div></div></div>