All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Juan Quintela <quintela@redhat.com>,
	Hailiang Zhang <zhang.zhanghailiang@huawei.com>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 00/33] migration: capture error reports into Error object
Date: Tue, 16 Feb 2021 19:32:04 +0000	[thread overview]
Message-ID: <YCwdtMuUSSSg3j1K@work-vm> (raw)
In-Reply-To: <YCuQzCs/DPNkXS0G@redhat.com>

* Daniel P. Berrangé (berrange@redhat.com) wrote:
> On Mon, Feb 15, 2021 at 07:01:28PM +0000, Dr. David Alan Gilbert wrote:
> > * Daniel P. Berrangé (berrange@redhat.com) wrote:
> > > On Mon, Feb 15, 2021 at 06:38:05PM +0000, Dr. David Alan Gilbert wrote:
> > > > One thing to check, and I *think* you're OK, but we have one place where
> > > > we actually check the error number:
> > > > 
> > > > migration.c:
> > > > 3414 static MigThrError migration_detect_error(MigrationState *s)
> > > > ...
> > > > 3426     /* Try to detect any file errors */
> > > > 3427     ret = qemu_file_get_error_obj(s->to_dst_file, &local_error);
> > > > 3428     if (!ret) {
> > > > 3429         /* Everything is fine */
> > > > 3430         assert(!local_error);
> > > > 3431         return MIG_THR_ERR_NONE;
> > > > 3432     }
> > > > 3433 
> > > > 3434     if (local_error) {
> > > > 3435         migrate_set_error(s, local_error);
> > > > 3436         error_free(local_error);
> > > > 3437     }
> > > > 3438 
> > > > 3439     if (state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) {
> > > > 3440         /*
> > > > 3441          * For postcopy, we allow the network to be down for a
> > > > 3442          * while. After that, it can be continued by a
> > > > 3443          * recovery phase.
> > > > 3444          */
> > > > 3445         return postcopy_pause(s);
> > > > 3446     } else {
> > > > 
> > > > This is to go into postcopy pause if the network connection broke (but
> > > > not if for example a device moaned about being in an invalid state)
> > > > 
> > > > If I read this correctly, file errors are still being preserved - is
> > > > that correct?
> > > 
> > > Yes, in places where QemuFile is reporting an actual I/O error I've
> > > tried to preserve that. Only removed setting of fake I/O errors. So
> > > if anything, we ought to get more accurate at detecting the recoverable
> > > scenarios once we fully cleanup errors.
> > 
> > OK, good.
> 
> One scenario to possibly check though is that in a few places we used
> error_report_err() but didn't immediately return an error code back to
> the caller, instead carrying on doing other calls. It is possible that
> we thus reported an error about bad data, and then later hit the EIO
> check for QemuFile.

That's generally OK; it gets pretty painful to do the qemu file checks
after every read.

Dave

> 
> Regards,
> Daniel
> -- 
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



      reply	other threads:[~2021-02-16 19:33 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-04 17:18 [PATCH 00/33] migration: capture error reports into Error object Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 01/33] migration: push Error **errp into qemu_loadvm_state() Daniel P. Berrangé
2021-02-04 21:57   ` Philippe Mathieu-Daudé
2021-02-05  9:33     ` Daniel P. Berrangé
2021-02-05  9:35       ` Philippe Mathieu-Daudé
2021-03-11 12:38         ` Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 02/33] migration: push Error **errp into qemu_loadvm_state_header() Daniel P. Berrangé
2021-02-04 21:58   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 03/33] migration: push Error **errp into qemu_loadvm_state_setup() Daniel P. Berrangé
2021-02-04 21:59   ` Philippe Mathieu-Daudé
2021-02-05  7:50   ` Markus Armbruster
2021-02-04 17:18 ` [PATCH 04/33] migration: push Error **errp into qemu_load_device_state() Daniel P. Berrangé
2021-02-04 22:01   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 05/33] migration: push Error **errp into qemu_loadvm_state_main() Daniel P. Berrangé
2021-02-15 18:35   ` Dr. David Alan Gilbert
2021-02-15 18:58     ` Daniel P. Berrangé
2021-03-11 12:17     ` Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 06/33] migration: push Error **errp into qemu_loadvm_section_start_full() Daniel P. Berrangé
2021-02-04 22:04   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 07/33] migration: push Error **errp into qemu_loadvm_section_part_end() Daniel P. Berrangé
2021-02-05 16:16   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 08/33] migration: push Error **errp into loadvm_process_command() Daniel P. Berrangé
2021-02-05 16:18   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 09/33] migration: push Error **errp into loadvm_handle_cmd_packaged() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 10/33] migration: push Error **errp into loadvm_postcopy_handle_advise() Daniel P. Berrangé
2021-02-05 16:21   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 11/33] migration: push Error **errp into ram_postcopy_incoming_init() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 12/33] migration: push Error **errp into loadvm_postcopy_handle_listen() Daniel P. Berrangé
2021-02-05 16:23   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 13/33] migration: push Error **errp into loadvm_postcopy_handle_run() Daniel P. Berrangé
2021-02-05 16:23   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 14/33] migration: push Error **errp into loadvm_postcopy_ram_handle_discard() Daniel P. Berrangé
2021-02-05 16:24   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 15/33] migration: make loadvm_postcopy_handle_resume() void Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 16/33] migration: push Error **errp into loadvm_handle_recv_bitmap() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 17/33] migration: push Error **errp into loadvm_process_enable_colo() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 18/33] migration: push Error **errp into colo_init_ram_cache() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 19/33] migration: push Error **errp into check_section_footer() Daniel P. Berrangé
2021-02-05 16:26   ` Philippe Mathieu-Daudé
2021-02-04 17:18 ` [PATCH 20/33] migration: push Error **errp into global_state_store() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 21/33] migration: remove error reporting from qemu_fopen_bdrv() callers Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 22/33] migration: push Error **errp into qemu_savevm_state_iterate() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 23/33] migration: simplify some error reporting in save_snapshot() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 24/33] migration: push Error **errp into qemu_savevm_state_setup() Daniel P. Berrangé
2021-02-04 17:18 ` [PATCH 25/33] migration: push Error **errp into qemu_savevm_state_complete_precopy() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 26/33] migration: push Error **errp into qemu_savevm_state_complete_precopy_non_iterable() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 27/33] migration: push Error **errp into qemu_savevm_state_complete_precopy() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 28/33] migration: push Error **errp into qemu_savevm_send_packaged() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 29/33] migration: push Error **errp into qemu_savevm_live_state() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 30/33] migration: push Error **errp into qemu_save_device_state() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 31/33] migration: push Error **errp into qemu_savevm_state_resume_prepare() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 32/33] migration: push Error **errp into postcopy_resume_handshake() Daniel P. Berrangé
2021-02-04 17:19 ` [PATCH 33/33] migration: push Error **errp into postcopy_do_resume() Daniel P. Berrangé
2021-02-04 18:22 ` [PATCH 00/33] migration: capture error reports into Error object Dr. David Alan Gilbert
2021-02-04 19:09   ` Daniel P. Berrangé
2021-02-08 13:29     ` Dr. David Alan Gilbert
2021-02-08 13:42       ` Daniel P. Berrangé
2021-02-08 14:29         ` Dr. David Alan Gilbert
2021-02-08 14:36           ` Daniel P. Berrangé
2021-02-15 18:38         ` Dr. David Alan Gilbert
2021-02-15 18:58           ` Daniel P. Berrangé
2021-02-15 19:01             ` Dr. David Alan Gilbert
2021-02-16  9:30               ` Daniel P. Berrangé
2021-02-16 19:32                 ` Dr. David Alan Gilbert [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=YCwdtMuUSSSg3j1K@work-vm \
    --to=dgilbert@redhat.com \
    --cc=berrange@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=zhang.zhanghailiang@huawei.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.