mirror of https://gitee.com/openkylin/qemu.git
migration/rdma: set the REUSEADDR option for destination
We hit following error during testing RDMA transport: in case of migration error, mgmt daemon pick one migration port, incoming rdma:[::]:8089: RDMA ERROR: Error: could not rdma_bind_addr Then try another -incoming rdma:[::]:8103, sometime it worked, sometimes need another try with other ports number. Set the REUSEADDR option for destination, This allow address could be reused to avoid rdma_bind_addr error out. Signed-off-by: Jack Wang <jinpu.wang@ionos.com> Message-Id: <20220208085640.19702-1-jinpu.wang@ionos.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Pankaj Gupta <pankaj.gupta@ionos.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> dgilbert: Fixed up some tabs
This commit is contained in:
parent
675fd3c96b
commit
f736e414ee
|
@ -2705,6 +2705,7 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, Error **errp)
|
|||
char ip[40] = "unknown";
|
||||
struct rdma_addrinfo *res, *e;
|
||||
char port_str[16];
|
||||
int reuse = 1;
|
||||
|
||||
for (idx = 0; idx < RDMA_WRID_MAX; idx++) {
|
||||
rdma->wr_data[idx].control_len = 0;
|
||||
|
@ -2740,6 +2741,12 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, Error **errp)
|
|||
goto err_dest_init_bind_addr;
|
||||
}
|
||||
|
||||
ret = rdma_set_option(listen_id, RDMA_OPTION_ID, RDMA_OPTION_ID_REUSEADDR,
|
||||
&reuse, sizeof reuse);
|
||||
if (ret) {
|
||||
ERROR(errp, "Error: could not set REUSEADDR option");
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue