All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com,
	mark.burton@greensocs.com, real@ispras.ru, qemu-devel@nongnu.org,
	maria.klimushenkova@ispras.ru, pbonzini@redhat.com,
	batuzovk@ispras.ru, afaerber@suse.de, fred.konrad@greensocs.com
Subject: Re: [Qemu-devel] [RFC PATCH v4 04/25] sysemu: system functions for replay
Date: Fri, 07 Nov 2014 15:51:17 +0000	[thread overview]
Message-ID: <87bnoj57re.fsf@linaro.org> (raw)
In-Reply-To: <20141107103150.6136.3642.stgit@PASHA-ISP>


Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> writes:

> This patch removes "static" specifier from several qemu function to make
> them visible to the replay module. It also invents several system functions
> that will be used by replay.
>
> Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
> ---
<snip>
>  
>  void do_savevm(Monitor *mon, const QDict *qdict);
>  int load_vmstate(const char *name);
> +int save_vmstate(Monitor *mon, const char *name);
>  void do_delvm(Monitor *mon, const QDict *qdict);
>  void do_info_snapshots(Monitor *mon, const QDict *qdict);
<snip>
>  
> -void do_savevm(Monitor *mon, const QDict *qdict)
> +int save_vmstate(Monitor *mon, const char *name)
>  {
>      BlockDriverState *bs, *bs1;
>      QEMUSnapshotInfo sn1, *sn = &sn1, old_sn1, *old_sn = &old_sn1;
> @@ -1049,7 +1049,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>      uint64_t vm_state_size;
>      qemu_timeval tv;
>      struct tm tm;
> -    const char *name = qdict_get_try_str(qdict, "name");
> +    int success = 0;
>  
>      /* Verify if there is a device that doesn't support snapshots and is writable */
>      bs = NULL;
> @@ -1062,14 +1062,19 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>          if (!bdrv_can_snapshot(bs)) {
>              monitor_printf(mon, "Device '%s' is writable but does not support snapshots.\n",
>                                 bdrv_get_device_name(bs));
> -            return;
> +            return success;
>          }
>      }
>  
>      bs = find_vmstate_bs();
>      if (!bs) {
>          monitor_printf(mon, "No block device can accept snapshots\n");
> -        return;
> +        if (replay_mode != REPLAY_MODE_NONE) {
> +            fprintf(stderr,
> +                    "At least one hdd should be attached to QEMU for replay\n");
> +            exit(1);

Perhaps we should be doing a proper error_report here?

> +        }
> +        return success;
>      }
>  
>      saved_vm_running = runstate_is_running();
> @@ -1118,6 +1123,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>  
>      /* create the snapshots */
>  
> +    success = 1;
>      bs1 = NULL;
>      while ((bs1 = bdrv_next(bs1))) {
>          if (bdrv_can_snapshot(bs1)) {
> @@ -1127,6 +1133,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>              if (ret < 0) {
>                  monitor_printf(mon, "Error while creating snapshot on '%s'\n",
>                                 bdrv_get_device_name(bs1));
> +                success = 0;
>              }
>          }
>      }
> @@ -1135,6 +1142,14 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>      if (saved_vm_running) {
>          vm_start();
>      }
> +
> +    return success;
> +}
> +
> +void do_savevm(Monitor *mon, const QDict *qdict)
> +{
> +    const char *name = qdict_get_try_str(qdict, "name");
> +    save_vmstate(mon, name);
>  }

You've re-factored do_savevm() and added a success/fail parameter which
isn't used by the caller. A bit of documentation on what success means
in this context would be useful for the function.

My personal preference is for success/fail returns is to use unambiguous
bool types but we don't mandate that. 

-- 
Alex Bennée

  reply	other threads:[~2014-11-07 15:51 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-07 10:31 [Qemu-devel] [RFC PATCH v4 00/25] Deterministic replay and reverse execution Pavel Dovgalyuk
2014-11-07 10:31 ` [Qemu-devel] [RFC PATCH v4 01/25] acpi: accurate overflow check Pavel Dovgalyuk
2014-11-07 11:16   ` Paolo Bonzini
2014-11-07 10:31 ` [Qemu-devel] [RFC PATCH v4 02/25] mc146818rtc: add missed field to vmstate Pavel Dovgalyuk
2014-11-07 11:18   ` Paolo Bonzini
2014-11-07 10:31 ` [Qemu-devel] [RFC PATCH v4 03/25] replay: global variables and function stubs Pavel Dovgalyuk
2014-11-07 10:44   ` Eric Blake
2014-11-07 10:31 ` [Qemu-devel] [RFC PATCH v4 04/25] sysemu: system functions for replay Pavel Dovgalyuk
2014-11-07 15:51   ` Alex Bennée [this message]
2014-11-07 10:31 ` [Qemu-devel] [RFC PATCH v4 05/25] replay: internal functions for replay log Pavel Dovgalyuk
2014-11-07 16:01   ` Alex Bennée
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 06/25] cpu-exec: reset exception_index correctly Pavel Dovgalyuk
2014-11-07 11:27   ` Paolo Bonzini
2014-11-12 12:02   ` Paolo Bonzini
2014-11-13 11:41     ` Pavel Dovgaluk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 07/25] icount: implement icount requesting Pavel Dovgalyuk
2014-11-07 11:19   ` Paolo Bonzini
2014-11-07 11:36     ` Pavel Dovgaluk
2014-11-07 11:45       ` Frederic Konrad
2014-11-11  9:41         ` Pavel Dovgaluk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 08/25] icount: improve enable/disable ticks Pavel Dovgalyuk
2014-11-07 11:20   ` Paolo Bonzini
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 09/25] replay: introduce icount event Pavel Dovgalyuk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 10/25] i386: do not cross the pages boundaries in replay mode Pavel Dovgalyuk
2014-11-07 11:20   ` Paolo Bonzini
2014-11-07 11:39     ` Pavel Dovgaluk
2014-11-07 11:27   ` Andreas Färber
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 11/25] cpu-exec: allow temporary disabling icount Pavel Dovgalyuk
2014-11-07 11:22   ` Paolo Bonzini
2014-11-11  9:49     ` Pavel Dovgaluk
2014-11-13 14:16   ` Paolo Bonzini
2014-11-17  9:35     ` Pavel Dovgaluk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 12/25] replay: interrupts and exceptions Pavel Dovgalyuk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 13/25] replay: asynchronous events infrastructure Pavel Dovgalyuk
2014-11-07 10:53   ` Eric Blake
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 14/25] cpu: replay instructions sequence Pavel Dovgalyuk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 15/25] replay: recording and replaying clock ticks Pavel Dovgalyuk
2014-11-07 10:32 ` [Qemu-devel] [RFC PATCH v4 16/25] replay: recording and replaying different timers Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 17/25] cpus: make icount warp deterministic in replay mode Pavel Dovgalyuk
2014-11-07 11:24   ` Paolo Bonzini
2014-11-07 11:45     ` Pavel Dovgaluk
2014-11-07 12:00       ` Paolo Bonzini
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 18/25] replay: shutdown event Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 19/25] replay: checkpoints Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 20/25] replay: bottom halves Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 21/25] replay: replay aio requests Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 22/25] replay: thread pool Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 23/25] replay: initialization and deinitialization Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 24/25] replay: command line options Pavel Dovgalyuk
2014-11-07 10:33 ` [Qemu-devel] [RFC PATCH v4 25/25] replay: recording of the user input Pavel Dovgalyuk

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=87bnoj57re.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=Pavel.Dovgaluk@ispras.ru \
    --cc=afaerber@suse.de \
    --cc=batuzovk@ispras.ru \
    --cc=fred.konrad@greensocs.com \
    --cc=maria.klimushenkova@ispras.ru \
    --cc=mark.burton@greensocs.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=real@ispras.ru \
    /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.