Message ID | 20201209072029.2338351-1-li.zhang@cloud.ionos.com |
---|---|
State | New |
Headers | show |
Series | [1/1] Avoid migration if guest is in postmigrated status | expand |
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.zhang@cloud.ionos.com> There is an existing proposal for this (the same approach) in https://lore.kernel.org/r/6b704294ad2e405781c38fb38d68c744@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.
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 <dme@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.zhang@cloud.ionos.com> > > There is an existing proposal for this (the same approach) in > https://lore.kernel.org/r/6b704294ad2e405781c38fb38d68c744@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. >
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; }
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.zhang@cloud.ionos.com> --- migration/migration.c | 5 +++++ 1 file changed, 5 insertions(+)