[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 06/21] migration: Add Error** argument to .save_setup() ha
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v2 06/21] migration: Add Error** argument to .save_setup() handler |
Date: |
Thu, 29 Feb 2024 07:32:06 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Cédric Le Goater <clg@redhat.com> writes:
> The purpose is to record a potential error in the migration stream if
> qemu_savevm_state_setup() fails. Most of the current .save_setup()
> handlers can be modified to use the Error argument instead of managing
> their own and calling locally error_report(). The following patches
> will introduce such changes for VFIO first.
>
> Cc: Nicholas Piggin <npiggin@gmail.com>
> Cc: Harsh Prateek Bora <harshpb@linux.ibm.com>
> Cc: Halil Pasic <pasic@linux.ibm.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> Cc: John Snow <jsnow@redhat.com>
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Reviewed-by: Peter Xu <peterx@redhat.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
[...]
> diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c
> index
> c483b62a9b5f71772639fc180bdad15ecb6711cb..c934df424a555d83d2198f5ddfc0cbe0ea98e9ec
> 100644
> --- a/hw/s390x/s390-stattrib.c
> +++ b/hw/s390x/s390-stattrib.c
> @@ -166,7 +166,7 @@ static int cmma_load(QEMUFile *f, void *opaque, int
> version_id)
> return ret;
> }
>
> -static int cmma_save_setup(QEMUFile *f, void *opaque)
> +static int cmma_save_setup(QEMUFile *f, void *opaque, Error **errp)
> {
> S390StAttribState *sas = S390_STATTRIB(opaque);
> S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas);
int res;
/*
* Signal that we want to start a migration, thus needing PGSTE dirty
* tracking.
*/
res = sac->set_migrationmode(sas, 1);
if (res) {
return res;
I believe this is a failure return.
Anti-pattern: fail without setting an error. There might be more
elsewhere in the series.
qapi/error.h's big comment:
* - On success, the function should not touch *errp. On failure, it
* should set a new error, e.g. with error_setg(errp, ...), or
* propagate an existing one, e.g. with error_propagate(errp, ...).
*
* - Whenever practical, also return a value that indicates success /
* failure. This can make the error checking more concise, and can
* avoid useless error object creation and destruction. Note that
* we still have many functions returning void. We recommend
* • bool-valued functions return true on success / false on failure,
* • pointer-valued functions return non-null / null pointer, and
* • integer-valued functions return non-negative / negative.
}
qemu_put_be64(f, STATTR_FLAG_EOS);
return 0;
}
When adding Error **errp to a function, you must also add code to set an
error on failure to every failure path. Adding it in a later patch in
the same series can be okay, but I'd add a TODO comment to the function
then, and mention it in the commit message.
Questions?
[...]
- [PATCH v2 17/21] vfio: Reverse test on vfio_get_dirty_bitmap(), (continued)
- [PATCH v2 17/21] vfio: Reverse test on vfio_get_dirty_bitmap(), Cédric Le Goater, 2024/02/27
- [PATCH v2 01/21] migration: Report error when shutdown fails, Cédric Le Goater, 2024/02/27
- [PATCH v2 20/21] vfio: Also trace event failures in vfio_save_complete_precopy(), Cédric Le Goater, 2024/02/27
- [PATCH v2 07/21] migration: Add Error** argument to .load_setup() handler, Cédric Le Goater, 2024/02/27
- [PATCH v2 13/21] vfio: Add Error** argument to vfio_devices_dma_logging_start(), Cédric Le Goater, 2024/02/27
- [PATCH v2 03/21] migration: Add documentation for SaveVMHandlers, Cédric Le Goater, 2024/02/27
- [PATCH v2 06/21] migration: Add Error** argument to .save_setup() handler, Cédric Le Goater, 2024/02/27
- Re: [PATCH v2 06/21] migration: Add Error** argument to .save_setup() handler,
Markus Armbruster <=
- Re: [PATCH v2 06/21] migration: Add Error** argument to .save_setup() handler, Cédric Le Goater, 2024/02/29
[PATCH v2 05/21] migration: Add Error** argument to qemu_savevm_state_setup(), Cédric Le Goater, 2024/02/27
[PATCH v2 08/21] memory: Add Error** argument to .log_global*() handlers, Cédric Le Goater, 2024/02/27
[PATCH v2 16/21] vfio: Add Error** argument to .vfio_save_config() handler, Cédric Le Goater, 2024/02/27
[PATCH v2 19/21] vfio: Add Error** argument to .get_dirty_bitmap() handler, Cédric Le Goater, 2024/02/27