All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>, qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	qemu-block@nongnu.org, "Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH 3/3] migration: stop returning errno from load_snapshot()
Date: Fri, 9 Oct 2020 15:10:10 +0300	[thread overview]
Message-ID: <d717257b-e86a-827c-5423-b0bde20c46b1@ispras.ru> (raw)
In-Reply-To: <20201008174803.2696619-4-philmd@redhat.com>

On 08.10.2020 20:48, Philippe Mathieu-Daudé wrote:
> From: Daniel P. Berrangé <berrange@redhat.com>
> 
> None of the callers care about the errno value since there is a full
> Error object populated. This gives consistency with save_snapshot()
> which already just returns a boolean value.
> 
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> [PMD: Return false/true instead of -1/0, document function]
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>

> ---
>   include/migration/snapshot.h |  9 ++++++++-
>   migration/savevm.c           | 19 +++++++++----------
>   monitor/hmp-cmds.c           |  2 +-
>   replay/replay-snapshot.c     |  2 +-
>   softmmu/vl.c                 |  2 +-
>   5 files changed, 20 insertions(+), 14 deletions(-)
> 
> diff --git a/include/migration/snapshot.h b/include/migration/snapshot.h
> index a40c34307b..9bc989a6b4 100644
> --- a/include/migration/snapshot.h
> +++ b/include/migration/snapshot.h
> @@ -23,6 +23,13 @@
>    * On failure, store an error through @errp and return %false.
>    */
>   bool save_snapshot(const char *name, Error **errp);
> -int load_snapshot(const char *name, Error **errp);
> +/**
> + * save_snapshot: Load a snapshot.
> + * @name: path to snapshot
> + * @errp: pointer to error object
> + * On success, return %true.
> + * On failure, store an error through @errp and return %false.
> + */
> +bool load_snapshot(const char *name, Error **errp);
>   
>   #endif
> diff --git a/migration/savevm.c b/migration/savevm.c
> index fd2e5e8b66..531bb2eca1 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -2864,7 +2864,7 @@ void qmp_xen_load_devices_state(const char *filename, Error **errp)
>       migration_incoming_state_destroy();
>   }
>   
> -int load_snapshot(const char *name, Error **errp)
> +bool load_snapshot(const char *name, Error **errp)
>   {
>       BlockDriverState *bs_vm_state;
>       QEMUSnapshotInfo sn;
> @@ -2874,16 +2874,16 @@ int load_snapshot(const char *name, Error **errp)
>       MigrationIncomingState *mis = migration_incoming_get_current();
>   
>       if (!bdrv_all_can_snapshot(errp)) {
> -        return -ENOTSUP;
> +        return false;
>       }
>       ret = bdrv_all_find_snapshot(name, errp);
>       if (ret < 0) {
> -        return ret;
> +        return false;
>       }
>   
>       bs_vm_state = bdrv_all_find_vmstate_bs(errp);
>       if (!bs_vm_state) {
> -        return -ENOTSUP;
> +        return false;
>       }
>       aio_context = bdrv_get_aio_context(bs_vm_state);
>   
> @@ -2892,11 +2892,11 @@ int load_snapshot(const char *name, Error **errp)
>       ret = bdrv_snapshot_find(bs_vm_state, &sn, name);
>       aio_context_release(aio_context);
>       if (ret < 0) {
> -        return ret;
> +        return false;
>       } else if (sn.vm_state_size == 0) {
>           error_setg(errp, "This is a disk-only snapshot. Revert to it "
>                      " offline using qemu-img");
> -        return -EINVAL;
> +        return false;
>       }
>   
>       /*
> @@ -2917,7 +2917,6 @@ int load_snapshot(const char *name, Error **errp)
>       f = qemu_fopen_bdrv(bs_vm_state, 0);
>       if (!f) {
>           error_setg(errp, "Could not open VM state file");
> -        ret = -EINVAL;
>           goto err_drain;
>       }
>   
> @@ -2933,14 +2932,14 @@ int load_snapshot(const char *name, Error **errp)
>   
>       if (ret < 0) {
>           error_setg(errp, "Error %d while loading VM state", ret);
> -        return ret;
> +        return false;
>       }
>   
> -    return 0;
> +    return true;
>   
>   err_drain:
>       bdrv_drain_all_end();
> -    return ret;
> +    return false;
>   }
>   
>   void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev)
> diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
> index 14848a3381..ff0e3df8a3 100644
> --- a/monitor/hmp-cmds.c
> +++ b/monitor/hmp-cmds.c
> @@ -1123,7 +1123,7 @@ void hmp_loadvm(Monitor *mon, const QDict *qdict)
>   
>       vm_stop(RUN_STATE_RESTORE_VM);
>   
> -    if (load_snapshot(name, &err) == 0 && saved_vm_running) {
> +    if (!load_snapshot(name, &err) && saved_vm_running) {
>           vm_start();
>       }
>       hmp_handle_error(mon, err);
> diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c
> index 4f2560d156..b289365937 100644
> --- a/replay/replay-snapshot.c
> +++ b/replay/replay-snapshot.c
> @@ -83,7 +83,7 @@ void replay_vmstate_init(void)
>                   exit(1);
>               }
>           } else if (replay_mode == REPLAY_MODE_PLAY) {
> -            if (load_snapshot(replay_snapshot, &err) != 0) {
> +            if (!load_snapshot(replay_snapshot, &err)) {
>                   error_report_err(err);
>                   error_report("Could not load snapshot for icount replay");
>                   exit(1);
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 5a11a62f78..6eaa6b3a09 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -4478,7 +4478,7 @@ void qemu_init(int argc, char **argv, char **envp)
>       register_global_state();
>       if (loadvm) {
>           Error *local_err = NULL;
> -        if (load_snapshot(loadvm, &local_err) < 0) {
> +        if (!load_snapshot(loadvm, &local_err)) {
>               error_report_err(local_err);
>               autostart = 0;
>               exit(1);
> 



      reply	other threads:[~2020-10-09 12:11 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-08 17:48 [PATCH 0/3] migration: Make save/load_snapshot() return boolean Philippe Mathieu-Daudé
2020-10-08 17:48 ` [PATCH 1/3] block: push error reporting into bdrv_all_*_snapshot functions Philippe Mathieu-Daudé
2020-10-12 10:07   ` Max Reitz
2020-10-12 10:16     ` Philippe Mathieu-Daudé
2020-10-12 11:09       ` Max Reitz
2020-10-12 11:56         ` Philippe Mathieu-Daudé
2020-10-08 17:48 ` [PATCH 2/3] migration: Make save_snapshot() return bool, not 0/-1 Philippe Mathieu-Daudé
2020-10-09 12:09   ` Pavel Dovgalyuk
2020-10-09 13:57   ` Philippe Mathieu-Daudé
2020-10-08 17:48 ` [PATCH 3/3] migration: stop returning errno from load_snapshot() Philippe Mathieu-Daudé
2020-10-09 12:10   ` Pavel Dovgalyuk [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d717257b-e86a-827c-5423-b0bde20c46b1@ispras.ru \
    --to=pavel.dovgalyuk@ispras.ru \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.