[systemd-devel] systemd has not the same behaviour following the version of the kernel ; StopWhenUnneeded no longer works

eric-olivier.perrin at sysnav.fr eric-olivier.perrin at sysnav.fr
Thu Sep 29 16:55:45 UTC 2022


Thanks for your answer. 

After some research, it seems that issue is already registered and fixed : https://github.com/systemd/systemd/issues/23410

BR,

Eric

-----Message d'origine-----
De : systemd-devel <systemd-devel-bounces at lists.freedesktop.org> De la part de Colin Guthrie
Envoyé : mercredi 28 septembre 2022 18:18
À : systemd-devel at lists.freedesktop.org
Objet : Re: [systemd-devel] systemd has not the same behaviour following the version of the kernel ; StopWhenUnneeded no longer works

Long standing issue with udev rules and a kernel change.

IIRC you should try ACTION!="remove" in your udev rule instead.

There are other posts on the list about this but I'm running out the door so thought I'd through a hint at least - if it doesn't work, I may have got the action name wrong, so look around!

Cheers

Col



eric-olivier.perrin at sysnav.fr wrote on 27/09/2022 16:16:
> Hi,
> 
> I’m using debian 10 (systemd 241) . I launch a service (tank.service) 
> when a specific USB device is connected. For that, i have written an 
> udev rule that requests the service start in case of « add » event, 
> thanks to « SYSTEMD_WANTS » :
> 
> /SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="04b4", 
> ATTRS{idProduct}=="6570", TAG+="systemd", 
> ENV{SYSTEMD_WANTS}="tank.service"/
> 
> I want service to be stopped when the USB device is removed. For that, 
> I use « StopWhenUnneeded » feature.
> 
> tank.service :
> 
> /[Unit]/
> 
> /Description= tank routine/
> 
> */StopWhenUnneeded=true/*
> 
> //
> 
> /[Service]/
> 
> /Type=simple/
> 
> //
> 
> /ExecStartPre=-/bin/bash /actimyo/bin/tankinsert.sh/
> 
> /ExecStart=/bin/bash /actimyo/bin/tank.sh/
> 
> /ExecStop=/bin/bash /actimyo/bin/tankremove.sh/
> 
> //
> 
> With kernel 4.9.150 ,  it works well : the service is stopped when the 
> USB device is removed.
> 
> However, I updated the kernel to version 5.15.32 and the service do 
> not stop when the USB device is removed . The feature « 
> StopWhenUnneeded » no longer works.
> 
> Does anybody understand why ? Could anybody give me a solution ?
> 
> _Systemd logs when USB device is removed with kernel 4.9.150 (complete 
> logs in attached file « logs systemd removing tank-4-9-150.txt ») :_
> 
> Jun 17 09:21:34 b-0024 kernel: usb 1-1: USB disconnect, device number 
> 2
> 
> Jun 17 09:21:34 b-0024 kernel: usb 1-1.2: USB disconnect, device 
> number 3
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Unit is not needed anymore.
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Trying to enqueue job 
> tank.service/stop/fail
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Added job tank.service/stop to 
> transaction.
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Installed new job 
> tank.service/stop as 724
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Enqueued job 
> tank.service/stop as 724
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Sent message type=signal sender=n/a 
> destination=n/a path=/org/freedesktop/systemd1/unit/tank_2eservice
> interface=org.freedesktop.DBus.Properties member=PropertiesChanged
> cookie=605 reply_cookie=0 signature=sa{sv}as error-name=n/a 
> error-message=n/a
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Sent message type=signal sender=n/a 
> destination=n/a path=/org/freedesktop/systemd1/unit/tank_2eservice
> interface=org.freedesktop.DBus.Properties member=PropertiesChanged
> cookie=606 reply_cookie=0 signature=sa{sv}as error-name=n/a 
> error-message=n/a
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Sent message type=signal sender=n/a 
> destination=n/a path=/org/freedesktop/systemd1 
> interface=org.freedesktop.systemd1.Manager member=JobNew cookie=607
> reply_cookie=0 signature=uos error-name=n/a error-message=n/a
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: About to execute: 
> /bin/bash /actimyo/bin/tankremove.sh
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Forked /bin/bash as 
> 2496
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Sent message type=signal sender=n/a 
> destination=n/a path=/org/freedesktop/systemd1/unit/tank_2eservice
> interface=org.freedesktop.DBus.Properties member=PropertiesChanged
> cookie=608 reply_cookie=0 signature=sa{sv}as error-name=n/a 
> error-message=n/a
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Sent message type=signal sender=n/a 
> destination=n/a path=/org/freedesktop/systemd1/unit/tank_2eservice
> interface=org.freedesktop.DBus.Properties member=PropertiesChanged
> cookie=609 reply_cookie=0 signature=sa{sv}as error-name=n/a 
> error-message=n/a
> 
> Jun 17 09:21:34 b-0024 systemd[1]: tank.service: Changed running -> 
> stop
> 
> Jun 17 09:21:34 b-0024 systemd[1]: Stopping Detect tank presence...
> 
> Jun 17 09:21:34 b-0024 systemd[2496]: tank.service: Executing: 
> /bin/bash /actimyo/bin/tankremove.sh
> 
> _Systemd logs_ _when USB device is removed with kernel 5.15.32 
> (complete logs in attached file « logs systemds removing tank 
> kernel-5-15-32.txt »):_
> 
> Jun 17 09:21:33 b-0021 kernel: [  438.934344] usb 1-1: USB disconnect, 
> device number 2
> 
> Jun 17 09:21:33 b-0021 kernel: [  438.939373] usb 1-1.2: USB 
> disconnect, device number 3
> 
> Jun 17 09:21:33 b-0021 systemd[1]: tank.service: tank.service lost 
> dependency 
> WantedBy=sys-devices-platform-soc-2100000.bus-2184000.usb-ci_hdrc.0-us
> b1-1\x2d1.device
> 
> Jun 17 09:21:33 b-0021 systemd[1]: tank.service: tank.service lost 
> dependency 
> ReferencedBy=sys-devices-platform-soc-2100000.bus-2184000.usb-ci_hdrc.
> 0-usb1-1\x2d1.device
> 
> Best regards
> 
> ---
> Eric-Olivier Perrin
> eric-olivier.perrin at sysnav.fr <mailto:eric-olivier.perrin at sysnav.fr>
> 
> --------------------------------------------
> SYSNAV
> 72, rue Emile Loubet
> 27200 Vernon (France)
> +33.(0)2.78.77.03.46
> 
> www.sysnav.com <http://www.sysnav.com/en/>
> 
> --------------------------------------------
> 

-- 

Colin Guthrie






More information about the systemd-devel mailing list