public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: passt-dev@passt.top, lvivier@redhat.com
Subject: Re: [PATCH v4 0/8] Draft, incomplete series introducing state migration
Date: Tue, 4 Feb 2025 17:01:04 +1100	[thread overview]
Message-ID: <Z6GtIHHGitkaqhjW@zatzit> (raw)
In-Reply-To: <20250204004745.97854-1-sbrivio@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2236 bytes --]

On Tue, Feb 04, 2025 at 01:47:37AM +0100, Stefano Brivio wrote:
> I applied what I could, and squashed a number patches, including
> those from "[PATCH 0/6] More migration improvements".
> 
> I didn't test the full flow here.

With this patch set, I'm still unable to migrate a connection.  First
there are some simple things:

 * There are, again, some bogus revert hunks in the series which I had
   to remove.  See comments
 * There are some bugs in the already committed patches, I posted a
   couple of fixes for those

Then debugging the actual migration problem.

The first issue I encountered was that the connect() on the target was
failing with EADDRNOTAVAIL.  I think this is a timing issue - the exit
of the source instance isn't happening quite in time to free up the
port.  I was able to work around that by closing the source side
socket immediately after extracting its info with tcp_repair, instead
of postponing that to the exit check_device_state.

To address this properly, I think we need to do a couple of things:

 * Treat the source-side point of no return as being at the end of
   migrate_source().  Close our sockets and purge flows at that point.
 * On the target side, defer actually re-opening/repairing the sockets
   until check_state, or even send_rarp time.

Laurent, if you have some insight (or can find out) what guarantees we
have in terms of what points on the target come after what points on
the source that would be useful to check.


With the hacky workaround, the connect() now success, but I still
couldn't send data from the target.  From strace, the target side
passt doesn't seem to be attempting doing any writes to the socket,
but I'm not sure why yet.  pcap on the target side does show some
packets on the stream coming from the guest, although it's only one
byte (0x0a) and I thought I'd typed 5ish.  It then appears to
retransmit several times without getting an ack from passt.

I'll keep debugging tomorrow if you don't have an insight.
 
-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2025-02-04  6:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-04  0:47 [PATCH v4 0/8] Draft, incomplete series introducing state migration Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 1/8] flow_table: Use size in extern declaration for flowtab, export hash table Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 2/8] Introduce facilities for guest migration on top of vhost-user infrastructure Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 3/8] migrate: Make more handling common rather than vhost-user specific Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 4/8] migrate: Don't handle the migration channel through epoll Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 5/8] Add interfaces and configuration bits for passt-repair Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 6/8] flow, tcp: Basic pre-migration source handler to dump sequence numbers Stefano Brivio
2025-02-04  3:43   ` David Gibson
2025-02-04  6:44     ` Stefano Brivio
2025-02-05  0:58       ` David Gibson
2025-02-04  0:47 ` [PATCH v4 7/8] vhost_user: Make source quit after reporting migration state Stefano Brivio
2025-02-04  0:47 ` [PATCH v4 8/8] Implement target side of migration Stefano Brivio
2025-02-04  6:01 ` David Gibson [this message]
2025-02-04  6:48   ` [PATCH v4 0/8] Draft, incomplete series introducing state migration Stefano Brivio

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=Z6GtIHHGitkaqhjW@zatzit \
    --to=david@gibson.dropbear.id.au \
    --cc=lvivier@redhat.com \
    --cc=passt-dev@passt.top \
    --cc=sbrivio@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.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).