All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.