Message ID | 1599965256-72150-2-git-send-email-zhengchuan@huawei.com |
---|---|
State | Superseded |
Headers | show |
Series | *** Add Multifd support for TLS migration *** | expand |
On Sun, Sep 13, 2020 at 10:47:31AM +0800, Chuan Zheng wrote: > hostname is need in multifd-tls, save hostname into MigrationState. > > Signed-off-by: Chuan Zheng <zhengchuan@huawei.com> > Signed-off-by: Yan Jin <jinyan12@huawei.com> > --- > migration/channel.c | 6 ++++++ > migration/migration.c | 1 + > migration/migration.h | 5 +++++ > 3 files changed, 12 insertions(+) > > diff --git a/migration/channel.c b/migration/channel.c > index 20e4c8e..0e4104a 100644 > --- a/migration/channel.c > +++ b/migration/channel.c > @@ -66,6 +66,11 @@ void migration_channel_connect(MigrationState *s, > trace_migration_set_outgoing_channel( > ioc, object_get_typename(OBJECT(ioc)), hostname, error); > > + /* Save hostname into MigrationState for handshake */ > + if (hostname) { > + s->hostname = g_strdup(hostname); > + } > + > if (!error) { > if (s->parameters.tls_creds && > *s->parameters.tls_creds && > @@ -90,5 +95,6 @@ void migration_channel_connect(MigrationState *s, > } > } > migrate_fd_connect(s, error); > + g_free(s->hostname); > error_free(error); > } IIUC, this means hostname is free'd once the initial connection is established. Don't we have to wait until all the multifd connections exist too ? IOW, should we be doing this somewhere in a cleanup path. Perhaps migrate_fd_cancel() is the rigt place ? > diff --git a/migration/migration.c b/migration/migration.c > index 58a5452..e20b778 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -1883,6 +1883,7 @@ void migrate_init(MigrationState *s) > s->migration_thread_running = false; > error_free(s->error); > s->error = NULL; > + s->hostname = NULL; > > migrate_set_state(&s->state, MIGRATION_STATUS_NONE, MIGRATION_STATUS_SETUP); > > diff --git a/migration/migration.h b/migration/migration.h > index bdc7450..bc96322 100644 > --- a/migration/migration.h > +++ b/migration/migration.h > @@ -259,6 +259,11 @@ struct MigrationState > * (which is in 4M chunk). > */ > uint8_t clear_bitmap_shift; > + > + /* > + * This save hostname when out-going migration starts > + */ > + char *hostname; > }; > > void migrate_set_state(int *state, int old_state, int new_state); > -- > 1.8.3.1 > Regards, Daniel
diff --git a/migration/channel.c b/migration/channel.c index 20e4c8e..0e4104a 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -66,6 +66,11 @@ void migration_channel_connect(MigrationState *s, trace_migration_set_outgoing_channel( ioc, object_get_typename(OBJECT(ioc)), hostname, error); + /* Save hostname into MigrationState for handshake */ + if (hostname) { + s->hostname = g_strdup(hostname); + } + if (!error) { if (s->parameters.tls_creds && *s->parameters.tls_creds && @@ -90,5 +95,6 @@ void migration_channel_connect(MigrationState *s, } } migrate_fd_connect(s, error); + g_free(s->hostname); error_free(error); } diff --git a/migration/migration.c b/migration/migration.c index 58a5452..e20b778 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1883,6 +1883,7 @@ void migrate_init(MigrationState *s) s->migration_thread_running = false; error_free(s->error); s->error = NULL; + s->hostname = NULL; migrate_set_state(&s->state, MIGRATION_STATUS_NONE, MIGRATION_STATUS_SETUP); diff --git a/migration/migration.h b/migration/migration.h index bdc7450..bc96322 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -259,6 +259,11 @@ struct MigrationState * (which is in 4M chunk). */ uint8_t clear_bitmap_shift; + + /* + * This save hostname when out-going migration starts + */ + char *hostname; }; void migrate_set_state(int *state, int old_state, int new_state);