[Spice-devel] [vdagent-linux v2] systemd: Remove unneded virtio-port dependencies
Christophe Fergeau
cfergeau at redhat.com
Wed Dec 19 14:25:11 UTC 2018
On Wed, Dec 19, 2018 at 04:11:09AM -0500, Frediano Ziglio wrote:
> >
> > On Tue, Dec 18, 2018 at 12:15:09PM -0500, Frediano Ziglio wrote:
> > > >
> > > > The udev rule already adds SYSTEMD_WANTS=spice-vdagentd.socket
> > > > to the relevant virtio devices, which automatically adds Wants=${device}
> > > > to spice-vdagentd.socket (see 'systemctl show spice-vdagentd.socket').
> > > > Adding a Requisite/After for these ports is at best redundant, and most
> > > > likely wrong as this is causing boot time warnings:
> > > >
> > >
> > > Lot of doubts, were you able to reproduce the issue?
> >
> > Yes I was able to reproduce, and the message is gone with this patch.
> >
> > > Looking at systemd documentation is not clear why the Requisite causes
> > > an INFO message. Maybe something is attempting to launch the service?
> >
> > Did not dig too deeply as to why that's causing an error. I'm not sure
> > this is a valid unit name to be honest, which would explain a lot, but
> > if that's the reason, then it would be easy to reproduce..
> >
> > > What happen if Requisite is removed and service is enabled? Are we going
> > > to have an error at every restart?
> >
> > I don't understand your question. What kind of error do you think we
> > will get? Note that we will still have a Wants= associated with the
> > .socket file (automatically added by udev rule).
> >
> >
> > Christophe
> >
>
> Did some experiment, I think I got the full picture.
>
> How to reproduce the bug: simply do a "systemctl start spice-vdagentd.socket" !
> How did I get here is a bit more complicated.
> The INFO/WARNING lines from the bug did not come from the activation from udev
> but from sockets.target. The lines:
>
> [Install]
> WantedBy=sockets.target
>
> tell systemd to activate the unit when sockets.target is activated (so when
> network is configured). In the rpm you have (rpm -q --scripts spice-vdagentd):
>
> postinstall scriptlet (using /bin/sh):
>
> if [ $1 -eq 1 ] ; then
> # Initial installation
> systemctl preset spice-vdagentd.service spice-vdagentd.socket >/dev/null 2>&1 || :
> fi
>
> which will create a dependency from sockets.target to spice-vdagentd.socket
> (like doing a "systemctl enable spice-vdagentd.socket").
> To sum up the "[Install]" lines will enable the socket in all case. To test this
> remove/comment the "Requisite" and "After", remove the com.redhat.spice.0 device
> from the VM and start again the VM. Now with a "netstat -anop | grep spice" you
> can see that the /var/run/spice-vdagentd/spice-vdagent-sock socket is in listen
> mode (by systemd) even if there's no device. If you try to open the socket
> (for instance with a "nc -U /var/run/spice-vdagentd/spice-vdagent-sock") systemd
> will launch the SPICE service.
>
> I think that a better solution, instead of removing the "Requisite", is to
> remove the "[Install]" section. I tried it and correctly udev is activating
> the socket if the device is detected. If the device is not detected the socket
> won't be activated (you need also to preset the socket unit like in the rpm
> script) which seems correct to me.
man systemd.socket says:
Default Dependencies
The following dependencies are added unless DefaultDependencies=no is set:
ยท Socket units automatically gain a Before= dependency on sockets.target.
So we basically get
Before=sockets.target
WantedBy=sockets.target
We also get a
Wants=${device}
through the udev rule, which is what starts spice-vdagentd.service when
the device is there.
So with the additional information you provided, I agree that the
WantedBy does not seem needed. But I still think the Requisite/After
dependencies we currently have are not needed either.
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20181219/f1e31a2a/attachment-0001.sig>
More information about the Spice-devel
mailing list