qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 06/25] vfio: Always report an error in vfio_save_setup()


From: Eric Auger
Subject: Re: [PATCH v4 06/25] vfio: Always report an error in vfio_save_setup()
Date: Thu, 7 Mar 2024 10:36:16 +0100
User-agent: Mozilla Thunderbird


On 3/6/24 14:34, Cédric Le Goater wrote:
> This will prepare ground for future changes adding an Error** argument
> to the save_setup() handler. We need to make sure that on failure,
> vfio_save_setup() always sets a new error.
> 
> Reviewed-by: Fabiano Rosas <farosas@suse.de>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>

Eric

> ---
> 
>  Changes in v4:
> 
>  - Fixed state name printed out in error returned by vfio_save_setup()
>  - Fixed test on error returned by qemu_file_get_error()
>  
>  hw/vfio/migration.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
> index 
> 2050ac8897231ff89cc223f0570d5c7a65dede9e..330b3a28548e32b0b3268072895bb5e4875766a2
>  100644
> --- a/hw/vfio/migration.c
> +++ b/hw/vfio/migration.c
> @@ -383,6 +383,7 @@ static int vfio_save_setup(QEMUFile *f, void *opaque)
>      VFIODevice *vbasedev = opaque;
>      VFIOMigration *migration = vbasedev->migration;
>      uint64_t stop_copy_size = VFIO_MIG_DEFAULT_DATA_BUFFER_SIZE;
> +    int ret;
>  
>      qemu_put_be64(f, VFIO_MIG_FLAG_DEV_SETUP_STATE);
>  
> @@ -397,13 +398,13 @@ static int vfio_save_setup(QEMUFile *f, void *opaque)
>      }
>  
>      if (vfio_precopy_supported(vbasedev)) {
> -        int ret;
> -
>          switch (migration->device_state) {
>          case VFIO_DEVICE_STATE_RUNNING:
>              ret = vfio_migration_set_state(vbasedev, 
> VFIO_DEVICE_STATE_PRE_COPY,
>                                             VFIO_DEVICE_STATE_RUNNING);
>              if (ret) {
> +                error_report("%s: Failed to set new PRE_COPY state",
> +                             vbasedev->name);
>                  return ret;
>              }
>  
> @@ -414,6 +415,8 @@ static int vfio_save_setup(QEMUFile *f, void *opaque)
>              /* vfio_save_complete_precopy() will go to STOP_COPY */
>              break;
>          default:
> +            error_report("%s: Invalid device state %d", vbasedev->name,
> +                         migration->device_state);
>              return -EINVAL;
>          }
>      }
> @@ -422,7 +425,13 @@ static int vfio_save_setup(QEMUFile *f, void *opaque)
>  
>      qemu_put_be64(f, VFIO_MIG_FLAG_END_OF_STATE);
>  
> -    return qemu_file_get_error(f);
> +    ret = qemu_file_get_error(f);
> +    if (ret < 0) {
> +        error_report("%s: save setup failed : %s", vbasedev->name,
> +                     strerror(-ret));
> +    }
> +
> +    return ret;
>  }
>  
>  static void vfio_save_cleanup(void *opaque)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]