Thanks for telling me that. I didn't notice this patch.
I just caught this error when I used it and read the source code, it should
be fixed.

Thanks
Li

On Wed, Dec 9, 2020 at 5:23 PM David Edmondson <d...@dme.org> wrote:

> On Wednesday, 2020-12-09 at 07:20:29 GMT, Li Zhang wrote:
>
> > This patch is to avoid executing migrations twice, which causes
> > coredump. After the migration has been completed, guest is in
> postmigrated
> > status on source host and the block device is inactive. If executing
> > migration again, it will cause coredump and a block error. For exmaple,
> > executing #migrate "exec:cat>file" twice on source host, block error:
> > bdrv_inactivate_recurse: Assertion `!(bs->open_flags & BDRV_O_INACTIVE)'
> failed
> >
> > Signed-off-by: Li Zhang <li.zh...@cloud.ionos.com>
>
> There is an existing proposal for this (the same approach) in
> https://lore.kernel.org/r/6b704294ad2e405781c38fb38d68c...@h3c.com.
>
> > ---
> >  migration/migration.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/migration/migration.c b/migration/migration.c
> > index 87a9b59f83..113f7e1e41 100644
> > --- a/migration/migration.c
> > +++ b/migration/migration.c
> > @@ -2115,6 +2115,11 @@ static bool migrate_prepare(MigrationState *s,
> bool blk, bool blk_inc,
> >          return false;
> >      }
> >
> > +    if (runstate_check(RUN_STATE_POSTMIGRATE)) {
> > +        error_setg(errp, "Unable to migrate, guest has been migrated");
> > +        return false;
> > +    }
> > +
> >      if (migration_is_blocked(errp)) {
> >          return false;
> >      }
> > --
> > 2.18.4
>
> dme.
> --
> Ah, oh your hair is beautiful.
>

Reply via email to