On Mon, Feb 10, 2020 at 07:44:59PM +0000, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > rdma_accept_incoming_migration is called from an fd handler and > can't return an Error * anywhere. > Currently it's leaking Error's in errp/local_err - there's > no point putting them in there unless we can report them. > > Turn most into fprintf's, and the last into an error_reportf_err > where it's coming up from another function. > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > migration/rdma.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/migration/rdma.c b/migration/rdma.c > index 2379b8345b..f67161c98f 100644 > --- a/migration/rdma.c > +++ b/migration/rdma.c > @@ -3980,13 +3980,13 @@ static void rdma_accept_incoming_migration(void > *opaque) > RDMAContext *rdma = opaque; > int ret; > QEMUFile *f; > - Error *local_err = NULL, **errp = &local_err; > + Error *local_err = NULL; > > trace_qemu_rdma_accept_incoming_migration(); > ret = qemu_rdma_accept(rdma); > > if (ret) { > - ERROR(errp, "RDMA Migration initialization failed!"); > + fprintf(stderr, "RDMA ERROR: Migration initialization failed");
Is there any reason to explictly use stderr instead of the error_reportf_err() below (then we simply jump to that for error paths)? The only difference of error_reportf_err() and stderr should be when there's one HMP, while shall we always suggest to use error_reportf_err() rather than stderr? Thanks, > return; > } > > @@ -3998,13 +3998,16 @@ static void rdma_accept_incoming_migration(void > *opaque) > > f = qemu_fopen_rdma(rdma, "rb"); > if (f == NULL) { > - ERROR(errp, "could not qemu_fopen_rdma!"); > + fprintf(stderr, "RDMA ERROR: could not qemu_fopen_rdma"); > qemu_rdma_cleanup(rdma); > return; > } > > rdma->migration_started_on_destination = 1; > - migration_fd_process_incoming(f, errp); > + migration_fd_process_incoming(f, &local_err); > + if (local_err) { > + error_reportf_err(local_err, "RDMA ERROR:"); > + } > } > > void rdma_start_incoming_migration(const char *host_port, Error **errp) > -- > 2.24.1 > -- Peter Xu