From: Kevin Wolf <kwolf@redhat.com>
To: Peter Lieven <pl@dlh.net>
Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org,
Christoph Hellwig <hch@lst.de>
Subject: Re: [Qemu-devel] Qemu-KVM 0.12.3 and Multipath -> Assertion
Date: Tue, 04 May 2010 14:20:48 +0200 [thread overview]
Message-ID: <4BE01120.30608@redhat.com> (raw)
In-Reply-To: <4BE00750.6040804@dlh.net>
Am 04.05.2010 13:38, schrieb Peter Lieven:
> hi kevin,
>
> i set a breakpint at bmdma_active_if. the first 2 breaks encountered
> when the last path in the multipath
> failed, but the assertion was not true.
> when i kicked one path back in the breakpoint was reached again, this
> time leading to an assert.
> the stacktrace is from the point shortly before.
>
> hope this helps.
Hm, looks like there's something wrong with cancelling requests -
bdrv_aio_cancel might decide that it completes a request (and
consequently calls the callback for it) whereas the IDE emulation
decides that it's done with the request before calling bdrv_aio_cancel.
I haven't looked in much detail what this could break, but does
something like this help?
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 0757528..3cd55e3 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -2838,10 +2838,6 @@ static void ide_dma_restart(IDEState *s, int is_read)
void ide_dma_cancel(BMDMAState *bm)
{
if (bm->status & BM_STATUS_DMAING) {
- bm->status &= ~BM_STATUS_DMAING;
- /* cancel DMA request */
- bm->unit = -1;
- bm->dma_cb = NULL;
if (bm->aiocb) {
#ifdef DEBUG_AIO
printf("aio_cancel\n");
@@ -2849,6 +2845,10 @@ void ide_dma_cancel(BMDMAState *bm)
bdrv_aio_cancel(bm->aiocb);
bm->aiocb = NULL;
}
+ bm->status &= ~BM_STATUS_DMAING;
+ /* cancel DMA request */
+ bm->unit = -1;
+ bm->dma_cb = NULL;
}
}
Kevin
next prev parent reply other threads:[~2010-05-04 12:21 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-03 21:26 Qemu-KVM 0.12.3 and Multipath -> Assertion Peter Lieven
2010-05-04 5:38 ` André Weidemann
2010-05-04 8:35 ` [Qemu-devel] " Kevin Wolf
2010-05-04 11:38 ` Peter Lieven
2010-05-04 12:20 ` Kevin Wolf [this message]
2010-05-04 13:42 ` Peter Lieven
2010-05-04 14:01 ` Kevin Wolf
2010-05-04 17:07 ` Christoph Hellwig
2010-05-18 11:13 ` Peter Lieven
2010-05-18 12:14 ` Kevin Wolf
2010-05-12 14:01 ` qemu-kvm hangs if multipath device is queing (was: Re: [Qemu-devel] Qemu-KVM 0.12.3 and Multipath -> Assertion) Peter Lieven
2010-05-14 9:26 ` qemu-kvm hangs if multipath device is queing Kevin Wolf
2010-05-18 11:10 ` Peter Lieven
2010-05-18 13:22 ` Kevin Wolf
2010-05-19 7:29 ` Christoph Hellwig
2010-05-19 7:48 ` Kevin Wolf
2010-05-19 8:18 ` Peter Lieven
2010-05-23 10:30 ` [Qemu-devel] " Peter Lieven
2010-05-08 9:53 ` [Qemu-devel] Qemu-KVM 0.12.3 and Multipath -> Assertion André Weidemann
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=4BE01120.30608@redhat.com \
--to=kwolf@redhat.com \
--cc=hch@lst.de \
--cc=kvm@vger.kernel.org \
--cc=pl@dlh.net \
--cc=qemu-devel@nongnu.org \
/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.