From: Stefan Hajnoczi <stefanha@gmail.com>
To: Ming Lei <ming.lei@canonical.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v6 1/3] linux-aio: fix submit aio as a batch
Date: Tue, 25 Nov 2014 16:18:56 +0000 [thread overview]
Message-ID: <20141125161856.GA22421@stefanha-thinkpad.redhat.com> (raw)
In-Reply-To: <CACVXFVO-o2ybgpKWhMXKh_Q7zcrV3+fYXtzZ1ME2g2UPpkrJDQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1813 bytes --]
On Tue, Nov 25, 2014 at 10:45:05PM +0800, Ming Lei wrote:
> On Tue, Nov 25, 2014 at 9:08 PM, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > On Tue, Nov 25, 2014 at 03:23:11PM +0800, Ming Lei wrote:
> >> @@ -296,12 +370,14 @@ void laio_detach_aio_context(void *s_, AioContext *old_context)
> >>
> >> aio_set_event_notifier(old_context, &s->e, NULL);
> >> qemu_bh_delete(s->completion_bh);
> >> + qemu_bh_delete(s->io_q.abort_bh);
> >> }
> >>
> >> void laio_attach_aio_context(void *s_, AioContext *new_context)
> >> {
> >> struct qemu_laio_state *s = s_;
> >>
> >> + s->io_q.abort_bh = aio_bh_new(new_context, ioq_abort_bh, s);
> >> s->completion_bh = aio_bh_new(new_context, qemu_laio_completion_bh, s);
> >> aio_set_event_notifier(new_context, &s->e, qemu_laio_completion_cb);
> >> }
> >
> > These functions are incomplete when ->aborting == true. I can't think
>
> Could you explain in a bit when ->aborting is true during attach callback?
>
> > of a reason why we are guaranteed never to hit that state, and fixing it
> > is easy. Just add the following to the end of
> > laio_attach_aio_context():
> >
> > if (s->aborting) {
> > qemu_bh_schedule(s->io_q.abort_bh);
> > }
>
> You mean the abort BH may not have chance to run before its deletion
> in the detach callback?
Exactly. Any time you schedule a BH you need to be aware of things that
may happen before the BH is invoked.
> If so, bdrv_drain_all() from bdrv_set_aio_context() should have
> handled the pending BH, right?
I'm not sure if it's good to make subtle assumptions like that. If the
code changes they will break.
Since it is very easy to protect against this case (the code I posted
before), it seems worthwhile to be on the safe side.
Stefan
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2014-11-25 16:19 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-25 7:23 [Qemu-devel] [PATCH v6 0/3] linux-aio: fix batch submission Ming Lei
2014-11-25 7:23 ` [Qemu-devel] [PATCH v6 1/3] linux-aio: fix submit aio as a batch Ming Lei
2014-11-25 13:08 ` Stefan Hajnoczi
2014-11-25 14:45 ` Ming Lei
2014-11-25 16:18 ` Stefan Hajnoczi [this message]
2014-11-26 9:15 ` Ming Lei
2014-11-27 16:56 ` Stefan Hajnoczi
2014-11-27 16:58 ` Paolo Bonzini
2014-11-28 3:01 ` Ming Lei
2014-11-26 11:18 ` Kevin Wolf
2014-11-28 2:16 ` Ming Lei
2014-11-26 14:48 ` Kevin Wolf
2014-11-25 7:23 ` [Qemu-devel] [PATCH v6 2/3] linux-aio: handling -EAGAIN for !s->io_q.plugged case Ming Lei
2014-11-25 13:14 ` Stefan Hajnoczi
2014-11-26 11:27 ` Kevin Wolf
2014-11-28 2:27 ` Ming Lei
2014-11-28 11:26 ` Kevin Wolf
2014-11-25 7:23 ` [Qemu-devel] [PATCH v6 3/3] linux-aio: remove 'node' from 'struct qemu_laiocb' Ming Lei
2014-11-25 13:14 ` Stefan Hajnoczi
2014-11-26 11:28 ` Kevin Wolf
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=20141125161856.GA22421@stefanha-thinkpad.redhat.com \
--to=stefanha@gmail.com \
--cc=kwolf@redhat.com \
--cc=ming.lei@canonical.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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).