"Zhijian Li (Fujitsu)" <lizhij...@fujitsu.com> writes: > On 18/09/2023 22:41, Markus Armbruster wrote: >> Functions that use an Error **errp parameter to return errors should >> not also report them to the user, because reporting is the caller's >> job. When the caller does, the error is reported twice. When it >> doesn't (because it recovered from the error), there is no error to >> report, i.e. the report is bogus. >> >> qemu_rdma_source_init() violates this principle: it calls >> error_report() via qemu_rdma_alloc_pd_cq(). I elected not to >> investigate how callers handle the error, i.e. precise impact is not >> known. >> >> Clean this up by converting qemu_rdma_alloc_pd_cq() to Error. >> >> Signed-off-by: Markus Armbruster<arm...@redhat.com> >> --- >> migration/rdma.c | 27 ++++++++++++++------------- >> 1 file changed, 14 insertions(+), 13 deletions(-) > > [...] > > >> @@ -2451,6 +2451,7 @@ static void qemu_rdma_cleanup(RDMAContext *rdma) >> >> static int qemu_rdma_source_init(RDMAContext *rdma, bool pin_all, Error >> **errp) >> { >> + ERRP_GUARD(); >> int ret, idx; >> >> /* >> @@ -2464,12 +2465,12 @@ static int qemu_rdma_source_init(RDMAContext *rdma, >> bool pin_all, Error **errp) >> goto err_rdma_source_init; >> } >> >> - ret = qemu_rdma_alloc_pd_cq(rdma); >> + ret = qemu_rdma_alloc_pd_cq(rdma, errp); >> if (ret < 0) { >> - error_setg(errp, "RDMA ERROR: " >> - "rdma migration: error allocating pd and cq! Your >> mlock()" >> - " limits may be too low. Please check $ ulimit -a # and " >> - "search for 'ulimit -l' in the output"); >> + error_append_hint(errp, >> + "Your mlock() limits may be too low. " >> + "Please check $ ulimit -a # and " >> + "search for 'ulimit -l' in the output\n"); > > > I think we could freely remove this error message as well, it may neither a > exact resolution > nor some one will take care. Just report the error qemu_rdma_alloc_pd_cq() > tell us.
Double-checking: you recommend to drop error_append_hint()? > Anyway > > Reviewed-by: Li Zhijian <lizhij...@fujitsu.com> > > >> goto err_rdma_source_init; >> } Thanks!