Reviewed-by: Pavel Tikhomirov <[email protected]> On 6/22/26 19:58, Andrey Drobyshev wrote: > v1 -> v2: > > * Patch 2 (suppress EHOSTUNREACH): replace 'cpr_paused' + backend check > with a single 'started' latch; > * Patch 3 (re-scan TX virtqueue): reword commit message; > * Patch 4 (VHOST_RESET_OWNER): > - fix a vhost_worker use-after-free / stuck VHOST_WORK_QUEUED stall > against the lockless send path; > - drop the no-op vsock_for_each_connected_socket() iteration; > * Shuffle the patches, keep RESET_OWNER implementation last to preserve > bisectability; > * Reword the cover letter. > > v1: > https://lore.kernel.org/virtualization/[email protected] > > 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. > > 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. Patch 1 is a preliminary helper. Patches 2 and 3 > fix the pre-existing issues which do manifest during CPR / RESET_OWNER. > Patch 4 is the ioctl's implementation itself - we keep it last to > preserve bisectability. > > There's a complementary series for QEMU [0] adding support of vhost-vsock > devices during CPR migration. > > 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] > > Andrey Drobyshev (2): > vhost/vsock: suppress EHOSTUNREACH fast-fail during CPR pause > vhost/vsock: re-scan TX virtqueue on device start > > Pavel Tikhomirov (2): > vhost/vsock: split out vhost_vsock_drop_backends helper > vhost/vsock: add VHOST_RESET_OWNER ioctl > > drivers/vhost/vsock.c | 96 ++++++++++++++++++++++++++++++++++--------- > 1 file changed, 76 insertions(+), 20 deletions(-) >
-- Best regards, Pavel Tikhomirov Senior Software Developer, Virtuozzo.

