Hello Stefano, On 6/16/26 4:35 PM, Stefano Garzarella wrote: > Hi Andrey, > thanks for the series! > > On Fri, Jun 12, 2026 at 07:57:14PM +0300, Andrey Drobyshev wrote: >> Host<-->guest connections via AF_VSOCK sockets aren't supposed to >> outlive VM migration, since VM is moving to another host. However >> there's a special case, which is QEMU live-update, or CPR >> (checkpoint-restore) migration. In this case, VM remains on the same >> host, and we'd like such connections to persist. > > In the spec we have VIRTIO_VSOCK_EVENT_TRANSPORT_RESET which is usually > sent by the device after a migration. > > IIUC the specs don't say this has to be done all the time, so we don't > need to change anything in the specs, right? > > We just need to avoid sending it (which I think is what we're doing > here... I still need to look at the patches). >
Sending this exact ioctl is guarded by one of my patches in the QEMU counterpart series: https://lore.kernel.org/qemu-devel/[email protected]/ So we indeed avoid sending it on migration target in case of CPR migration. >> >> For this to work, we need to be able to transfer device ownership from >> source QEMU to dest QEMU. Namely, source needs to reset ownership by >> issuing VHOST_RESET_OWNER ioctl, and then target has to claim it by >> calling VHOST_SET_OWNER. >> >> Since VHOST_RESET_OWNER isn't yet implemented for vhost-vsock, let's add >> such implementation (patches 1-2). Also fix regression introduced by >> the earlier commit [1] (patch 3), and fix the deadlock bug (commit 4). > > If it's a regression, should we fix it separately? > > Or is it related to this series? > Probably my wording wasn't quite correct. I posted this patch here because we found the problem during testing this particular functionality, i.e. vsock data transfer + CPR migration. And the problem was introduced by a recent commit, which is fine on its own, but breaks the CPR case. >> >> There's a complementary series for QEMU [0] adding support of vhost-vsock >> devices during CPR migration. >> >> NOTE: this series needs to be applied on top of Michael's vhost/linux-next >> tree as it contains relevant commit [1], not yet present in master branch. >> >> I've tested this (patched QEMU + patched kernel) approximately as follows: >> >> * Run listener in the guest: >> socat -u VSOCK-LISTEN:9999 - >/tmp/recv.bin >> >> * Run data transfer from host to guest: >> socat -u FILE:/root/bigfile.bin VSOCK-CONNECT:CID:9999 >> >> * Perform CPR migration during transfer (either cpr-exec or cpr-transfer) >> * Check that file hash sum matches >> >> [0] >> https://lore.kernel.org/qemu-devel/[email protected] >> [1] >> https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git/commit/?id=bb26ed5f3a8b >> >> Andrey Drobyshev (1): >> vhost/vsock: re-scan TX virtqueue on device start >> >> Denis V. Lunev (1): >> vhost/vsock: suppress EHOSTUNREACH fast-fail during CPR pause >> >> Pavel Tikhomirov (2): >> vhost/vsock: split out vhost_vsock_drop_backends helper >> vhost/vsock: add VHOST_RESET_OWNER ioctl >> >> drivers/vhost/vsock.c | 80 +++++++++++++++++++++++++++++++++++++------ >> 1 file changed, 69 insertions(+), 11 deletions(-) >> >> -- >> 2.47.1 >> >

