migration/rdma: Fix save_page method to fail on polling error
qemu_rdma_save_page() reports polling error with error_report(), then succeeds anyway. This is because the variable holding the polling status *shadows* the variable the function returns. The latter remains zero. Broken since day one, and duplicated more recently. Fixes:2da776db48(rdma: core logic) Fixes:b390afd8c5(migration/rdma: Fix out of order wrid) Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Li Zhijian <lizhijian@fujitsu.com> Message-ID: <20230921121312.1301864-2-armbru@redhat.com>
This commit is contained in:
		| @@ -3282,7 +3282,8 @@ static size_t qemu_rdma_save_page(QEMUFile *f, | |||||||
|      */ |      */ | ||||||
|     while (1) { |     while (1) { | ||||||
|         uint64_t wr_id, wr_id_in; |         uint64_t wr_id, wr_id_in; | ||||||
|         int ret = qemu_rdma_poll(rdma, rdma->recv_cq, &wr_id_in, NULL); |         ret = qemu_rdma_poll(rdma, rdma->recv_cq, &wr_id_in, NULL); | ||||||
|  |  | ||||||
|         if (ret < 0) { |         if (ret < 0) { | ||||||
|             error_report("rdma migration: polling error! %d", ret); |             error_report("rdma migration: polling error! %d", ret); | ||||||
|             goto err; |             goto err; | ||||||
| @@ -3297,7 +3298,8 @@ static size_t qemu_rdma_save_page(QEMUFile *f, | |||||||
|  |  | ||||||
|     while (1) { |     while (1) { | ||||||
|         uint64_t wr_id, wr_id_in; |         uint64_t wr_id, wr_id_in; | ||||||
|         int ret = qemu_rdma_poll(rdma, rdma->send_cq, &wr_id_in, NULL); |         ret = qemu_rdma_poll(rdma, rdma->send_cq, &wr_id_in, NULL); | ||||||
|  |  | ||||||
|         if (ret < 0) { |         if (ret < 0) { | ||||||
|             error_report("rdma migration: polling error! %d", ret); |             error_report("rdma migration: polling error! %d", ret); | ||||||
|             goto err; |             goto err; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user