Re: FYI: Userland breakage caused by udev bind commit

From: Dmitry Torokhov
Date: Mon Dec 24 2018 - 04:23:04 EST


On Mon, Dec 24, 2018 at 10:12:29AM +0100, Greg KH wrote:
> On Sun, Dec 23, 2018 at 05:49:54PM +0100, Marcus Meissner wrote:
> > Hi,
> >
> > I am the maintainer of libmtp and libgphoto2
> >
> > Some months ago I was made aware of this bug:
> > https://bugs.kde.org/show_bug.cgi?id=387454
> >
> > This was fallout identified to come from this kernel commit:
> >
> > commit 1455cf8dbfd06aa7651dcfccbadb7a093944ca65
> > Author: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> > Date: Wed Jul 19 17:24:30 2017 -0700
> >
> > If distributions would be using libmtp and libgphoto2 udev rules
> > that just triggered on "add" events, and not the new "bind" events,
> > the missing "attribute tagging" of the "bind" events would confused the
> > KDE Solid device detection and make the devices no longer detected.
> >
> > This did not affect distributions that rely on the newer "hwdb"
> > device detection method.
> >
> > I have released fixed libmtp and libgphoto2 versions in November, so
> > this is under control, but wanted to bring this up as a "kernel caused
> > userland breakage".
>
> This is complex, sorry. When this first commit was merged, we did get
> some reports of problems, so we reverted it. Dmitry worked through the
> issues and then we added it back again.
>
> That was back in July of 2017, and since then, we had not heard of any
> problems that happened until this month, a very long time.
>
> So I really don't understand the root problem here, all of the distros
> that have been shipping kernels with this code for over a year didn't
> seem to have any issues. My systems never had any issues, and so I
> can't figure out what suddenly changed to cause problems.
>
> Was it the fact that we all are using distros that use hwdb? Who does
> _not_ use hwdb these days? Heck, I would have expected Debian to report
> problems as they are the ones that are known to use old userspace code
> with kernel developers using new kernels.
>
> So what changed to cause the problem recently?

I think this is new systemd that had my patch to handle bind/unbind
instead of ignoring them is catching up in distros. So:

- old systemd with old kernels OK
- old systemd with new kernels OK
- new systemd with old kernels OK
- new systemd with new kernels - NOT OK - losing tags on bind

Systemd folks merged my patch to disable bind/unbind again until we
teach it to no longer flush entire device state on each new uevent and
it should be well now.

Thanks.

--
Dmitry