[PATCH v2 00/13] resolve hangs/crashes on libvirtd shutdown

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Thu Aug 6 14:10:51 UTC 2020


polite ping

On 23.07.2020 13:14, Nikolay Shirokovskiy wrote:
> I keep qemu VM event loop exiting synchronously but add code to avoid deadlock
> that can be caused by this approach. I guess it is worth having synchronous
> exiting of threads in this case to avoid crashes.
> 
> Patches that are already positively reviewed has appropriate 'Reviewed-by' lines.
> 
> Changes from v1:
> - rename stateShutdown to state stateShutdownPrepare
> - introduce net daemon shutdown callbacks
> - make some adjustments in terms of qemu per VM's event loop thread
>   finishing
> - factor out net server shutdown facilities into distinct patch
> - increase shutdown timeout from 15s to 30s
> 
> Nikolay Shirokovskiy (13):
>   libvirt: add stateShutdownPrepare/stateShutdownWait to drivers
>   util: always initialize priority condition
>   util: add stop/drain functions to thread pool
>   rpc: don't unref service ref on socket behalf twice
>   rpc: add virNetDaemonSetShutdownCallbacks
>   rpc: add shutdown facilities to netserver
>   rpc: finish all threads before exiting main loop
>   qemu: don't shutdown event thread in monitor EOF callback
>   vireventthread: exit thread synchronously on finalize
>   qemu: avoid deadlock in qemuDomainObjStopWorker
>   qemu: implement driver's shutdown/shutdown wait methods
>   rpc: cleanup virNetDaemonClose method
>   util: remove unused virThreadPoolNew macro
> 
>  scripts/check-drivername.py   |   2 +
>  src/driver-state.h            |   8 ++++
>  src/libvirt.c                 |  42 ++++++++++++++++
>  src/libvirt_internal.h        |   2 +
>  src/libvirt_private.syms      |   4 ++
>  src/libvirt_remote.syms       |   2 +-
>  src/qemu/qemu_domain.c        |  18 +++++--
>  src/qemu/qemu_driver.c        |  32 +++++++++++++
>  src/qemu/qemu_process.c       |   3 --
>  src/remote/remote_daemon.c    |   6 +--
>  src/rpc/virnetdaemon.c        | 109 ++++++++++++++++++++++++++++++++++++------
>  src/rpc/virnetdaemon.h        |   8 +++-
>  src/rpc/virnetserver.c        |   8 ++++
>  src/rpc/virnetserver.h        |   1 +
>  src/rpc/virnetserverservice.c |   1 -
>  src/util/vireventthread.c     |   1 +
>  src/util/virthreadpool.c      |  65 +++++++++++++++++--------
>  src/util/virthreadpool.h      |   6 +--
>  18 files changed, 267 insertions(+), 51 deletions(-)
> 




More information about the libvir-list mailing list