From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:54641) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QhlVV-0000Xd-7L for qemu-devel@nongnu.org; Fri, 15 Jul 2011 12:44:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QhlVT-0005tu-LD for qemu-devel@nongnu.org; Fri, 15 Jul 2011 12:44:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3887) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QhlVT-0005tg-51 for qemu-devel@nongnu.org; Fri, 15 Jul 2011 12:44:51 -0400 From: Kevin Wolf Date: Fri, 15 Jul 2011 18:47:30 +0200 Message-Id: <1310748459-2119-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [RFC][PATCH 0/9] Use coroutines in the block layer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@gmail.com Based on Stefan's latest coroutine patches. This series makes qcow and qcow2 take advantage of the new coroutine infrastructure. Both formats used synchronous operations for accessing their metadata and blocked the guest CPU during that time. With coroutines, the I/O will happen asynchronously in the background and the CPU won't be blocked any more. Kevin Wolf (9): block: Add bdrv_co_readv/writev block: Emulate AIO functions with bdrv_co_readv/writev block: Add bdrv_co_readv/writev emulation coroutines: Locks qcow2: Use coroutines qcow: Use coroutines async: Remove AsyncContext coroutines: Use one global bottom half for CoQueue block: Use bdrv_co_* instead of synchronous versions in coroutines Makefile.objs | 4 +- async.c | 98 ++----------------- block.c | 271 ++++++++++++++++++++++++++++++++++++++++++++++-- block.h | 5 + block/qcow.c | 180 +++++++++++--------------------- block/qcow2-cluster.c | 26 ++--- block/qcow2.c | 240 ++++++++++++++++---------------------------- block/qcow2.h | 5 +- block/qed-table.c | 14 --- block/qed.c | 4 - block_int.h | 6 + linux-aio.c | 24 +---- posix-aio-compat.c | 11 -- qemu-common.h | 4 - qemu-coroutine-int.h | 1 + qemu-coroutine-lock.c | 117 +++++++++++++++++++++ qemu-coroutine.h | 62 +++++++++++ trace-events | 11 ++ 18 files changed, 636 insertions(+), 447 deletions(-) create mode 100644 qemu-coroutine-lock.c -- 1.7.6