Skip to content

Commit

Permalink
migration: Simplify initial conditionals in migration for better read…
Browse files Browse the repository at this point in the history
…ability

The inital conditional statements in qmp migration functions is harder
to understand than necessary. It is better to get all errors out of
the way in the beginning itself to have better readability and error
handling.

Signed-off-by: Het Gala <het.gala@nutanix.com>
Suggested-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20231205080039.197615-1-het.gala@nutanix.com
Signed-off-by: Peter Xu <peterx@redhat.com>
  • Loading branch information
hetgala99 authored and xzpeter committed Jan 16, 2024
1 parent 977542d commit 0770ad4
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions migration/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -523,28 +523,26 @@ static void qemu_start_incoming_migration(const char *uri, bool has_channels,
/*
* Having preliminary checks for uri and channel
*/
if (uri && has_channels) {
error_setg(errp, "'uri' and 'channels' arguments are mutually "
"exclusive; exactly one of the two should be present in "
"'migrate-incoming' qmp command ");
if (!uri == !channels) {
error_setg(errp, "need either 'uri' or 'channels' argument");
return;
} else if (channels) {
}

if (channels) {
/* To verify that Migrate channel list has only item */
if (channels->next) {
error_setg(errp, "Channel list has more than one entries");
return;
}
addr = channels->value->addr;
} else if (uri) {
}

if (uri) {
/* caller uses the old URI syntax */
if (!migrate_uri_parse(uri, &channel, errp)) {
return;
}
addr = channel->addr;
} else {
error_setg(errp, "neither 'uri' or 'channels' argument are "
"specified in 'migrate-incoming' qmp command ");
return;
}

/* transport mechanism not suitable for migration? */
Expand Down Expand Up @@ -1924,28 +1922,26 @@ void qmp_migrate(const char *uri, bool has_channels,
/*
* Having preliminary checks for uri and channel
*/
if (uri && has_channels) {
error_setg(errp, "'uri' and 'channels' arguments are mutually "
"exclusive; exactly one of the two should be present in "
"'migrate' qmp command ");
if (!uri == !channels) {
error_setg(errp, "need either 'uri' or 'channels' argument");
return;
} else if (channels) {
}

if (channels) {
/* To verify that Migrate channel list has only item */
if (channels->next) {
error_setg(errp, "Channel list has more than one entries");
return;
}
addr = channels->value->addr;
} else if (uri) {
}

if (uri) {
/* caller uses the old URI syntax */
if (!migrate_uri_parse(uri, &channel, errp)) {
return;
}
addr = channel->addr;
} else {
error_setg(errp, "neither 'uri' or 'channels' argument are "
"specified in 'migrate' qmp command ");
return;
}

/* transport mechanism not suitable for migration? */
Expand Down

0 comments on commit 0770ad4

Please sign in to comment.