[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 50/52] migration/rdma: Silence qemu_rdma_cleanup()
From: |
Zhijian Li (Fujitsu) |
Subject: |
Re: [PATCH 50/52] migration/rdma: Silence qemu_rdma_cleanup() |
Date: |
Tue, 26 Sep 2023 10:12:50 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 |
On 18/09/2023 22:42, 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(), qemu_rdma_connect(),
> rdma_start_incoming_migration(), and rdma_start_outgoing_migration()
> violate this principle: they call error_report() via
> qemu_rdma_cleanup().
>
> Moreover, qemu_rdma_cleanup() can't fail. It is called on error
> paths, and QIOChannel close and finalization. Are the conditions it
> reports really errors? I doubt it.
I'm not very sure, it's fine if it's call from the error path. but when
the caller is migration_cancle from HMP/QMP, shall we report something more
though we know QEMU can recover.
maybe change to warning etc...
>
> Clean this up: silence qemu_rdma_cleanup(). I believe that's fine for
> all these callers. If it isn't, we need to convert to Error instead.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> migration/rdma.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/migration/rdma.c b/migration/rdma.c
> index d9f80ef390..be2db7946d 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -2330,7 +2330,6 @@ static int qemu_rdma_write(QEMUFile *f, RDMAContext
> *rdma,
>
> static void qemu_rdma_cleanup(RDMAContext *rdma)
> {
> - Error *err = NULL;
> int idx;
>
> if (rdma->cm_id && rdma->connected) {
> @@ -2341,10 +2340,7 @@ static void qemu_rdma_cleanup(RDMAContext *rdma)
> .type = RDMA_CONTROL_ERROR,
> .repeat = 1,
> };
> - error_report("Early error. Sending error.");
> - if (qemu_rdma_post_send_control(rdma, NULL, &head, &err) < 0) {
> - error_report_err(err);
> - }
> + qemu_rdma_post_send_control(rdma, NULL, &head, NULL);
> }
>
> rdma_disconnect(rdma->cm_id);
- [PATCH 08/52] migration/rdma: Fix qemu_rdma_accept() to return failure on errors, (continued)
- [PATCH 08/52] migration/rdma: Fix qemu_rdma_accept() to return failure on errors, Markus Armbruster, 2023/09/18
- [PATCH 24/52] migration/rdma: Return -1 instead of negative errno code, Markus Armbruster, 2023/09/18
- [PATCH 42/52] migration/rdma: Convert qemu_rdma_post_recv_control() to Error, Markus Armbruster, 2023/09/18
- [PATCH 35/52] migration/rdma: Convert qemu_rdma_exchange_send() to Error, Markus Armbruster, 2023/09/18
- [PATCH 50/52] migration/rdma: Silence qemu_rdma_cleanup(), Markus Armbruster, 2023/09/18
- Re: [PATCH 50/52] migration/rdma: Silence qemu_rdma_cleanup(),
Zhijian Li (Fujitsu) <=
[PATCH 36/52] migration/rdma: Convert qemu_rdma_exchange_get_response() to Error, Markus Armbruster, 2023/09/18
[PATCH 39/52] migration/rdma: Convert qemu_rdma_write_one() to Error, Markus Armbruster, 2023/09/18