[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/47] migration/rdma: clean up qemu_rdma_dest_init a
From: |
Michael Tokarev |
Subject: |
[Qemu-devel] [PULL 06/47] migration/rdma: clean up qemu_rdma_dest_init a bit |
Date: |
Wed, 4 Mar 2015 20:06:23 +0300 |
Do not check for rdma->host being empty twice. This removes a large
"if" block, so code indentation is changed. While at it, remove an
ugly goto from the loop, replacing it with a cleaner if logic. And
finally, there's no need to initialize `ret' variable since is always
has a value.
Signed-off-by: Michael Tokarev <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
---
migration/rdma.c | 51 ++++++++++++++++++++++-----------------------------
1 file changed, 22 insertions(+), 29 deletions(-)
diff --git a/migration/rdma.c b/migration/rdma.c
index 6bee30c..a7bca91 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -2366,10 +2366,10 @@ err_rdma_source_connect:
static int qemu_rdma_dest_init(RDMAContext *rdma, Error **errp)
{
- int ret = -EINVAL, idx;
+ int ret, idx;
struct rdma_cm_id *listen_id;
char ip[40] = "unknown";
- struct rdma_addrinfo *res;
+ struct rdma_addrinfo *res, *e;
char port_str[16];
for (idx = 0; idx < RDMA_WRID_MAX; idx++) {
@@ -2377,7 +2377,7 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, Error
**errp)
rdma->wr_data[idx].control_curr = NULL;
}
- if (rdma->host == NULL) {
+ if (!rdma->host || !rdma->host[0]) {
ERROR(errp, "RDMA host is not set!");
rdma->error_state = -EINVAL;
return -1;
@@ -2400,40 +2400,33 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, Error
**errp)
snprintf(port_str, 16, "%d", rdma->port);
port_str[15] = '\0';
- if (rdma->host && strcmp("", rdma->host)) {
- struct rdma_addrinfo *e;
+ ret = rdma_getaddrinfo(rdma->host, port_str, NULL, &res);
+ if (ret < 0) {
+ ERROR(errp, "could not rdma_getaddrinfo address %s", rdma->host);
+ goto err_dest_init_bind_addr;
+ }
- ret = rdma_getaddrinfo(rdma->host, port_str, NULL, &res);
- if (ret < 0) {
- ERROR(errp, "could not rdma_getaddrinfo address %s", rdma->host);
- goto err_dest_init_bind_addr;
+ for (e = res; e != NULL; e = e->ai_next) {
+ inet_ntop(e->ai_family,
+ &((struct sockaddr_in *) e->ai_dst_addr)->sin_addr, ip, sizeof ip);
+ trace_qemu_rdma_dest_init_trying(rdma->host, ip);
+ ret = rdma_bind_addr(listen_id, e->ai_dst_addr);
+ if (ret) {
+ continue;
}
-
- for (e = res; e != NULL; e = e->ai_next) {
- inet_ntop(e->ai_family,
- &((struct sockaddr_in *) e->ai_dst_addr)->sin_addr, ip, sizeof
ip);
- trace_qemu_rdma_dest_init_trying(rdma->host, ip);
- ret = rdma_bind_addr(listen_id, e->ai_dst_addr);
- if (!ret) {
- if (e->ai_family == AF_INET6) {
- ret = qemu_rdma_broken_ipv6_kernel(errp, listen_id->verbs);
- if (ret) {
- continue;
- }
- }
-
- goto listen;
+ if (e->ai_family == AF_INET6) {
+ ret = qemu_rdma_broken_ipv6_kernel(errp, listen_id->verbs);
+ if (ret) {
+ continue;
}
}
+ break;
+ }
+ if (!e) {
ERROR(errp, "Error: could not rdma_bind_addr!");
goto err_dest_init_bind_addr;
- } else {
- ERROR(errp, "migration host and port not specified!");
- ret = -EINVAL;
- goto err_dest_init_bind_addr;
}
-listen:
rdma->listen_id = listen_id;
qemu_rdma_dump_gid("dest_init", listen_id);
--
2.1.4
- [Qemu-devel] [PULL 12/47] block: remove superfluous '\n' around error_report/error_setg, (continued)
- [Qemu-devel] [PULL 12/47] block: remove superfluous '\n' around error_report/error_setg, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 02/47] xen-pt: fix Out-of-bounds read, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 04/47] memsave: Improve and disambiguate error message, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 40/47] disas/cris: Fix warning caused by missing 'static' attribute, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 19/47] xtensa: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 05/47] smbios: document cmdline options for smbios type 2-4, 17 structures, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 17/47] vhost-scsi: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 39/47] disas/arm: Fix warnings caused by missing 'static' attribute, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 36/47] gitignore: Ignore new tests, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 10/47] qerror.h: Swap definitions that were not in alphabetical order, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 06/47] migration/rdma: clean up qemu_rdma_dest_init a bit,
Michael Tokarev <=
- [Qemu-devel] [PULL 15/47] numa: remove superfluous '\n' around error_setg, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 37/47] e500: fix memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 25/47] xen: Remove xen_cmos_set_s3_resume(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 32/47] milkymist.c: fix memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 03/47] xilinx_ethlite: Clean up after commit 2f991ad, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 27/47] qemu-char: add cyrillic characters 'numerosign' to VNC keysyms, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 47/47] 9pfs: remove useless return, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 46/47] gdbstub: avoid possible NULL pointer dereference, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 11/47] qmp-commands.hx: Fix several typos, Michael Tokarev, 2015/03/04