f035f53baa
When restarting libvirt services and sockets *and* libvirt-guests.service is running, the latter will sometimes hang when trying to connect to libvirtd. Even though libvirt-guests has 'Wants=libvirtd.service' and 'After=libvirtd.service', we can see via journalctl that it is not shutdown before libvirtd when executing something like systemctl try-restart libvirtd.service libvirtd.socket \ libvirtd-ro.socket virtlockd.service virtlockd.socket \ virtlogd.service virtlogd.socket virt-guest-shutdown.target Oct 28 15:53:31 systemd[1]: Stopping Virtualization daemon... Oct 28 15:53:31 systemd[1]: libvirtd.service: Succeeded. Oct 28 15:53:31 systemd[1]: Stopped Virtualization daemon. Oct 28 15:53:31 systemd[1]: libvirtd-admin.socket: Succeeded. Oct 28 15:53:31 systemd[1]: Closed Libvirt admin socket. Oct 28 15:53:31 systemd[1]: Stopping Libvirt admin socket. Oct 28 15:53:31 systemd[1]: libvirtd-ro.socket: Succeeded. Oct 28 15:53:31 systemd[1]: Closed Libvirt local read-only socket. Oct 28 15:53:31 systemd[1]: Stopping Libvirt local read-only socket. Oct 28 15:53:31 systemd[1]: libvirtd.socket: Succeeded. Oct 28 15:53:31 systemd[1]: Closed Libvirt local socket. Oct 28 15:53:31 systemd[1]: Stopping Libvirt local socket. Oct 28 15:53:31 systemd[1]: Listening on Libvirt local socket. Oct 28 15:53:31 systemd[1]: Listening on Libvirt admin socket. Oct 28 15:53:31 systemd[1]: Listening on Libvirt local read-only socket. Oct 28 15:53:31 systemd[1]: virtlockd.socket: Succeeded. Oct 28 15:53:31 systemd[1]: Closed Virtual machine lock manager socket. Oct 28 15:53:31 systemd[1]: Stopping Virtual machine lock manager socket. Oct 28 15:53:31 systemd[1]: Listening on Virtual machine lock manager socket. Oct 28 15:53:31 systemd[1]: virtlogd.socket: Succeeded. Oct 28 15:53:31 systemd[1]: Closed Virtual machine log manager socket. Oct 28 15:53:31 systemd[1]: Stopping Virtual machine log manager socket. Oct 28 15:53:31 systemd[1]: Listening on Virtual machine log manager socket. Oct 28 15:53:31 systemd[1]: Stopping Suspend/Resume Running libvirt Guests... In this case, the try-restart command hung and libvirt-guests was stuck trying to connect to libvirtd. In the following case, the try-restart worked since libvirtd was started again before libvirt-guests was stopped! Oct 28 15:19:02 systemd[1]: Stopping Virtualization daemon... Oct 28 15:19:02 systemd[1]: Stopped Virtualization daemon. Oct 28 15:19:02 systemd[1]: Closed Libvirt admin socket. Oct 28 15:19:02 systemd[1]: Stopping Libvirt admin socket. Oct 28 15:19:02 systemd[1]: Closed Virtual machine lock manager socket. Oct 28 15:19:02 systemd[1]: Stopping Virtual machine lock manager socket. Oct 28 15:19:02 systemd[1]: Listening on Virtual machine lock manager socket. Oct 28 15:19:02 systemd[1]: Closed Libvirt local read-only socket. Oct 28 15:19:02 systemd[1]: Stopping Libvirt local read-only socket. Oct 28 15:19:02 systemd[1]: Closed Libvirt local socket. Oct 28 15:19:02 systemd[1]: Stopping Libvirt local socket. Oct 28 15:19:02 systemd[1]: Listening on Libvirt local socket. Oct 28 15:19:02 systemd[1]: Listening on Libvirt admin socket. Oct 28 15:19:02 systemd[1]: Listening on Libvirt local read-only socket. Oct 28 15:19:02 systemd[1]: Closed Virtual machine log manager socket. Oct 28 15:19:02 systemd[1]: Stopping Virtual machine log manager socket. Oct 28 15:19:02 systemd[1]: Listening on Virtual machine log manager socket. Oct 28 15:19:02 systemd[1]: Starting Virtualization daemon... Oct 28 15:19:02 systemd[1]: Stopping Suspend/Resume Running libvirt Guests... Oct 28 15:19:02 systemd[1]: Started Virtualization daemon. Oct 28 15:19:02 libvirt-guests.sh[4912]: Running guests on default URI: no running guests. Oct 28 15:19:02 systemd[1]: Stopped Suspend/Resume Running libvirt Guests. Oct 28 15:19:02 systemd[1]: Stopped target Libvirt guests shutdown. Oct 28 15:19:02 systemd[1]: Stopping Libvirt guests shutdown. Oct 28 15:19:02 systemd[1]: Reached target Libvirt guests shutdown. Oct 28 15:19:02 systemd[1]: Starting Suspend/Resume Running libvirt Guests... Oct 28 15:19:02 systemd[1]: Started Suspend/Resume Running libvirt Guests. Adding 'Requires=libvirtd.service' to virt-guest-shutdown.target results in expected behavior Oct 28 15:40:00 systemd[1]: Stopping Suspend/Resume Running libvirt Guests... Oct 28 15:40:00 libvirt-guests.sh[5245]: Running guests on default URI: no running guests. Oct 28 15:40:00 systemd[1]: Stopped Suspend/Resume Running libvirt Guests. Oct 28 15:40:00 systemd[1]: Stopped target Libvirt guests shutdown. Oct 28 15:40:00 systemd[1]: Stopping Libvirt guests shutdown. Oct 28 15:40:00 systemd[1]: Stopping Virtualization daemon... Oct 28 15:40:00 systemd[1]: Stopped Virtualization daemon. Oct 28 15:40:00 systemd[1]: Closed Virtual machine log manager socket. Oct 28 15:40:00 systemd[1]: Stopping Virtual machine log manager socket. Oct 28 15:40:00 systemd[1]: Listening on Virtual machine log manager socket. Oct 28 15:40:00 systemd[1]: Closed Libvirt admin socket. Oct 28 15:40:00 systemd[1]: Stopping Libvirt admin socket. Oct 28 15:40:00 systemd[1]: Closed Libvirt local read-only socket. Oct 28 15:40:00 systemd[1]: Stopping Libvirt local read-only socket. Oct 28 15:40:00 systemd[1]: Closed Libvirt local socket. Oct 28 15:40:00 systemd[1]: Stopping Libvirt local socket. Oct 28 15:40:00 systemd[1]: Listening on Libvirt local socket. Oct 28 15:40:00 systemd[1]: Listening on Libvirt admin socket. Oct 28 15:40:00 systemd[1]: Listening on Libvirt local read-only socket. Oct 28 15:40:00 systemd[1]: Closed Virtual machine lock manager socket. Oct 28 15:40:00 systemd[1]: Stopping Virtual machine lock manager socket. Oct 28 15:40:00 systemd[1]: Listening on Virtual machine lock manager socket. Oct 28 15:40:00 systemd[1]: Starting Virtualization daemon... Oct 28 15:40:00 systemd[1]: Started Virtualization daemon. Oct 28 15:40:00 systemd[1]: Reached target Libvirt guests shutdown. Oct 28 15:40:00 systemd[1]: Starting Suspend/Resume Running libvirt Guests... Oct 28 15:40:00 systemd[1]: Started Suspend/Resume Running libvirt Guests. Signed-off-by: Jim Fehlig <jfehlig@suse.com> Reviewed-by: Neal Gompa <ngompa13@gmail.com> |
||
---|---|---|
.ctags.d | ||
.github | ||
build-aux | ||
ci | ||
docs | ||
examples | ||
include | ||
po | ||
scripts | ||
src | ||
tests | ||
tools | ||
.color_coded.in | ||
.ctags | ||
.dir-locals.el | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
.gitpublish | ||
.mailmap | ||
.ycm_extra_conf.py.in | ||
AUTHORS.rst.in | ||
config.h | ||
configmake.h.in | ||
CONTRIBUTING.rst | ||
COPYING | ||
COPYING.LESSER | ||
gitdm.config | ||
libvirt-admin.pc.in | ||
libvirt-lxc.pc.in | ||
libvirt-qemu.pc.in | ||
libvirt.pc.in | ||
libvirt.spec.in | ||
meson_options.txt | ||
meson.build | ||
mingw-libvirt.spec.in | ||
NEWS.rst | ||
README.rst | ||
run.in |
Libvirt API for virtualization
Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
For some of these hypervisors, it provides a stateful management daemon which runs on the virtualization host allowing access to the API both by non-privileged local users and remote users.
Layered packages provide bindings of the libvirt C API into other languages including Python, Perl, PHP, Go, Java, OCaml, as well as mappings into object systems such as GObject, CIM and SNMP.
Further information about the libvirt project can be found on the website:
License
The libvirt C API is distributed under the terms of GNU Lesser General Public License, version 2.1 (or later). Some parts of the code that are not part of the C library may have the more restrictive GNU General Public License, version 2.0 (or later). See the files COPYING.LESSER
and COPYING
for full license terms & conditions.
Installation
Instructions on building and installing libvirt can be found on the website:
https://libvirt.org/compiling.html
Contributing
The libvirt project welcomes contributions in many ways. For most components the best way to contribute is to send patches to the primary development mailing list. Further guidance on this can be found on the website:
https://libvirt.org/contribute.html
Contact
The libvirt project has two primary mailing lists:
- libvirt-users@redhat.com (for user discussions)
- libvir-list@redhat.com (for development only)
Further details on contacting the project are available on the website: