From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Blue Swirl <blauwirbel@gmail.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming
Date: Wed, 27 Jul 2011 17:04:03 +0530 [thread overview]
Message-ID: <87wrf43ql0.fsf@skywalker.in.ibm.com> (raw)
In-Reply-To: <8739hs5a6n.fsf@skywalker.in.ibm.com>
On Wed, 27 Jul 2011 15:15:20 +0530, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> wrote:
> On Tue, 26 Jul 2011 10:21:12 +0100, Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> wrote:
> > QEMU is event-driven and suffers when blocking operations are performed because
> > VM execution may be stopped until the operation completes. Therefore many
> > operations that could block are performed asynchronously and a callback is
> > invoked when the operation has completed. This allows QEMU to continue
> > executing while the operation is pending.
> >
> > The downside to callbacks is that they split up code into many smaller
> > functions, each of which is a single step in a state machine that quickly
> > becomes complex and hard to understand. Callback functions also result in lots
> > of noise as variables are packed and unpacked into temporary structs that pass
> > state to the callback function.
> >
> > This patch series introduces coroutines as a solution for writing asynchronous
> > code while still having a nice sequential control flow. The semantics are
> > explained in the second patch. The fourth patch adds automated tests.
> >
> > A nice feature of coroutines is that it is relatively easy to take synchronous
> > code and lift it into a coroutine to make it asynchronous. Work has been done
> > to move qcow2 request processing into coroutines and thereby make it
> > asynchronous (today qcow2 will perform synchronous metadata accesses). This
> > qcow2 work is still ongoing and not quite ready for mainline yet.
> >
> > v8:
> > * Bisectability: introduce gthread implementation before ucontext/fibers
>
> Can we also get CoMutex and CoQueue patches also merged. I use them in
> the VirtFS series.
>
> http://repo.or.cz/w/qemu/kevin.git/shortlog/refs/heads/coroutine-devel
> http://repo.or.cz/w/qemu/v9fs.git/commit/318ef0b9b01cd296f8c30d8288139b9bed859892
>
I have pushed VirtFS related changes to
git://repo.or.cz/qemu/v9fs.git for-upstream-1
Once the co-routine patches are merged I can send a proper pull request.
There are more changes pending for VirtFS. We will push them in batches.
The following changes since commit c729e893aba79680bf410a2b9c671fb9e2c2c1a4:
coroutine: add test-coroutine --benchmark-lifecycle (2011-07-27 16:30:26 +0530)
are available in the git repository at:
git://repo.or.cz/qemu/v9fs.git for-upstream-1
Aneesh Kumar K.V (32):
hw/9pfs: Add yield support for readdir related coroutines
hw/9pfs: Update v9fs_readdir to use coroutines
hw/9pfs: Add yield support to statfs coroutine
hw/9pfs: Update v9fs_statfs to use coroutines
hw/9pfs: Add yield support to lstat coroutine
hw/9pfs: Update v9fs_getattr to use coroutines
hw/9pfs: Add yield support to setattr related coroutines
hw/9pfs: Update v9fs_setattr to use coroutines
hw/9pfs: Add yield support to xattr related coroutine
hw/9pfs: Update v9fs_xattrwalk to coroutines
hw/9pfs: Update v9fs_xattrcreate to use coroutines
hw/9pfs: Add yield support to mknod coroutine
hw/9pfs: Update v9fs_mknod to use coroutines
hw/9pfs: Add yeild support to rename coroutine
hw/9pfs: Update vfs_rename to use coroutines
hw/9pfs: Add yeild support for fstat coroutine
hw/9pfs: Update v9fs_lock to use coroutines
hw/9pfs: Update v9fs_getlock to use coroutines
hw/9pfs: Add yield support for open and opendir coroutine
hw/9pfs: Update v9fs_open to use coroutines
hw/9pfs: Update v9fs_stat to use coroutines
hw/9pfs: Update v9fs_walk to use coroutines
hw/9pfs: Add yeild support for clunk related coroutine
hw/9pfs: Update v9fs_clunk to use coroutines
hw/9pfs: Add yield support for fsync coroutine
hw/9pfs: Update v9fs_fsync to use coroutines
hw/9pfs: Add yield support for pwritev coroutine
hw/9pfs: Update v9fs_write to use coroutines
hw/9pfs: Update v9fs_wstat to use coroutines
hw/9pfs: Update v9fs_attach to use coroutines
hw/9pfs: Add yield support for preadv coroutine
hw/9pfs: Update v9fs_read to use coroutines
Harsh Prateek Bora (1):
use readdir_r instead of readdir for reentrancy
Venkateswararao Jujjuri (JV) (20):
[virtio-9p] Add infrastructure to support glib threads and coroutines.
[virtio-9p] Change all pdu handlers to coroutines.
[virtio-9p] Remove post functions for v9fs_readlink.
[virtio-9p] clean up v9fs_readlink.
[virtio-9p] coroutines for readlink
[virtio-9p] Remove post functions for v9fs_mkdir.
[virtio-9p] clean up v9fs_mkdir.
[virtio-9p] coroutine and threading for mkdir
[virtio-9p] Remove post functions for v9fs_remove
[virtio-9p] clean up v9fs_remove.
[virtio-9p] coroutine and threading for remove/unlink
[virtio-9p] Remove post functions for v9fs_lcreate
[virtio-9p] clean up v9fs_lcreate
[virtio-9p] coroutine and threading for open2
[virtio-9p] Remove post functions for v9fs_create
[virtio-9p] clean up v9fs_create Rearrange the code
[virtio-9p] Remove post functions for v9fs_symlink
[virtio-9p] clean up v9fs_symlink
[virtio-9p] coroutine and threading for v9fs_do_symlink
[virtio-9p] coroutine and threading for v9fs_do_link
Makefile.objs | 3 +
fsdev/file-op-9p.h | 2 +-
hw/9pfs/codir.c | 117 ++
hw/9pfs/cofile.c | 163 +++
hw/9pfs/cofs.c | 191 +++
hw/9pfs/coxattr.c | 84 ++
hw/9pfs/virtio-9p-coth.c | 102 ++
hw/9pfs/virtio-9p-coth.h | 96 ++
hw/9pfs/virtio-9p-device.c | 7 +-
hw/9pfs/virtio-9p-local.c | 7 +-
hw/9pfs/virtio-9p.c | 3052 ++++++++++++++++----------------------------
hw/9pfs/virtio-9p.h | 155 +---
12 files changed, 1840 insertions(+), 2139 deletions(-)
create mode 100644 hw/9pfs/codir.c
create mode 100644 hw/9pfs/cofile.c
create mode 100644 hw/9pfs/cofs.c
create mode 100644 hw/9pfs/coxattr.c
create mode 100644 hw/9pfs/virtio-9p-coth.c
create mode 100644 hw/9pfs/virtio-9p-coth.h
next prev parent reply other threads:[~2011-07-27 11:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-26 9:21 [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming Stefan Hajnoczi
2011-07-26 9:21 ` [Qemu-devel] [PATCH v8 1/5] coroutine: add gthread dependency Stefan Hajnoczi
2011-07-26 9:21 ` [Qemu-devel] [PATCH v8 2/5] coroutine: introduce coroutines API Stefan Hajnoczi
2011-07-26 9:21 ` [Qemu-devel] [PATCH v8 3/5] coroutine: add ucontext and win32 implementations Stefan Hajnoczi
2011-07-26 9:21 ` [Qemu-devel] [PATCH v8 4/5] coroutine: add test-coroutine automated tests Stefan Hajnoczi
2011-08-02 13:43 ` Kevin Wolf
2011-07-26 9:21 ` [Qemu-devel] [PATCH v8 5/5] coroutine: add test-coroutine --benchmark-lifecycle Stefan Hajnoczi
2011-07-26 9:23 ` [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming Stefan Hajnoczi
2011-07-27 9:45 ` Aneesh Kumar K.V
2011-07-27 10:03 ` Kevin Wolf
2011-07-27 11:39 ` Aneesh Kumar K.V
2011-07-27 12:14 ` Kevin Wolf
2011-07-27 11:34 ` Aneesh Kumar K.V [this message]
2011-07-29 12:54 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wrf43ql0.fsf@skywalker.in.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=blauwirbel@gmail.com \
--cc=jvrao@linux.vnet.ibm.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).