From: "Denis V. Lunev" <den@openvz.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
qemu-stable@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 0/5] dataplane snapshot fixes
Date: Tue, 27 Oct 2015 22:05:55 +0300 [thread overview]
Message-ID: <562FCB13.50505@openvz.org> (raw)
In-Reply-To: <562FC546.9040709@redhat.com>
On 10/27/2015 09:41 PM, Paolo Bonzini wrote:
> On 27/10/2015 15:09, Denis V. Lunev wrote:
>> The following test
>> while /bin/true ; do
>> virsh snapshot-create rhel7
>> sleep 10
>> virsh snapshot-delete rhel7 --current
>> done
>> with enabled iothreads on a running VM leads to a lot of troubles: hangs,
>> asserts, errors.
>>
>> Though (in general) HMP snapshot code is terrible. I think it should be
>> dropped at once and replaced with blkdev transactions code. Though is
>> could not fit to QEMU 2.5/stable at all.
>>
>> Anyway, I think that the construction like
>> assert(aio_context_is_locked(aio_context));
>> should be widely used to ensure proper locking.
>>
>> Changes from v1:
>> - aio-context locking added
>> - comment is rewritten
>>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> CC: Stefan Hajnoczi <stefanha@redhat.com>
>> CC: Paolo Bonzini <pbonzini@redhat.com>
> For patches 4-5:
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
>
> For patches 1-3 I'm not sure, because we will remove RFifoLock
> relatively soon and regular pthread recursive mutexes do not have an
> equivalent of rfifolock_is_locked.
>
> Paolo
This does not break any future.
Yes, FifoLock will go away, but aio_context_is_locked will
survive like it stays in the kernel code. We can either have
plain pthread_mutex_try_lock/unlock at first or we can
have additional stubs for linux with checks like this
(gdb) p *(pthread_mutex_t*)0x6015a0
$3 = {
__data = {
__lock = 2,
__count = 0,
__owner = 12276, <== LWP12276 is Thread 3
__nusers = 1,
__kind = 0, <== non-recursive
__spins = 0,
__list = {
__prev = 0x0,
__next = 0x0
}
},
__size = "\002\000\000\000\000\000\000\000\364/\000\000\001",'\000' <repeats26 times>,
__align = 2
}
in debug mode. Yes, they relays on internal representation,
but they are useful.
This assert was VERY useful for me. I presume that there are
a LOT of similar places in the code with different functions
where aio_context lock was not acquired and there was no
way to ensure consistency.
Den
next prev parent reply other threads:[~2015-10-27 19:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-27 14:09 [Qemu-devel] [PATCH v2 0/5] dataplane snapshot fixes Denis V. Lunev
2015-10-27 14:09 ` [Qemu-devel] [PATCH 1/5] fifolock: create rfifolock_is_locked helper Denis V. Lunev
2015-10-27 14:09 ` [Qemu-devel] [PATCH 2/5] aio_context: create aio_context_is_locked helper Denis V. Lunev
2015-10-27 14:09 ` [Qemu-devel] [PATCH 3/5] io: add locking constraints check into bdrv_drain to ensure locking Denis V. Lunev
2015-10-27 14:09 ` [Qemu-devel] [PATCH 4/5] migration: add missed aio_context_acquire into hmp_savevm/hmp_delvm Denis V. Lunev
2015-10-27 18:12 ` Paolo Bonzini
2015-10-27 18:23 ` Denis V. Lunev
2015-10-28 10:11 ` Juan Quintela
2015-10-28 10:38 ` Denis V. Lunev
2015-10-27 14:09 ` [Qemu-devel] [PATCH 5/5] virtio: sync the dataplane vring state to the virtqueue before virtio_save Denis V. Lunev
2015-10-27 18:41 ` [Qemu-devel] [PATCH v2 0/5] dataplane snapshot fixes Paolo Bonzini
2015-10-27 19:05 ` Denis V. Lunev [this message]
2015-10-27 23:22 ` Denis V. Lunev
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=562FCB13.50505@openvz.org \
--to=den@openvz.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@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 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.