[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 18/26] vfio: Add Error** argument to vfio_devices_dma_logging_
From: |
Cédric Le Goater |
Subject: |
[PATCH v3 18/26] vfio: Add Error** argument to vfio_devices_dma_logging_start() |
Date: |
Mon, 4 Mar 2024 13:28:36 +0100 |
This allows to update the Error argument of the VFIO log_global_start()
handler. Errors detected when device level logging is started will be
propagated up to qemu_savevm_state_setup() when the ram save_setup()
handler is executed.
The vfio_set_migration_error() call becomes redundant. Remove it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
Changes in v3:
- Use error_setg_errno() in vfio_devices_dma_logging_start()
- ERRP_GUARD() because of error_prepend use in
vfio_listener_log_global_start()
hw/vfio/common.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index
9c5bc76414487513775fa8e559f97c12ed9c5fda..70e7c288f5f61f850fc9bbd204ecbe43c859f968
100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -1036,7 +1036,8 @@ static void vfio_device_feature_dma_logging_start_destroy(
g_free(feature);
}
-static int vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer)
+static int vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer,
+ Error **errp)
{
struct vfio_device_feature *feature;
VFIODirtyRanges ranges;
@@ -1058,8 +1059,8 @@ static int
vfio_devices_dma_logging_start(VFIOContainerBase *bcontainer)
ret = ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature);
if (ret) {
ret = -errno;
- error_report("%s: Failed to start DMA logging, err %d (%s)",
- vbasedev->name, ret, strerror(errno));
+ error_setg_errno(errp, errno, "%s: Failed to start DMA logging",
+ vbasedev->name);
goto out;
}
vbasedev->dirty_tracking = true;
@@ -1078,20 +1079,19 @@ out:
static bool vfio_listener_log_global_start(MemoryListener *listener,
Error **errp)
{
+ ERRP_GUARD(); /* error_prepend use */
VFIOContainerBase *bcontainer = container_of(listener, VFIOContainerBase,
listener);
int ret;
if (vfio_devices_all_device_dirty_tracking(bcontainer)) {
- ret = vfio_devices_dma_logging_start(bcontainer);
+ ret = vfio_devices_dma_logging_start(bcontainer, errp);
} else {
- ret = vfio_container_set_dirty_page_tracking(bcontainer, true, NULL);
+ ret = vfio_container_set_dirty_page_tracking(bcontainer, true, errp);
}
if (ret) {
- error_report("vfio: Could not start dirty page tracking, err: %d (%s)",
- ret, strerror(-ret));
- vfio_set_migration_error(ret);
+ error_prepend(errp, "vfio: Could not start dirty page tracking - ");
}
return !ret;
}
@@ -1099,6 +1099,7 @@ static bool vfio_listener_log_global_start(MemoryListener
*listener,
static bool vfio_listener_log_global_stop(MemoryListener *listener,
Error **errp)
{
+ ERRP_GUARD(); /* error_prepend use */
VFIOContainerBase *bcontainer = container_of(listener, VFIOContainerBase,
listener);
int ret = 0;
@@ -1106,13 +1107,11 @@ static bool
vfio_listener_log_global_stop(MemoryListener *listener,
if (vfio_devices_all_device_dirty_tracking(bcontainer)) {
vfio_devices_dma_logging_stop(bcontainer);
} else {
- ret = vfio_container_set_dirty_page_tracking(bcontainer, false, NULL);
+ ret = vfio_container_set_dirty_page_tracking(bcontainer, false, errp);
}
if (ret) {
- error_report("vfio: Could not stop dirty page tracking, err: %d (%s)",
- ret, strerror(-ret));
- vfio_set_migration_error(ret);
+ error_prepend(errp, "vfio: Could not stop dirty page tracking - ");
}
return !ret;
}
--
2.44.0
- [PATCH v3 17/26] vfio: Add Error** argument to .set_dirty_page_tracking() handler, (continued)
- [PATCH v3 17/26] vfio: Add Error** argument to .set_dirty_page_tracking() handler, Cédric Le Goater, 2024/03/04
- [PATCH v3 19/26] vfio: Add Error** argument to vfio_devices_dma_logging_stop(), Cédric Le Goater, 2024/03/04
- [PATCH v3 11/26] migration: Add Error** argument to qemu_savevm_state_setup(), Cédric Le Goater, 2024/03/04
- [PATCH v3 15/26] memory: Add Error** argument to the global_dirty_log routines, Cédric Le Goater, 2024/03/04
- [PATCH v3 16/26] migration: Modify ram_init_bitmaps() to report dirty tracking errors, Cédric Le Goater, 2024/03/04
- [PATCH v3 22/26] vfio: Reverse test on vfio_get_dirty_bitmap(), Cédric Le Goater, 2024/03/04
- [PATCH v3 25/26] vfio: Also trace event failures in vfio_save_complete_precopy(), Cédric Le Goater, 2024/03/04
- [PATCH v3 26/26] vfio: Extend vfio_set_migration_error() with Error* argument, Cédric Le Goater, 2024/03/04
- [PATCH v3 20/26] vfio: Use new Error** argument in vfio_save_setup(), Cédric Le Goater, 2024/03/04
- [PATCH v3 18/26] vfio: Add Error** argument to vfio_devices_dma_logging_start(),
Cédric Le Goater <=
- [PATCH v3 24/26] vfio: Add Error** argument to .get_dirty_bitmap() handler, Cédric Le Goater, 2024/03/04
- [PATCH v3 23/26] memory: Add Error** argument to memory_get_xlat_addr(), Cédric Le Goater, 2024/03/04
- [PATCH v3 21/26] vfio: Add Error** argument to .vfio_save_config() handler, Cédric Le Goater, 2024/03/04
- Re: [PATCH v3 00/26] migration: Improve error reporting, Peter Xu, 2024/03/05