[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous progr
From: |
Aneesh Kumar K.V |
Subject: |
Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming |
Date: |
Wed, 27 Jul 2011 17:04:03 +0530 |
User-agent: |
Notmuch/0.5-318-g52e4ded (http://notmuchmail.org) Emacs/23.2.1 (x86_64-pc-linux-gnu) |
On Wed, 27 Jul 2011 15:15:20 +0530, "Aneesh Kumar K.V" <address@hidden> wrote:
> On Tue, 26 Jul 2011 10:21:12 +0100, Stefan Hajnoczi <address@hidden> 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
- [Qemu-devel] [PATCH v8 1/5] coroutine: add gthread dependency, (continued)
- [Qemu-devel] [PATCH v8 1/5] coroutine: add gthread dependency, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 5/5] coroutine: add test-coroutine --benchmark-lifecycle, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 3/5] coroutine: add ucontext and win32 implementations, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 2/5] coroutine: introduce coroutines API, Stefan Hajnoczi, 2011/07/26
- [Qemu-devel] [PATCH v8 4/5] coroutine: add test-coroutine automated tests, Stefan Hajnoczi, 2011/07/26
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/07/26
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Aneesh Kumar K.V, 2011/07/27
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming,
Aneesh Kumar K.V <=
- Re: [Qemu-devel] [PATCH v8 0/5] Coroutines for better asynchronous programming, Stefan Hajnoczi, 2011/07/29