All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Max Reitz <mreitz@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed
Date: Fri, 19 Sep 2014 18:23:04 +1000	[thread overview]
Message-ID: <541BE7E8.5060504@ozlabs.ru> (raw)
In-Reply-To: <541AAC64.4020006@redhat.com>

On 09/18/2014 07:56 PM, Paolo Bonzini wrote:
> Il 18/09/2014 05:26, Alexey Kardashevskiy ha scritto:
>> On 09/18/2014 01:07 AM, Stefan Hajnoczi wrote:
>>> On Wed, Sep 17, 2014 at 2:44 PM, Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
>>>> On 09/17/2014 07:25 PM, Paolo Bonzini wrote:
>>>> btw any better idea of a hack to try? Testers are pushing me - they want to
>>>> upgrade the broken setup and I am blocking them :) Thanks!
>>>
>>> Paolo's qemu_co_mutex_lock(&s->lock) idea in qcow2_invalidate_cache()
>>> is good.  Have you tried that patch?
>>
>>
>> Yes, did not help.
>>
>>>
>>> I haven't checked the qcow2 code whether that works properly across
>>> bdrv_close() (is the lock freed?) but in principle that's how you
>>> protect against concurrent I/O.
>>
>> I thought we have to avoid qemu_coroutine_yield() in this particular case.
>> I fail to see how the locks may help if we still do yeild. But the whole
>> thing is already way behind of my understanding :) For example - how many
>> BlockDriverState things are layered here? NBD -> QCOW2 -> RAW?
> 
> No, this is an NBD server.  So we have three users of the same QCOW2
> image: migration, NBD server and virtio disk (not active while the bug
> happens, and thus not depicted):
> 
> 
>               NBD server   ->    QCOW2     <-     migration
>                                    |
>                                    v
>                                  File
> 
> The problem is that the NBD server accesses the QCOW2 image while
> migration does qcow2_invalidate_cache.


Ufff. Cool. Anyway, the qemu_co_mutex_lock(&s->lock) hack does not work as
after qcow2_close() the lock is cleared and qemu_co_mutex_unlock(&s->lock)
fails. Moving the lock to BlockDriverState caused weird side effects,
debugging...



-- 
Alexey

  reply	other threads:[~2014-09-19  8:23 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-15 10:50 [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed Alexey Kardashevskiy
2014-09-16 12:02 ` Alexey Kardashevskiy
2014-09-16 12:10   ` Paolo Bonzini
2014-09-16 12:34     ` Kevin Wolf
2014-09-16 12:35       ` Paolo Bonzini
2014-09-16 12:52         ` Kevin Wolf
2014-09-16 12:59           ` Paolo Bonzini
2014-09-19  8:47             ` Kevin Wolf
2014-09-23  8:47               ` [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation Alexey Kardashevskiy
2014-09-24  7:30                 ` Alexey Kardashevskiy
2014-09-24  9:48                 ` Kevin Wolf
2014-09-25  8:41                   ` Alexey Kardashevskiy
2014-09-25  8:57                     ` Kevin Wolf
2014-09-25  9:55                       ` Alexey Kardashevskiy
2014-09-25 10:20                         ` Kevin Wolf
2014-09-25 12:29                           ` Alexey Kardashevskiy
2014-09-25 12:39                             ` Kevin Wolf
2014-09-25 14:05                               ` Alexey Kardashevskiy
2014-09-28 11:14                                 ` Alexey Kardashevskiy
2014-09-17  6:46       ` [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed Alexey Kardashevskiy
2014-09-16 14:52     ` Alexey Kardashevskiy
2014-09-17  9:06     ` Stefan Hajnoczi
2014-09-17  9:25       ` Paolo Bonzini
2014-09-17 13:44         ` Alexey Kardashevskiy
2014-09-17 15:07           ` Stefan Hajnoczi
2014-09-18  3:26             ` Alexey Kardashevskiy
2014-09-18  9:56               ` Paolo Bonzini
2014-09-19  8:23                 ` Alexey Kardashevskiy [this message]
2014-09-17 15:04         ` Stefan Hajnoczi
2014-09-17 15:17           ` Eric Blake
2014-09-17 15:53           ` Paolo Bonzini

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=541BE7E8.5060504@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --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 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.