[Qemu-block] [PULL 2/3] qemugdb/coroutine: fix arch_prctl has unknown return type

2019-02-11 Thread Stefan Hajnoczi
From: Vladimir Sementsov-Ogievskiy qemu coroutine command results in following error output: Python Exception 'arch_prctl' has unknown return type; cast the call to its declared return type: Error occurred in Python command: 'arch_prctl' has unknown return type; cast the call to its declared

[Qemu-block] [PULL 3/3] virtio-blk: cleanup using VirtIOBlock *s and VirtIODevice *vdev

2019-02-11 Thread Stefan Hajnoczi
From: Stefano Garzarella In several part we still using req->dev or VIRTIO_DEVICE(req->dev) when we have already defined s and vdev pointers: VirtIOBlock *s = req->dev; VirtIODevice *vdev = VIRTIO_DEVICE(s); Signed-off-by: Stefano Garzarella Reviewed-by: Liam Merwick Message-id:

[Qemu-block] [PULL 0/3] Block patches

2019-02-11 Thread Stefan Hajnoczi
The following changes since commit 22c5f446514a2a4bb0dbe1fea26713da92fc85fa: Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20190211' into staging (2019-02-11 17:04:57 +) are available in the Git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request

[Qemu-block] [PULL 1/3] iothread: fix iothread hang when stop too soon

2019-02-11 Thread Stefan Hajnoczi
From: Peter Xu Lukas reported an hard to reproduce QMP iothread hang on s390 that QEMU might hang at pthread_join() of the QMP monitor iothread before quitting: Thread 1 #0 0x03ffad10932c in pthread_join #1 0x000109e95750 in qemu_thread_join at

Re: [Qemu-block] [PULL 0/9] Block patches

2019-02-11 Thread Stefan Hajnoczi
On Mon, Feb 11, 2019 at 11:42:14AM +, Peter Maydell wrote: > On Mon, 11 Feb 2019 at 05:50, Stefan Hajnoczi wrote: > > > > The following changes since commit e47f81b617684c4546af286d307b69014a83538a: > > > > Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into > >

Re: [Qemu-block] [RFC PATCH] coroutines: generate wrapper code

2019-02-11 Thread Stefan Hajnoczi
On Mon, Feb 11, 2019 at 09:38:37AM +, Vladimir Sementsov-Ogievskiy wrote: > 11.02.2019 6:42, Stefan Hajnoczi wrote: > > On Fri, Feb 08, 2019 at 05:11:22PM +0300, Vladimir Sementsov-Ogievskiy > > wrote: > >> Hi all! > >> > >> We have a very frequent pattern of wrapping a coroutine_fn function

Re: [Qemu-block] [PATCH v3 00/17] block: local qiov helper

2019-02-11 Thread Stefan Hajnoczi
On Thu, Feb 07, 2019 at 01:24:28PM +0300, Vladimir Sementsov-Ogievskiy wrote: > v3: Will you send a v4 based on Eric's comments or do you want to keep the series as it is? Stefan signature.asc Description: PGP signature

Re: [Qemu-block] [PATCH v3 00/17] block: local qiov helper

2019-02-11 Thread Stefan Hajnoczi
On Thu, Feb 07, 2019 at 01:24:28PM +0300, Vladimir Sementsov-Ogievskiy wrote: > Hi all! > > Here is a new simple helper for a very often patter > around qemu_iovec_init_external, when we need simple qiov with only > one iov, initialized from external buffer. > > v3: > 01-02: tiny improvements,

[Qemu-block] [PATCH 4/5] block/dirty-bitmap: explicitly lock bitmaps with successors

2019-02-11 Thread John Snow
Instead of implying a locked status, make it explicit. Now, bitmaps in use by migration, NBD or backup operations are all treated the same way with the same code paths. --- block/dirty-bitmap.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/block/dirty-bitmap.c

[Qemu-block] [PATCH 2/5] block/dirty-bitmaps: rename frozen predicate helper

2019-02-11 Thread John Snow
"Frozen" was a good description a long time ago, but it isn't adequate now. Rename the frozen predicate to has_successor to make the semantics of the predicate more clear to outside callers. In the process, remove some calls to frozen() that no longer semantically make sense. For enabled and

[Qemu-block] [PATCH 3/5] block/dirty-bitmap: change semantics of enabled predicate

2019-02-11 Thread John Snow
Currently, enabled means something like "the status of the bitmap is ACTIVE." After this patch, it should mean exclusively: "This bitmap is recording guest writes, and is allowed to do so." In many places, this is how this predicate was already used. We'll allow users to call user_locked if

[Qemu-block] [PATCH 5/5] block/dirty-bitmaps: unify qmp_locked and user_locked calls

2019-02-11 Thread John Snow
These mean the same thing now. Unify them and rename the merged call bdrv_dirty_bitmap_busy to indicate semantically what we are describing, as well as help disambiguate from the various _locked and _unlocked versions of bitmap helpers that refer to mutex locks. --- block/dirty-bitmap.c

[Qemu-block] [PATCH 1/5] block/dirty-bitmap: add recording and busy properties

2019-02-11 Thread John Snow
The current API allows us to report a single status, which we've defined as: Frozen: has a successor, treated as qmp_locked, may or may not be enabled. Locked: no successor, qmp_locked. may or may not be enabled. Disabled: Not frozen or locked, disabled. Active: Not frozen, locked, or disabled.

[Qemu-block] [PATCH 0/5] dirty-bitmaps: deprecate @status field

2019-02-11 Thread John Snow
The current internal meanings of "locked", "user_locked", "qmp_locked", "frozen", "enabled", and "disabled" are all a little muddled. Deprecate the @status field in favor of two new booleans that carry very specific meanings. Then, rename and rework some of the internal semantics to help make the

Re: [Qemu-block] [PATCH 4/4] block/nbd-client: use non-blocking io channel for nbd negotiation

2019-02-11 Thread Eric Blake
On 2/11/19 6:56 AM, Vladimir Sementsov-Ogievskiy wrote: > Now negotiation is done in coroutine, so to take benefit of it let's > use non-blocking model. > > Note that QIOChannel handle synchronous io calls correctly anyway, so s/handle/handles/ > it's not a problem to send final NBD_CMD_DISC to

Re: [Qemu-block] [PATCH 3/4] nbd: do qemu_coroutine_yield during tls handshake

2019-02-11 Thread Eric Blake
On 2/11/19 6:56 AM, Vladimir Sementsov-Ogievskiy wrote: > We always call qio_channel_tls_handshake in nbd from couroutine. Take > benefit of it and just yield instead of creating personal main loop. > > Mark and rename the function and it's callers correspondingly and > trace-points too. > >

Re: [Qemu-block] [PATCH 2/4] nbd/client: do negotiation in coroutine

2019-02-11 Thread Eric Blake
On 2/11/19 6:55 AM, Vladimir Sementsov-Ogievskiy wrote: > As a first step to non-blocking negotiation, move it to coroutine. > > Signed-off-by: Vladimir Sementsov-Ogievskiy > --- > nbd/client.c | 123 +-- > 1 file changed, 109 insertions(+), 14

Re: [Qemu-block] [PATCH 1/4] io/channel: add qio_channel_get_attached_aio_context()

2019-02-11 Thread Eric Blake
On 2/11/19 6:55 AM, Vladimir Sementsov-Ogievskiy wrote: > Expose attached aio context. It will be used in nbd code, to > understand, in which aio context negotiation should be done. s/, in/ in/ > > Signed-off-by: Vladimir Sementsov-Ogievskiy > --- > include/io/channel.h | 9 + >

[Qemu-block] [PULL 4/4] qcow2: list of bitmaps new test 242

2019-02-11 Thread Eric Blake
From: Andrey Shinkevich A new test file 242 added to the qemu-iotests set. It checks the format of qcow2 specific information for the new added section that lists details of bitmaps. Signed-off-by: Andrey Shinkevich Message-Id:

[Qemu-block] [PULL 2/4] bdrv_query_image_info Error parameter added

2019-02-11 Thread Eric Blake
From: Andrey Shinkevich Inform a user in case qcow2_get_specific_info fails to obtain QCOW2 image specific information. This patch is preliminary to the one "qcow2: Add list of bitmaps to ImageInfoSpecificQCow2". Signed-off-by: Andrey Shinkevich Reviewed-by: Eric Blake Reviewed-by: Vladimir

[Qemu-block] [PULL 3/4] qcow2: Add list of bitmaps to ImageInfoSpecificQCow2

2019-02-11 Thread Eric Blake
From: Andrey Shinkevich In the 'Format specific information' section of the 'qemu-img info' command output, the supplemental information about existing QCOW2 bitmaps will be shown, such as a bitmap name, flags and granularity: image: /vz/vmprivate/VM1/harddisk.hdd file format: qcow2 virtual

[Qemu-block] [PULL 1/4] nbd/server: Kill pointless shadowed variable

2019-02-11 Thread Eric Blake
lgtm.com pointed out that commit 678ba275 introduced a shadowed declaration of local variable 'bs'; thankfully, the inner 'bs' obtained by 'blk_bs(blk)' matches the outer one given that we had 'blk_insert_bs(blk, bs, errp)' a few lines earlier, and there are no later uses of 'bs' beyond the scope

Re: [Qemu-block] [PATCH v2] block/dirty-bitmap: Documentation and Comment fixups

2019-02-11 Thread John Snow
On 2/11/19 1:25 PM, Vladimir Sementsov-Ogievskiy wrote: > 04.02.2019 22:26, John Snow wrote: >> >> >> On 2/4/19 10:00 AM, Eric Blake wrote: >>> On 2/1/19 7:10 PM, John Snow wrote: The meaning of the states has changed subtly over time, this should bring the understanding more in-line

Re: [Qemu-block] [Qemu-devel] [PATCH] blockdev: acquire aio_context for bitmap add/remove

2019-02-11 Thread John Snow
On 2/6/19 12:02 PM, John Snow wrote: > When bitmaps are persistent, they may incur a disk read or write when bitmaps > are added or removed. For configurations like virtio-dataplane, failing to > acquire this lock will abort QEMU when disk IO occurs. > > We used to acquire aio_context as part

Re: [Qemu-block] [Qemu-devel] [PATCH v3 1/2] qapi: move to QOM path for x-block-latency-histogram-set

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
11.02.2019 20:52, Kevin Wolf wrote: > Am 11.02.2019 um 18:39 hat Vladimir Sementsov-Ogievskiy geschrieben: >> 08.01.2019 16:20, Markus Armbruster wrote: >>> Vladimir Sementsov-Ogievskiy writes: >>> Move to way of device selecting, however fall back to device name if path is not found.

Re: [Qemu-block] [PATCH v3 1/2] qapi: move to QOM path for x-block-latency-histogram-set

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
11.02.2019 20:54, Kevin Wolf wrote: > Am 21.12.2018 um 17:53 hat Vladimir Sementsov-Ogievskiy geschrieben: >> Move to way of device selecting, however fall back to device name if >> path is not found. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy >> --- >> qapi/block-core.json | 4 ++-- >>

Re: [Qemu-block] [PATCH v2] block/dirty-bitmap: Documentation and Comment fixups

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
04.02.2019 22:26, John Snow wrote: > > > On 2/4/19 10:00 AM, Eric Blake wrote: >> On 2/1/19 7:10 PM, John Snow wrote: >>> The meaning of the states has changed subtly over time, >>> this should bring the understanding more in-line with the >>> current, actual usages. >>> >>> Reported-by: Eric

Re: [Qemu-block] [PATCH] block/dirty-bitmap: Documentation and Comment fixups

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
02.02.2019 4:01, John Snow wrote: > > > On 1/31/19 3:29 AM, Vladimir Sementsov-Ogievskiy wrote: >> >> About @frozen and @locked, we can also note that they can't be exported >> through NBD. >> We can summarize, that @frozen and @locked means that user can't use them in >> any >> command, and

Re: [Qemu-block] [PATCH v3 1/2] qapi: move to QOM path for x-block-latency-histogram-set

2019-02-11 Thread Kevin Wolf
Am 21.12.2018 um 17:53 hat Vladimir Sementsov-Ogievskiy geschrieben: > Move to way of device selecting, however fall back to device name if > path is not found. > > Signed-off-by: Vladimir Sementsov-Ogievskiy > --- > qapi/block-core.json | 4 ++-- > blockdev.c | 22

Re: [Qemu-block] [Qemu-devel] [PATCH v3 1/2] qapi: move to QOM path for x-block-latency-histogram-set

2019-02-11 Thread Kevin Wolf
Am 11.02.2019 um 18:39 hat Vladimir Sementsov-Ogievskiy geschrieben: > 08.01.2019 16:20, Markus Armbruster wrote: > > Vladimir Sementsov-Ogievskiy writes: > > > >> Move to way of device selecting, however fall back to device name if > >> path is not found. > >> > >> Signed-off-by: Vladimir

Re: [Qemu-block] [Qemu-devel] [PATCH v3 1/2] qapi: move to QOM path for x-block-latency-histogram-set

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
08.01.2019 16:20, Markus Armbruster wrote: > Vladimir Sementsov-Ogievskiy writes: > >> Move to way of device selecting, however fall back to device name if >> path is not found. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy >> --- >> qapi/block-core.json | 4 ++-- >> blockdev.c

Re: [Qemu-block] [PATCH RFC 1/1] Stream block job involves copy-on-read filter

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
11.02.2019 18:52, Alberto Garcia wrote: > On Mon 11 Feb 2019 03:51:33 PM CET, Vladimir Sementsov-Ogievskiy wrote: > I think this was already discussed in the previous version of this > patch: if you insert a copy-on-read filter here then all guest > reads will copy the data from the

Re: [Qemu-block] [Qemu-devel] [PATCH v2 0/2] Maintainership changes

2019-02-11 Thread Kevin Wolf
Am 11.02.2019 um 16:03 hat Vladimir Sementsov-Ogievskiy geschrieben: > Hi, is there a reason why it's not merged? > > Address jc...@redhat.com is not present anymore, at least it should be dropped > from MAINTAINERS. I don't think there is a reason, so I applied it to the block branch now.

Re: [Qemu-block] [PATCH RFC 1/1] Stream block job involves copy-on-read filter

2019-02-11 Thread Alberto Garcia
On Mon 11 Feb 2019 03:51:33 PM CET, Vladimir Sementsov-Ogievskiy wrote: I think this was already discussed in the previous version of this patch: if you insert a copy-on-read filter here then all guest reads will copy the data from the backing chain, but you don't want to copy

Re: [Qemu-block] [PATCH v4 8/9] qcow2: bdrv_co_pwritev: move encryption code out of the lock

2019-02-11 Thread Alberto Garcia
On Mon 11 Feb 2019 03:44:20 PM CET, Vladimir Sementsov-Ogievskiy wrote: > Encryption will be done in threads, to take benefit of it, we should > move it out of the lock first. > > Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Berto

Re: [Qemu-block] [Qemu-devel] [PATCH v2 0/2] Maintainership changes

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Hi, is there a reason why it's not merged? Address jc...@redhat.com is not present anymore, at least it should be dropped from MAINTAINERS. 26.09.2018 21:05, Jeff Cody wrote: > Changes from v1: > > - cc'ed Peter (meant to for v1, forgot) > - added John's 'jobs' branch to his git url >

[Qemu-block] [PATCH v4 3/9] qcow2-threads: use thread_pool_submit_co

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Use thread_pool_submit_co, instead of reinventing it here. Note, that thread_pool_submit_aio() never returns NULL, so checking it was an extra thing. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2-threads.c | 17 ++--- 1 file changed, 2

[Qemu-block] [PATCH v4 6/9] qcow2: qcow2_co_preadv: improve locking

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Background: decryption will be done in threads, to take benefit of it, we should move it out of the lock first. But let's go further: it turns out, that for locking around switch cases we have only two variants: when we just do memset(0) not releasing the lock (it is useless) and when we actually

[Qemu-block] [PATCH v4 7/9] qcow2: qcow2_co_preadv: skip using hd_qiov when possible

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
qemu_iovec_memset has @offset parameter, so using hd_qiov for it is not needed. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2.c | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index

Re: [Qemu-block] [PATCH RFC 1/1] Stream block job involves copy-on-read filter

2019-02-11 Thread Andrey Shinkevich
On 11/02/2019 17:07, Alberto Garcia wrote: > On Fri 08 Feb 2019 04:29:48 PM CET, Andrey Shinkevich wrote: >> On 08/02/2019 16:13, Alberto Garcia wrote: >>> On Wed 23 Jan 2019 12:54:24 PM CET, Andrey Shinkevich wrote: +static BlockDriverState *insert_filter(BlockDriverState *bs, Error

Re: [Qemu-block] [PATCH RFC 1/1] Stream block job involves copy-on-read filter

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
11.02.2019 17:07, Alberto Garcia wrote: > On Fri 08 Feb 2019 04:29:48 PM CET, Andrey Shinkevich wrote: >> On 08/02/2019 16:13, Alberto Garcia wrote: >>> On Wed 23 Jan 2019 12:54:24 PM CET, Andrey Shinkevich wrote: +static BlockDriverState *insert_filter(BlockDriverState *bs, Error **errp)

[Qemu-block] [PATCH v4 4/9] qcow2-threads: qcow2_co_do_compress: protect queuing by mutex

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Drop dependence on AioContext lock. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Paolo Bonzini --- Notes: v4: add r-b by Alberto and Paolo. Paolo asked to add some information to the commit message. I don't have good understanding of

[Qemu-block] [PATCH v4 5/9] qcow2-threads: split out generic path

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Move generic part out of qcow2_co_do_compress, to reuse it for encryption and rename things that would be shared with encryption path. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2.h | 4 ++-- block/qcow2-threads.c | 47

[Qemu-block] [PATCH v4 2/9] qcow2: add separate file for threaded data processing functions

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Move compression-on-threads to separate file. Encryption will be in it too. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2.h | 7 ++ block/qcow2-threads.c | 201 ++ block/qcow2.c | 169

[Qemu-block] [PATCH v4 0/9] qcow2: encryption threads

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Hi all! The series brings threads to qcow2 encryption/decryption path, like it is already done for compression. v4: add r-b's to most of patches 04: add r-b by Alberto and Paolo. Paolo asked to add some information to the commit message. I don't have good understanding of moving from

[Qemu-block] [PATCH v4 9/9] qcow2: do encryption in threads

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Do encryption/decryption in threads, like it is already done for compression. This improves asynchronous encrypted io. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2.h | 8 ++ block/qcow2-cluster.c | 7 ++--- block/qcow2-threads.c | 65

[Qemu-block] [PATCH v4 8/9] qcow2: bdrv_co_pwritev: move encryption code out of the lock

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Encryption will be done in threads, to take benefit of it, we should move it out of the lock first. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qcow2.c | 35 +-- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/block/qcow2.c

[Qemu-block] [PATCH v4 1/9] qcow2.h: add missing include

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
qcow2.h depends on block_int.h. Compilation isn't broken currently only due to block_int.h always included before qcow2.h. Though, it seems better to directly include block_int.h in qcow2.h. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia --- block/qcow2.h | 1

[Qemu-block] [PATCH 3/4] nbd: do qemu_coroutine_yield during tls handshake

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
We always call qio_channel_tls_handshake in nbd from couroutine. Take benefit of it and just yield instead of creating personal main loop. Mark and rename the function and it's callers correspondingly and trace-points too. Signed-off-by: Vladimir Sementsov-Ogievskiy --- nbd/client.c | 26

[Qemu-block] [PATCH 2/4] nbd/client: do negotiation in coroutine

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
As a first step to non-blocking negotiation, move it to coroutine. Signed-off-by: Vladimir Sementsov-Ogievskiy --- nbd/client.c | 123 +-- 1 file changed, 109 insertions(+), 14 deletions(-) diff --git a/nbd/client.c b/nbd/client.c index

[Qemu-block] [PATCH 4/4] block/nbd-client: use non-blocking io channel for nbd negotiation

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Now negotiation is done in coroutine, so to take benefit of it let's use non-blocking model. Note that QIOChannel handle synchronous io calls correctly anyway, so it's not a problem to send final NBD_CMD_DISC to non-blocking channel but using sync qio interface, even not in coroutine.

[Qemu-block] [PATCH 1/4] io/channel: add qio_channel_get_attached_aio_context()

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Expose attached aio context. It will be used in nbd code, to understand, in which aio context negotiation should be done. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/io/channel.h | 9 + io/channel.c | 5 + 2 files changed, 14 insertions(+) diff --git

[Qemu-block] [PATCH 0/4] nbd: non-blocking negotiation

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
Hi all! Here is a try of moving to non-blocking negotiation in nbd code, proposed by Deniel in https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg03817.html in thread "[PATCH v4 00/10] NBD reconnect" https://lists.gnu.org/archive/html/qemu-devel/2018-07/msg05973.html Vladimir

Re: [Qemu-block] [PULL 0/9] Block patches

2019-02-11 Thread Peter Maydell
On Mon, 11 Feb 2019 at 05:50, Stefan Hajnoczi wrote: > > The following changes since commit e47f81b617684c4546af286d307b69014a83538a: > > Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into > staging (2019-02-07 18:53:25 +) > > are available in the Git repository at:

Re: [Qemu-block] [Qemu-devel] Guest unresponsive after Virtqueue size exceeded error

2019-02-11 Thread Fernando Casas Schössow
Thanks for looking into this Stefan. I rebuilt Qemu with the new patch and got a couple of guests running with the new build. Two of them using virtio-scsi and another one using virtio-blk. Now I'm waiting for any of them to crash. I also set libvirt to include the guest memory in the qemu

Re: [Qemu-block] [RFC PATCH] coroutines: generate wrapper code

2019-02-11 Thread Vladimir Sementsov-Ogievskiy
11.02.2019 6:42, Stefan Hajnoczi wrote: > On Fri, Feb 08, 2019 at 05:11:22PM +0300, Vladimir Sementsov-Ogievskiy wrote: >> Hi all! >> >> We have a very frequent pattern of wrapping a coroutine_fn function >> to be called from non-coroutine context: >> >>- create structure to pack parameters >>