[PATCH] remote: Add libvirtd dependency to virt-guest-shutdown.target

Christian Ehrhardt christian.ehrhardt at canonical.com
Wed Jan 27 07:58:03 UTC 2021


On Wed, Nov 4, 2020 at 7:47 AM Neal Gompa <ngompa13 at gmail.com> wrote:
>
> On Tue, Nov 3, 2020 at 9:26 PM Jim Fehlig <jfehlig at suse.com> wrote:
> >
> > 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
> >
...
> > Adding 'Requires=libvirtd.service' to virt-guest-shutdown.target results
> > in expected behavior

Hi Jim (and all others),
This change is accepted since 6.10 [1] - while testing 7.0 for Debian
I've found that this change
regresses us bringing back bug 955216 [2] for us.
Based on how the require statement works I think it is bringing the
same issue to everyone
(not just Debian/Ubuntu).
That issue is - once you restart libvirtd.service (common on upgrades)
it will now also always
cycle libvirt-guests.service through a restart.
But cycling libvirt-guests.service means shutting down and starting
all guests which suddenly
makes upgrading libvirt very disruptive.


For the time being I've suggested we revert this change in
Debian/Ubuntu, but I wonder if
there could be something that ensures the ordering Jim wanted to achieve without
hard-linking (via ) a libvirtd.service restart to also restart
libvirt-guests.service?


--- log showing that libvirtd.service now restarts libvirt-guests as well ---


root at h-libvirt-netcheck-up:~# systemctl status libvirt-guests.service
● libvirt-guests.service - Suspend/Resume Running libvirt Guests
     Loaded: loaded (/lib/systemd/system/libvirt-guests.service;
enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-01-27 06:33:41 UTC; 1h 19min ago
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 56753 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 38269)
     Memory: 0B
     CGroup: /system.slice/libvirt-guests.service

Jan 27 06:33:41 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 06:33:41 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.

root at h-libvirt-netcheck-up:~# systemctl restart libvirtd

root at h-libvirt-netcheck-up:~# systemctl status libvirt-guests.service
● libvirt-guests.service - Suspend/Resume Running libvirt Guests
     Loaded: loaded (/lib/systemd/system/libvirt-guests.service;
enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-01-27 07:52:57 UTC; 4s ago
       Docs: man:libvirtd(8)
             https://libvirt.org
    Process: 57626 ExecStart=/usr/lib/libvirt/libvirt-guests.sh start
(code=exited, status=0/SUCCESS)
   Main PID: 57626 (code=exited, status=0/SUCCESS)

Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.

You see new PID, and entries that it stopped/started all guests.



--- journal while the above restarts happened  ---

Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up libvirt-guests.sh[57593]:
Running guests on default URI:
Jan 27 07:52:57 h-libvirt-netcheck-up libvirt-guests.sh[57602]: no
running guests.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]:
libvirt-guests.service: Succeeded.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped
Suspend/Resume Running libvirt Guests.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped target
Libvirt guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping Libvirt
guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping
Virtualization daemon...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service: Succeeded.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Unit process 343 (dnsmasq) remains running after unit stopped.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Unit process 344 (dnsmasq) remains running after unit stopped.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped Virtualization daemon.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Found left-over process 343 (dnsmasq) in control group while starting
unit. Ignoring.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: This usually
indicates unclean termination of a previous run, or service
implementation deficiencies.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Found left-over process 344 (dnsmasq) in control group while starting
unit. Ignoring.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: This usually
indicates unclean termination of a previous run, or service
implementation deficiencies.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Virtualization daemon...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Started Virtualization daemon.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Reached target
Libvirt guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.


[1]: https://gitlab.com/libvirt/libvirt/-/commit/f035f53baa2e5dc00b8e866e594672a90b4cea78
[2]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=955216





More information about the libvir-list mailing list