[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unl
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed |
Date: |
Tue, 16 Sep 2014 14:10:39 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
Il 16/09/2014 14:02, Alexey Kardashevskiy ha scritto:
> I am having problems when migrate a guest via libvirt like this:
>
> virsh migrate --live --persistent --undefinesource --copy-storage-all
> --verbose --desturi qemu+ssh://legkvm/system --domain chig1
>
> The XML used to create the guest is at the end of this mail.
>
> I see NBD FLUSH command after the destination QEMU received EOF for
> migration stream and this produces a crash in qcow2_co_flush_to_os() as
> s->lock is false or s->l2_table_cache is NULL.
>
Max, Kevin, could the fix be something like this?
diff --git a/block/qcow2.c b/block/qcow2.c
index 0daf25c..e7459ea 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1442,6 +1442,7 @@ static void qcow2_invalidate_cache(BlockDriverState *bs,
Error **errp)
memcpy(&aes_decrypt_key, &s->aes_decrypt_key, sizeof(aes_decrypt_key));
}
+ qemu_co_mutex_lock(&s->lock);
qcow2_close(bs);
bdrv_invalidate_cache(bs->file, &local_err);
@@ -1455,6 +1456,7 @@ static void qcow2_invalidate_cache(BlockDriverState *bs,
Error **errp)
ret = qcow2_open(bs, options, flags, &local_err);
QDECREF(options);
+ qemu_co_mutex_unlock(&s->lock);
if (local_err) {
error_setg(errp, "Could not reopen qcow2 layer: %s",
error_get_pretty(local_err));
On top of this, *_invalidate_cache needs to be marked as coroutine_fn.
Paolo
- [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Alexey Kardashevskiy, 2014/09/15
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Alexey Kardashevskiy, 2014/09/16
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed,
Paolo Bonzini <=
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Kevin Wolf, 2014/09/16
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Paolo Bonzini, 2014/09/16
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Kevin Wolf, 2014/09/16
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Paolo Bonzini, 2014/09/16
- Re: [Qemu-devel] migration: qemu-coroutine-lock.c:141: qemu_co_mutex_unlock: Assertion `mutex->locked == 1' failed, Kevin Wolf, 2014/09/19
- [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation, Alexey Kardashevskiy, 2014/09/23
- Re: [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation, Alexey Kardashevskiy, 2014/09/24
- Re: [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation, Kevin Wolf, 2014/09/24
- Re: [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation, Alexey Kardashevskiy, 2014/09/25
- Re: [Qemu-devel] [RFC PATCH] qcow2: Fix race in cache invalidation, Kevin Wolf, 2014/09/25