[systemd-devel] .device units are not showing up on git systemd

Umut Tezduyar Lindskog umut.tezduyar at axis.com
Tue Jan 14 05:51:49 PST 2014


Hi,

I have figured it out. e8a3b2dc (Dec 18) changed the behavior for me by making containers subscribe to NETLINK_KOBJECT_UEVENT with UDEV_MONITOR_NONE. We also introduced a function udev_has_devtmpfs which makes a system call name_to_handle_at.

Our kernel doesn't support system call name_to_handle_at (fs/fhandle.c, enabled by CONFIG_FHANDLE) and due to that systemd was thinking it is running in a container. Of course CONFIG_FHANDLE was in README file, under requirements :) 

Thanks

> -----Original Message-----
> From: Zbigniew Jędrzejewski-Szmek [mailto:zbyszek at in.waw.pl]
> Sent: den 13 januari 2014 14:38
> To: Umut Tezduyar Lindskog
> Cc: systemd-devel at lists.freedesktop.org
> Subject: Re: [systemd-devel] .device units are not showing up on git systemd
> 
> On Mon, Jan 13, 2014 at 10:37:58AM +0100, Umut Tezduyar Lindskog wrote:
> > Hi,
> >
> > .device units stopped showing up for me in git systemd since somewhere
> around mid-december. I have noticed that udevd and even udevadm
> monitor receives the kernel events but systemd itself never receives them.
> >
> > Further debugging, I have found out device_dispatch_io()
> (src/core/device.c) is never being called. It seemed like systemd binary is
> never aware of kernel events. I have proved this by:
> >
> > 1) strace -p 1
> > 2) udevadm monitor
> > 3) echo add > /sys/devices/platform/elk/net/eth0/uevent
> > 4) Looking at the output of strace, nothing is changed, it is still in epoll_wait.
> >     Process 1 attached - interrupt to quit
> >     clock_gettime(CLOCK_MONOTONIC, {1030, 364651245}) = 0
> >     epoll_wait(4,
> > 5) Looking at udevadm I can see the event being received.
> >     monitor will print the received events for:
> >     UDEV - the event which udev sends out after rule processing
> >     KERNEL - the kernel uevent
> >
> >     KERNEL[1064.673596] add      /devices/platform/elk/net/eth0 (net)
> >     UDEV  [1064.983686] add      /devices/platform/elk/net/eth0 (net)
> >
> > I have asked around in IIRC and seems like no one else is having the same
> problem. Before I further debug it, I wanted to check if something else might
> be stealing the epoll events from systemd or  if anyone else has a suggestion.
> 
> I'd use lsof to check that PID 1 has KOJBECT_UEVENT open, and then attach
> gdb to it is stored in the right places.
> 
> Zbyszek
Thanks Zbyszek for your advice.

Umut


More information about the systemd-devel mailing list