Skip to content

Commit

Permalink
migration: Create migration_has_all_channels
Browse files Browse the repository at this point in the history
This function allows us to decide when to close the listener socket.
For now, we only need one connection.

Signed-off-by: Juan Quintela <[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
  • Loading branch information
Juan Quintela committed Sep 22, 2017
1 parent 8e1a193 commit 428d890
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
11 changes: 11 additions & 0 deletions migration/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,17 @@ void migration_ioc_process_incoming(QIOChannel *ioc)
/* We still only have a single channel. Nothing to do here yet */
}

/**
* @migration_has_all_channels: We have received all channels that we need
*
* Returns true when we have got connections to all the channels that
* we need for migration.
*/
bool migration_has_all_channels(void)
{
return true;
}

/*
* Send a 'SHUT' message on the return channel with the given value
* to indicate that we've finished with the RP. Non-0 value indicates
Expand Down
2 changes: 2 additions & 0 deletions migration/migration.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ void migrate_set_state(int *state, int old_state, int new_state);
void migration_fd_process_incoming(QEMUFile *f);
void migration_ioc_process_incoming(QIOChannel *ioc);

bool migration_has_all_channels(void);

uint64_t migrate_max_downtime(void);

void migrate_fd_error(MigrationState *s, const Error *error);
Expand Down
10 changes: 7 additions & 3 deletions migration/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,13 @@ static gboolean socket_accept_incoming_migration(QIOChannel *ioc,
object_unref(OBJECT(sioc));

out:
/* Close listening socket as its no longer needed */
qio_channel_close(ioc, NULL);
return G_SOURCE_REMOVE;
if (migration_has_all_channels()) {
/* Close listening socket as its no longer needed */
qio_channel_close(ioc, NULL);
return G_SOURCE_REMOVE;
} else {
return G_SOURCE_CONTINUE;
}
}


Expand Down

0 comments on commit 428d890

Please sign in to comment.