Message ID | 1599663177-53993-2-git-send-email-zhengchuan@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | *** Add Multifd support for TLS migration *** | expand |
On Wed, Sep 09, 2020 at 10:52:51PM +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 | 5 +++++ > migration/migration.c | 1 + > migration/migration.h | 5 +++++ > 3 files changed, 11 insertions(+) > > diff --git a/migration/channel.c b/migration/channel.c > index 20e4c8e..2af3069 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 && > 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 ae497bd..758f803 100644 > --- a/migration/migration.h > +++ b/migration/migration.h > @@ -261,6 +261,11 @@ struct MigrationState > * (which is in 4M chunk). > */ > uint8_t clear_bitmap_shift; > + > + /* > + * This save hostname when out-going migration starts > + */ > + char *hostname; > }; Something needs to free(hostname) at the appropriate time, otherwise well have a memory leak if we run migration multiple times. Regards, Daniel
On 2020/9/10 21:11, Daniel P. Berrangé wrote: > On Wed, Sep 09, 2020 at 10:52:51PM +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 | 5 +++++ >> migration/migration.c | 1 + >> migration/migration.h | 5 +++++ >> 3 files changed, 11 insertions(+) >> >> diff --git a/migration/channel.c b/migration/channel.c >> index 20e4c8e..2af3069 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 && >> 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 ae497bd..758f803 100644 >> --- a/migration/migration.h >> +++ b/migration/migration.h >> @@ -261,6 +261,11 @@ struct MigrationState >> * (which is in 4M chunk). >> */ >> uint8_t clear_bitmap_shift; >> + >> + /* >> + * This save hostname when out-going migration starts >> + */ >> + char *hostname; >> }; > > Something needs to free(hostname) at the appropriate time, otherwise > well have a memory leak if we run migration multiple times. > Hi, Daniel Thank you for your review. Yes, it will have a memory leak. Maybe i could just assign incoming parameters when it is not NULL other than g_strdup it. However, i am doubt if it is the best idea to save hostname into current_migration:( > > Regards, > Daniel >
diff --git a/migration/channel.c b/migration/channel.c index 20e4c8e..2af3069 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 && 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 ae497bd..758f803 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -261,6 +261,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);