qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

  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).