On Tue, Feb 04, 2025 at 07:44:10AM +0100, Stefano Brivio wrote:On Tue, 4 Feb 2025 14:43:07 +1100 David Gibson <david(a)gibson.dropbear.id.au> wrote:Heh, fair point.On Tue, Feb 04, 2025 at 01:47:43AM +0100, Stefano Brivio wrote:Well, folding "[PATCH 6/6] migrate: Make migration handlers simpler and more flexible" into the first patches, where it belongs, was a lot of fun.Very much draft quality, but it works. Ask passt-repair to switch TCP sockets to repair mode and dump their current sequence numbers to the flow table, which will be transferred and used by the target in the next step.[snip]@@ -268,6 +270,7 @@ void migrate_close(struct ctx *c) { if (c->device_state_fd != -1) { debug("Closing migration channel, fd: %d", c->device_state_fd); + epoll_del(c, c->device_state_fd);You have a stray revert hunks here again which breaks things horribly. And therefore makes me not confident that I'm actually testing the same code you are.As I mentioned, I didn't test this one, I just build-tested the final result.Ah, yeah, I've been thinking this way of posting patches back and forth hasn't been working great for this rapid iteration. On the other hand I was relucant to do the patch folding myself for fear of clobbering changes you were making concurrently to the same patches. I'll try posting the whole rebase and see how we go. -- 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/~dgibsonCan you please post the fixed rebase...?close(c->device_state_fd); c->device_state_fd = -1; c->device_state_result = -1; @@ -282,14 +285,12 @@ void migrate_close(struct ctx *c) */ void migrate_request(struct ctx *c, int fd, bool target) { - debug("Migration requested, fd: %d (was %d)", - fd, c->device_state_fd); + debug("Migration requested, fd: %d", c->device_state_fd); if (c->device_state_fd != -1) migrate_close(c); c->device_state_fd = fd; - c->migrate_target = target;And here.