qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [PATCH v3 07/13] nbd-server: simplify reply transmissio


From: Eric Blake
Subject: Re: [Qemu-block] [PATCH v3 07/13] nbd-server: simplify reply transmission
Date: Thu, 12 Oct 2017 17:27:22 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

On 10/12/2017 04:53 AM, Vladimir Sementsov-Ogievskiy wrote:
> Send qiov via qio_channel_writev_all instead of calling nbd_write twice
> with a cork.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
> ---
>  nbd/server.c | 50 ++++++++++++++++++++++++--------------------------
>  1 file changed, 24 insertions(+), 26 deletions(-)
> 

> @@ -1203,36 +1220,17 @@ static int nbd_co_send_simple_reply(NBDClient *client,
>                                      size_t len,
>                                      Error **errp)
>  {
> -    NBDSimpleReply simple_reply;
> -    int ret;
> -
> -    g_assert(qemu_in_coroutine());
> +    NBDSimpleReply reply;

Why the rename from simple_reply to reply?

> +    struct iovec iov[] = {
> +        {.iov_base = &reply, .iov_len = sizeof(reply)},

I guess it made this line shorter.  But we could reduce some churn by
naming it 'reply' in the first place, back in earlier patches.  At the
same time, I'm not going to bother if there's not a reason to respin the
series (or at least the first half).

> +        {.iov_base = data, .iov_len = len}
> +    };
>  
>      trace_nbd_co_send_simple_reply(handle, error, len);
>  
> -    set_be_simple_reply(&simple_reply, system_errno_to_nbd_errno(error),
> -                        handle);
> -
> -    qemu_co_mutex_lock(&client->send_lock);
> -    client->send_coroutine = qemu_coroutine_self();
> -
> -    if (!len) {
> -        ret = nbd_write(client->ioc, &simple_reply, sizeof(simple_reply), 
> NULL);
> -    } else {
> -        qio_channel_set_cork(client->ioc, true);
> -        ret = nbd_write(client->ioc, &simple_reply, sizeof(simple_reply), 
> NULL);
> -        if (ret == 0) {
> -            ret = nbd_write(client->ioc, data, len, errp);
> -            if (ret < 0) {
> -                ret = -EIO;
> -            }
> -        }
> -        qio_channel_set_cork(client->ioc, false);
> -    }
> +    set_be_simple_reply(&reply, system_errno_to_nbd_errno(error), handle);
>  
> -    client->send_coroutine = NULL;
> -    qemu_co_mutex_unlock(&client->send_lock);
> -    return ret;
> +    return nbd_co_send_iov(client, iov, len ? 2 : 1, errp);

This part is definitely nicer!  Thanks for splitting the v2 patch, it
made review a lot more pleasant.

Reviewed-by: Eric Blake <address@hidden>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]