From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by passt.top (Postfix, from userid 1000) id 9089E5A0275; Sun, 09 Feb 2025 23:20:05 +0100 (CET) From: Stefano Brivio To: passt-dev@passt.top Subject: [PATCH v13 0/6] State migration, kind of draft again Date: Sun, 9 Feb 2025 23:19:59 +0100 Message-ID: <20250209222005.1640077-1-sbrivio@redhat.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: GQLFKPMGOJDJKIQJD7Q65SQ7NV6UXFWS X-Message-ID-Hash: GQLFKPMGOJDJKIQJD7Q65SQ7NV6UXFWS X-MailFrom: sbrivio@passt.top X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: David Gibson X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Some concerns came to my mind during the weekend and now I tried a bit quickly to fix them. A couple of functions became horrible as a result. More tests: IPv6 too, iperf3 inbound and outbound. >From another read of: https://github.com/checkpoint-restore/criu/blob/criu-dev/soccr/soccr.c I noticed that the way I was dumping and restoring queues was almost entirely bogus. It should be fixed now. Handling of FIN might be needed, though: we might have an off-by-one when we restore queues, I guess. Riddle of this version: enabling the flow_migrate_source_early() callback (shrinking the window early on) breaks things if I run the source without strace: the source (I think? sends a reset when we close the sockets after we switch repair mode on the second time (we flip that twice). So it's commented out for the moment. By itself, it works, and effectively limits what the peer sends during migration. There must be some other race or issue in passt-repair or in the matching interface, but I couldn't figure it out. David Gibson (1): migrate: Migrate guest observed addresses Stefano Brivio (5): migrate: Skeleton of live migration logic Add interfaces and configuration bits for passt-repair vhost_user: Make source quit after reporting migration state migrate: Migrate TCP flows test: Add migration tests Makefile | 14 +- conf.c | 44 ++- epoll_type.h | 6 +- flow.c | 248 ++++++++++++ flow.h | 8 + migrate.c | 309 +++++++++++++++ migrate.h | 54 +++ passt.1 | 11 + passt.c | 21 +- passt.h | 15 + repair.c | 211 ++++++++++ repair.h | 16 + tap.c | 65 +-- tcp.c | 789 +++++++++++++++++++++++++++++++++++++ tcp_conn.h | 95 +++++ test/lib/layout | 55 ++- test/lib/setup | 134 +++++++ test/lib/test | 48 +++ test/migrate/basic | 59 +++ test/migrate/bidirectional | 64 +++ test/migrate/iperf3_in4 | 50 +++ test/migrate/iperf3_in6 | 58 +++ test/migrate/iperf3_out4 | 50 +++ test/migrate/iperf3_out6 | 58 +++ test/run | 10 + util.c | 62 +++ util.h | 30 ++ vhost_user.c | 68 +--- virtio.h | 4 - vu_common.c | 49 +-- vu_common.h | 2 +- 31 files changed, 2524 insertions(+), 183 deletions(-) create mode 100644 migrate.c create mode 100644 migrate.h create mode 100644 repair.c create mode 100644 repair.h create mode 100644 test/migrate/basic create mode 100644 test/migrate/bidirectional create mode 100644 test/migrate/iperf3_in4 create mode 100644 test/migrate/iperf3_in6 create mode 100644 test/migrate/iperf3_out4 create mode 100644 test/migrate/iperf3_out6 -- 2.43.0