All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	shorne@gmail.com, Juan Quintela <quintela@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	Laurent Vivier <lvivier@redhat.com>, Peter Xu <peterx@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] migration: Reset rather than destroy main_thread_load_event
Date: Fri, 25 Aug 2017 16:28:26 +0100	[thread overview]
Message-ID: <CAFEAcA9kOQ-WYaDSatWKYX82FM=zGb1LJ1a0iu9C2-nu3S=o+A@mail.gmail.com> (raw)
In-Reply-To: <20170825141940.20740-2-dgilbert@redhat.com>

On 25 August 2017 at 15:19, Dr. David Alan Gilbert (git)
<dgilbert@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> migration_incoming_state_destroy doesn't really destroy, it cleans up.
> After a loadvm it's called, but the loadvm command can be run twice,
> and so destroying an init-once mutex breaks on the second loadvm.
>
> Reported-by: Stafford Horne <shorne@gmail.com>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  migration/migration.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index c3fe0ed9ca..a625551ce5 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -167,7 +167,7 @@ void migration_incoming_state_destroy(void)
>          mis->from_src_file = NULL;
>      }
>
> -    qemu_event_destroy(&mis->main_thread_load_event);
> +    qemu_event_reset(&mis->main_thread_load_event);
>  }

Is it worth doing more here? For instance:
 * rename the function to something that better reflects
   what it's doing
 * make sure it actually goes back to the state it's in
   after you first call migration_incoming_get_current()
   (eg setting mis_current.state, zeroing various fields)
 * maybe instead of a "get current state" that does a
   reset if it's not been called before and a "destroy"
   that does cleanup stuff (like telling the source we've
   stopped) and also resetting back to clean state, we
   could structure this with a function that does
   "give me a clean completely reset state" which you
   must call first, then use get_current() purely to
   get the current state with no 'reset on first call'
   semantics, and finally a "complete" function that just
   does the "tell source we've stopped" and close
   resources we no longer need  ?

PS, in migration_incoming_get_current() we do
        mis_current.state = MIGRATION_STATUS_NONE;
        memset(&mis_current, 0, sizeof(MigrationIncomingState));

and the first line there is pointless because the memset
blasts zeroes over it anyway.

thanks
-- PMM

  reply	other threads:[~2017-08-25 15:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25 14:19 [Qemu-devel] [PATCH 0/2] Fix double loadvm failure Dr. David Alan Gilbert (git)
2017-08-25 14:19 ` [Qemu-devel] [PATCH 1/2] migration: Reset rather than destroy main_thread_load_event Dr. David Alan Gilbert (git)
2017-08-25 15:28   ` Peter Maydell [this message]
2017-08-25 15:51     ` Dr. David Alan Gilbert
2017-08-28  9:01       ` Peter Xu
2017-08-26 13:55   ` Stafford Horne
2017-08-28  9:08   ` Peter Xu
2017-08-25 14:19 ` [Qemu-devel] [PATCH 2/2] snapshot/tests: Try loadvm twice Dr. David Alan Gilbert (git)
2017-08-28  9:10   ` Peter Xu
2017-09-05 11:32     ` Dr. David Alan Gilbert
2017-09-06 14:19 ` [Qemu-devel] [PATCH 0/2] Fix double loadvm failure Dr. David Alan Gilbert

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='CAFEAcA9kOQ-WYaDSatWKYX82FM=zGb1LJ1a0iu9C2-nu3S=o+A@mail.gmail.com' \
    --to=peter.maydell@linaro.org \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=shorne@gmail.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.