From: Avi Kivity <avi@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: stefanha@gmail.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 00/10] block: Coroutine support
Date: Tue, 02 Aug 2011 17:59:41 +0300 [thread overview]
Message-ID: <4E3810DD.1020803@redhat.com> (raw)
In-Reply-To: <4E380E9B.5090600@redhat.com>
On 08/02/2011 05:50 PM, Kevin Wolf wrote:
> Am 02.08.2011 16:23, schrieb Avi Kivity:
> > On 07/26/2011 02:48 PM, Kevin Wolf wrote:
> >> Depends 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.
> >>
> >
> > Do you plan to convert qcow2 to a fully synchronous design?
> >
> > IMO that will make it more maintainable. Cancellation will need some
> > thought, though.
>
> After this patch series, all interesting paths are free of callbacks (I
> assume this is what you mean by synchronous?).
That's what I meant. I just didn't review thoroughly - I saw some _cb
suffixes and made incorrect assumptions.
> The only thing I can see
> that is left is qcow2_aio_flush. What is required are some cleanups that
> eliminate things that still look like AIO code, and yes, that's
> something that I want to have.
Ok, great.
> Frediano has posted some patches which I haven't fully reviewed yet, but
> the qcow1 RFC he posted was definitely a step in the right direction.
>
> Regarding cancellation, I don't know any driver that really does what
> it's supposed to do. There are basically two ways of implementing it in
> current code: Either by completing the request instead of cancelling, or
> it's broken. I'd suggest that we implement waiting for completion as a
> generic function in the block layer and be done with it (actually this
> is what happens with bdrv_aio_co_cancel_em, it just could be a bit finer
> grained).
Usually completing is fine, but sometimes it cannot be made to work
(networked or fabriced disk with no timeout or timeout greater than the
device we're emulating).
However, there's no kernel interface for cancellation (it will usually
be TASK_UNINTERRUPTIBLE) except for linux-aio. So I guess we can
implement it only there.
--
error compiling committee.c: too many arguments to function
prev parent reply other threads:[~2011-08-02 14:59 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-26 11:48 [Qemu-devel] [PATCH 00/10] block: Coroutine support Kevin Wolf
2011-07-26 11:48 ` [Qemu-devel] [PATCH 01/10] block: Add bdrv_co_readv/writev Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 02/10] block: Emulate AIO functions with bdrv_co_readv/writev Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 03/10] block: Add bdrv_co_readv/writev emulation Kevin Wolf
2011-08-02 12:12 ` Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 04/10] coroutines: Locks Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 05/10] qcow2: Use coroutines Kevin Wolf
2011-07-29 13:20 ` Stefan Hajnoczi
2011-07-26 11:49 ` [Qemu-devel] [PATCH 06/10] qcow: " Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 07/10] async: Remove AsyncContext Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 08/10] coroutines: Use one global bottom half for CoQueue Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 09/10] posix-aio-compat: Allow read after EOF Kevin Wolf
2011-07-26 13:55 ` Frediano Ziglio
2011-07-26 14:22 ` Kevin Wolf
2011-07-26 11:49 ` [Qemu-devel] [PATCH 10/10] block: Use bdrv_co_* instead of synchronous versions in coroutines Kevin Wolf
2011-08-02 13:56 ` [Qemu-devel] [PATCH v2 " Kevin Wolf
2011-08-01 9:59 ` [Qemu-devel] [PATCH 00/10] block: Coroutine support Stefan Hajnoczi
2011-08-02 14:23 ` Avi Kivity
2011-08-02 14:50 ` Kevin Wolf
2011-08-02 14:55 ` Frediano Ziglio
2011-08-02 15:14 ` Kevin Wolf
2011-08-02 14:58 ` Anthony Liguori
2011-08-02 14:59 ` Avi Kivity [this message]
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=4E3810DD.1020803@redhat.com \
--to=avi@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.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).