[{"id":1763924,"web_url":"http://patchwork.ozlabs.org/comment/1763924/","msgid":"<20170906085024.GB15510@redhat.com>","list_archive_url":null,"date":"2017-09-06T08:50:24","subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","submitter":{"id":2694,"url":"http://patchwork.ozlabs.org/api/people/2694/","name":"Daniel P. Berrange","email":"berrange@redhat.com"},"content":"On Tue, Sep 05, 2017 at 02:11:12PM -0500, Eric Blake wrote:\n> The new qio_channel_{read,write}{,v}_all functions are documented\n> as yielding until data is available.  When used on a blocking\n> channel, this yield is done via qio_channel_wait() which spawns\n> a new coroutine under the hood (so it is the new entry point that\n> yields as needed); but if we are already in a coroutine (at which\n\nqio_channel_wait doesn't spawn any coroutine - it simply rnus a\nnested event loop to wait for the channel...\n\n> point QIO_CHANNEL_ERR_BLOCK is only possible if we are a\n> non-blocking channel), we want to yield the current coroutine\n> instead of spawning a new one.\n\n...none the less, I think this is ok.\n\n> \n> Signed-off-by: Eric Blake <eblake@redhat.com>\n> ---\n>  io/channel.c | 12 ++++++++++--\n>  1 file changed, 10 insertions(+), 2 deletions(-)\n> \n> diff --git a/io/channel.c b/io/channel.c\n> index 5e8c2f0a91..9e62794cab 100644\n> --- a/io/channel.c\n> +++ b/io/channel.c\n> @@ -105,7 +105,11 @@ int qio_channel_readv_all(QIOChannel *ioc,\n>          ssize_t len;\n>          len = qio_channel_readv(ioc, local_iov, nlocal_iov, errp);\n>          if (len == QIO_CHANNEL_ERR_BLOCK) {\n> -            qio_channel_wait(ioc, G_IO_IN);\n> +            if (qemu_in_coroutine()) {\n> +                qio_channel_yield(ioc, G_IO_IN);\n> +            } else {\n> +                qio_channel_wait(ioc, G_IO_IN);\n> +            }\n>              continue;\n>          } else if (len < 0) {\n>              goto cleanup;\n> @@ -143,7 +147,11 @@ int qio_channel_writev_all(QIOChannel *ioc,\n>          ssize_t len;\n>          len = qio_channel_writev(ioc, local_iov, nlocal_iov, errp);\n>          if (len == QIO_CHANNEL_ERR_BLOCK) {\n> -            qio_channel_wait(ioc, G_IO_OUT);\n> +            if (qemu_in_coroutine()) {\n> +                qio_channel_yield(ioc, G_IO_OUT);\n> +            } else {\n> +                qio_channel_wait(ioc, G_IO_OUT);\n> +            }\n>              continue;\n>          }\n>          if (len < 0) {\n\nAcked-by: Daniel P. Berrange <berrange@redhat.com>\n\nRegards,\nDaniel","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=berrange@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnHPH4Wwjz9sBZ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  6 Sep 2017 18:51:15 +1000 (AEST)","from localhost ([::1]:35018 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpW3F-0005zk-OE\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 04:51:13 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:54662)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dpW2f-0005xP-La\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 04:50:40 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dpW2e-0004jN-MB\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 04:50:37 -0400","from mx1.redhat.com ([209.132.183.28]:46406)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <berrange@redhat.com>)\n\tid 1dpW2W-0004fz-J2; Wed, 06 Sep 2017 04:50:28 -0400","from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 890D4356D0;\n\tWed,  6 Sep 2017 08:50:27 +0000 (UTC)","from redhat.com (unknown [10.42.22.189])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id B926B627D7;\n\tWed,  6 Sep 2017 08:50:26 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 890D4356D0","Date":"Wed, 6 Sep 2017 09:50:24 +0100","From":"\"Daniel P. Berrange\" <berrange@redhat.com>","To":"Eric Blake <eblake@redhat.com>","Message-ID":"<20170906085024.GB15510@redhat.com>","References":"<20170905191114.5959-1-eblake@redhat.com>\n\t<20170905191114.5959-2-eblake@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20170905191114.5959-2-eblake@redhat.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.15","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.30]);\n\tWed, 06 Sep 2017 08:50:27 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Reply-To":"\"Daniel P. Berrange\" <berrange@redhat.com>","Cc":"pbonzini@redhat.com, qemu-devel@nongnu.org, qemu-block@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1764183,"web_url":"http://patchwork.ozlabs.org/comment/1764183/","msgid":"<CABgObfb7yOAAKX9YeNVYrnXdhhNP94O1Wsfo9qGGHDaofMXOEg@mail.gmail.com>","list_archive_url":null,"date":"2017-09-06T14:53:43","subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","submitter":{"id":2701,"url":"http://patchwork.ozlabs.org/api/people/2701/","name":"Paolo Bonzini","email":"pbonzini@redhat.com"},"content":"Il 06 set 2017 10:51 AM, \"Daniel P. Berrange\" <berrange@redhat.com> ha\nscritto:\n\nOn Tue, Sep 05, 2017 at 02:11:12PM -0500, Eric Blake wrote:\n> The new qio_channel_{read,write}{,v}_all functions are documented\n> as yielding until data is available.  When used on a blocking\n> channel, this yield is done via qio_channel_wait() which spawns\n> a new coroutine under the hood (so it is the new entry point that\n> yields as needed); but if we are already in a coroutine (at which\n\nqio_channel_wait doesn't spawn any coroutine - it simply rnus a\nnested event loop to wait for the channel...\n\n> point QIO_CHANNEL_ERR_BLOCK is only possible if we are a\n> non-blocking channel), we want to yield the current coroutine\n> instead of spawning a new one.\n\n...none the less, I think this is ok.\n\n\nGreat, this works for me on the pr-helper too.\n\nPaolo\n\n\n>\n> Signed-off-by: Eric Blake <eblake@redhat.com>\n> ---\n>  io/channel.c | 12 ++++++++++--\n>  1 file changed, 10 insertions(+), 2 deletions(-)\n>\n> diff --git a/io/channel.c b/io/channel.c\n> index 5e8c2f0a91..9e62794cab 100644\n> --- a/io/channel.c\n> +++ b/io/channel.c\n> @@ -105,7 +105,11 @@ int qio_channel_readv_all(QIOChannel *ioc,\n>          ssize_t len;\n>          len = qio_channel_readv(ioc, local_iov, nlocal_iov, errp);\n>          if (len == QIO_CHANNEL_ERR_BLOCK) {\n> -            qio_channel_wait(ioc, G_IO_IN);\n> +            if (qemu_in_coroutine()) {\n> +                qio_channel_yield(ioc, G_IO_IN);\n> +            } else {\n> +                qio_channel_wait(ioc, G_IO_IN);\n> +            }\n>              continue;\n>          } else if (len < 0) {\n>              goto cleanup;\n> @@ -143,7 +147,11 @@ int qio_channel_writev_all(QIOChannel *ioc,\n>          ssize_t len;\n>          len = qio_channel_writev(ioc, local_iov, nlocal_iov, errp);\n>          if (len == QIO_CHANNEL_ERR_BLOCK) {\n> -            qio_channel_wait(ioc, G_IO_OUT);\n> +            if (qemu_in_coroutine()) {\n> +                qio_channel_yield(ioc, G_IO_OUT);\n> +            } else {\n> +                qio_channel_wait(ioc, G_IO_OUT);\n> +            }\n>              continue;\n>          }\n>          if (len < 0) {\n\nAcked-by: Daniel P. Berrange <berrange@redhat.com>\n\nRegards,\nDaniel\n--\n|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange\n:|\n|: https://libvirt.org         -o-            https://fstop138.berrange.com\n:|\n|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange\n:|","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnRml60Mrz9s7C\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 01:08:38 +1000 (AEST)","from localhost ([::1]:36601 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpbwS-0003rj-98\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 11:08:36 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:41604)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <pbonzini@redhat.com>) id 1dpbi8-0000K4-Ig\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 10:53:50 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <pbonzini@redhat.com>) id 1dpbi5-0005xH-U4\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 10:53:48 -0400","from mail-oi0-f52.google.com ([209.85.218.52]:36394)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <pbonzini@redhat.com>) id 1dpbi5-0005uw-Mt\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 10:53:45 -0400","by mail-oi0-f52.google.com with SMTP id x190so27293616oix.3\n\tfor <qemu-devel@nongnu.org>; Wed, 06 Sep 2017 07:53:45 -0700 (PDT)","by 10.157.56.185 with HTTP; Wed, 6 Sep 2017 07:53:43 -0700 (PDT)","by 10.157.56.185 with HTTP; Wed, 6 Sep 2017 07:53:43 -0700 (PDT)"],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=F4yBeWidLxIt47v3YyI6xJpvD6jdYOPrlzg/L+4dOhk=;\n\tb=lJ14gQqJb3/TH0LfMdpjcwpNyogFdMO6TAF91d0JVGW0qtJwQ93maMpaX5ygRslyVD\n\tqIf5CypAEjp0fhGIAGi8EIvuN0lOKk03we9JE3o3o/oe0B6q40nFyrXFzKZ3g9U26QlH\n\tu4/DiUkN9UKZCANu12TtE685CLmjZfA1bBsSLP1N/38gjT8M7jBIBL8kXGyAhlPUg7yU\n\tPgevLkrUj7CPIUetGhpNs3ZecJYvNBSg/usY2r2Rr27PB3CpBQmtfV/vtT2+Rq1fkF/B\n\tfWSx+2Tj6O8yZiFZ7Ll3/3Wd68F5BXUctOBGDm5TSa2ZZDC7ABYAavvT9lY44drZyNBx\n\tmXoQ==","X-Gm-Message-State":"AHPjjUghOdXD3A29TLcMTcB7ej+nBbcKy1p6n7JrFPtm2lCIwGWCm/Wz\n\tPyDyVqiaLx2bRli6GB7vG+IIgKOPTTf2","X-Google-Smtp-Source":"ADKCNb5Jo7Q9LuCv4irWnVMAh9yIotKvZjEVewfB6XgaiMXjKcm7HOUZL+qk0+VViYSFT6cyBajcmVddVIOa6nA2Iy0=","X-Received":"by 10.202.236.23 with SMTP id k23mr2707421oih.168.1504709624314; \n\tWed, 06 Sep 2017 07:53:44 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170906085024.GB15510@redhat.com>","References":"<20170905191114.5959-1-eblake@redhat.com>\n\t<20170905191114.5959-2-eblake@redhat.com>\n\t<20170906085024.GB15510@redhat.com>","From":"Paolo Bonzini <pbonzini@redhat.com>","Date":"Wed, 6 Sep 2017 16:53:43 +0200","Message-ID":"<CABgObfb7yOAAKX9YeNVYrnXdhhNP94O1Wsfo9qGGHDaofMXOEg@mail.gmail.com>","To":"\"P. Berrange, Daniel\" <berrange@redhat.com>","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.85.218.52","Content-Type":"text/plain; charset=\"UTF-8\"","X-Content-Filtered-By":"Mailman/MimeDel 2.1.21","Subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-devel <qemu-devel@nongnu.org>, qemu-block@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1764187,"web_url":"http://patchwork.ozlabs.org/comment/1764187/","msgid":"<586f8b2f-366f-bbf7-c209-12def49d58cc@redhat.com>","list_archive_url":null,"date":"2017-09-06T15:16:12","subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","submitter":{"id":6591,"url":"http://patchwork.ozlabs.org/api/people/6591/","name":"Eric Blake","email":"eblake@redhat.com"},"content":"On 09/06/2017 03:50 AM, Daniel P. Berrange wrote:\n> On Tue, Sep 05, 2017 at 02:11:12PM -0500, Eric Blake wrote:\n>> The new qio_channel_{read,write}{,v}_all functions are documented\n>> as yielding until data is available.  When used on a blocking\n>> channel, this yield is done via qio_channel_wait() which spawns\n>> a new coroutine under the hood (so it is the new entry point that\n>> yields as needed); but if we are already in a coroutine (at which\n> \n> qio_channel_wait doesn't spawn any coroutine - it simply rnus a\n> nested event loop to wait for the channel...\n> \n>> point QIO_CHANNEL_ERR_BLOCK is only possible if we are a\n>> non-blocking channel), we want to yield the current coroutine\n>> instead of spawning a new one.\n> \n> ...none the less, I think this is ok.\n\nOkay, tweaking the commit message:\n\n    The new qio_channel_{read,write}{,v}_all functions are documented\n    as yielding until data is available.  When used on a blocking\n    channel, this yield is done via qio_channel_wait() which spawns\n    a nested event loop under the hood (so it is that secondary loop\n    which yields as needed); but if we are already in a coroutine (at\n    which point QIO_CHANNEL_ERR_BLOCK is only possible if we are a\n    non-blocking channel), we want to yield the current coroutine\n    instead of spawning a nested event loop.\n\n> \n> Acked-by: Daniel P. Berrange <berrange@redhat.com>\n> \n> Regards,\n> Daniel\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx06.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=eblake@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnRz23lg9z9t2R\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 01:17:34 +1000 (AEST)","from localhost ([::1]:36675 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpc56-0001xn-AW\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 11:17:32 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:52214)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <eblake@redhat.com>) id 1dpc45-0001Yf-CZ\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 11:16:35 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <eblake@redhat.com>) id 1dpc41-0000Pq-80\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 11:16:29 -0400","from mx1.redhat.com ([209.132.183.28]:39342)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <eblake@redhat.com>)\n\tid 1dpc3r-0000Cv-6Q; Wed, 06 Sep 2017 11:16:15 -0400","from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 543E8356D3;\n\tWed,  6 Sep 2017 15:16:14 +0000 (UTC)","from [10.10.120.228] (ovpn-120-228.rdu2.redhat.com [10.10.120.228])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 52EDA7D3F3;\n\tWed,  6 Sep 2017 15:16:13 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 543E8356D3","To":"\"Daniel P. Berrange\" <berrange@redhat.com>","References":"<20170905191114.5959-1-eblake@redhat.com>\n\t<20170905191114.5959-2-eblake@redhat.com>\n\t<20170906085024.GB15510@redhat.com>","From":"Eric Blake <eblake@redhat.com>","Openpgp":"url=http://people.redhat.com/eblake/eblake.gpg","Organization":"Red Hat, Inc.","Message-ID":"<586f8b2f-366f-bbf7-c209-12def49d58cc@redhat.com>","Date":"Wed, 6 Sep 2017 10:16:12 -0500","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170906085024.GB15510@redhat.com>","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\";\n\tboundary=\"fiW6rqqBaEVmE7sLCBgLSoLKSdBeXmw09\"","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.14","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.30]);\n\tWed, 06 Sep 2017 15:16:14 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","X-Content-Filtered-By":"Mailman/MimeDel 2.1.21","Subject":"Re: [Qemu-devel] [PATCH 1/3] io: Yield rather than wait when\n\talready in coroutine","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"pbonzini@redhat.com, qemu-devel@nongnu.org, qemu-block@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]