Message ID | 20250106155737.976977-1-jonah.palmer@oracle.com (mailing list archive) |
---|---|
Headers | show |
Series | Move net backend cleanup to NIC cleanup | expand |
I tested this series of patches with virtio-net regression tests,everything works fine. Tested-by: Lei Yang <leiyang@redhat.com> On Mon, Jan 6, 2025 at 11:57 PM Jonah Palmer <jonah.palmer@oracle.com> wrote: > > Commit a0d7215e33 ("vhost-vdpa: do not cleanup the vdpa/vhost-net > structures if peer nic is present") effectively delayed the backend > cleanup, allowing the frontend or the guest to access it resources as > long as the frontend NIC is still visible to the guest. > > However it does not clean up the resources until the qemu process is > over. This causes an effective leak if the device is deleted with > device_del, as there is no way to close the vdpa device. This makes > impossible to re-add that device to this or other QEMU instances until > the first instance of QEMU is finished. > > Move the cleanup from qemu_cleanup to the NIC deletion. > > v3: > Remove shadowed declaration of NetClientState nc variable in 2/2. > > v2: > Remove NIC peer also at net_cleanup. vhost-user trust all the > backends are clean before qemu removes char devices. > > This is not a requisite introduced by this commit as > system/runstate.c:qemu_cleanup shows. > > Eugenio Pérez (2): > net: parameterize the removing client from nc list > net: move backend cleanup to NIC cleanup > > net/net.c | 44 ++++++++++++++++++++++++++++++++++---------- > net/vhost-vdpa.c | 8 -------- > 2 files changed, 34 insertions(+), 18 deletions(-) > > -- > 2.43.5 >
On Mon, Jan 6, 2025 at 11:58 PM Jonah Palmer <jonah.palmer@oracle.com> wrote: > > Commit a0d7215e33 ("vhost-vdpa: do not cleanup the vdpa/vhost-net > structures if peer nic is present") effectively delayed the backend > cleanup, allowing the frontend or the guest to access it resources as > long as the frontend NIC is still visible to the guest. > > However it does not clean up the resources until the qemu process is > over. This causes an effective leak if the device is deleted with > device_del, as there is no way to close the vdpa device. This makes > impossible to re-add that device to this or other QEMU instances until > the first instance of QEMU is finished. > > Move the cleanup from qemu_cleanup to the NIC deletion. > > v3: > Remove shadowed declaration of NetClientState nc variable in 2/2. > > v2: > Remove NIC peer also at net_cleanup. vhost-user trust all the > backends are clean before qemu removes char devices. > > This is not a requisite introduced by this commit as > system/runstate.c:qemu_cleanup shows. > > Eugenio Pérez (2): > net: parameterize the removing client from nc list > net: move backend cleanup to NIC cleanup > > net/net.c | 44 ++++++++++++++++++++++++++++++++++---------- > net/vhost-vdpa.c | 8 -------- > 2 files changed, 34 insertions(+), 18 deletions(-) > > -- > 2.43.5 > Queued. Thanks