Re: [PATCH v2 0/4] vhost/vsock: add support for VHOST_RESET_OWNER and CPR migration
From: Pavel Tikhomirov
Date: Thu Jun 25 2026 - 11:38:12 EST
Reviewed-by: Pavel Tikhomirov <ptikhomirov@xxxxxxxxxxxxx>
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/20260612165718.433546-1-andrey.drobyshev@xxxxxxxxxxxxx
>
> 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/20260619105514.128812-1-andrey.drobyshev@xxxxxxxxxxxxx
>
> 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.