[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] do not call monitor_resume() from migrate_fd_pu
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [PATCH] do not call monitor_resume() from migrate_fd_put_buffer() error path |
Date: |
Thu, 4 Aug 2011 16:24:41 -0300 |
On Wed, 3 Aug 2011 18:51:44 +0400
Michael Tokarev <address@hidden> wrote:
> If we do, it results in double monitor_resume() (second being called
> from migrate_fd_cleanup() anyway) and monitor suspend count becoming
> negative.
Are you hitting an specific issue or did you find this by code inspection?
IIRC, I asked Marcelo to add the monitor_resume() call in the fix for
e447b1a603 because the monitor wasn't being resumed in some cases. Don't
remember which though, do you Marcelo?
I see two possibilities here:
1. After e447b1a603 there was some change that made the monitor_resume() call
in migrate_fd_put_buffer() unnecessary
2. We're calling it in the wrong place
Taking a quick look at the code I see that migrate_fd_cleanup() doesn't
seem to be called when qemu_savevm_state_iterate() fails, for example.
>
> Signed-Off-By: Michael Tokarev <address@hidden>
> Reviewed-By: Jan Kiszka <address@hidden>
> ---
> migration.c | 3 ---
> 1 files changed, 0 insertions(+), 3 deletions(-)
>
> diff --git a/migration.c b/migration.c
> index 2a15b98..7ca883f 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -330,9 +330,6 @@ ssize_t migrate_fd_put_buffer(void *opaque, const void
> *data, size_t size)
> if (ret == -EAGAIN) {
> qemu_set_fd_handler2(s->fd, NULL, NULL, migrate_fd_put_notify, s);
> } else if (ret < 0) {
> - if (s->mon) {
> - monitor_resume(s->mon);
> - }
> s->state = MIG_STATE_ERROR;
> notifier_list_notify(&migration_state_notifiers, NULL);
> }