Re: Why not make kdbus use CUSE?
flat view
From: Greg Kroah-Hartman <hidden>
Date: 2014-11-29 18:01:11
Also in:
lkml
On Sat, Nov 29, 2014 at 06:34:16AM +0000, Richard Yao wrote:
I had the opportunity at LinuxCon Europe to chat with Greg and some other kdbus developers. A few things stood out from our conversation that I thought I would bring to the list for discussion.
Any reason why you didn't respond to the kdbus patches themselves? Critiquing the specific code is much better than random discussions.
They regard a userland compatibility shim in the systemd repostory to provide backward compatibility for applications. Unfortunately, this is insufficient to ensure compatibility because dependency trees have multiple levels. If cross platform package A depends on cross platform library B, which depends on dbus, and cross platform library B decides to switch to kdbus, then it ceases to be cross platform and cross platform package A is now dependent on Linux kernels with kdbus. Not only does that affect other POSIX systems, but it also affects LTS versions of Linux.
What does LTS versions have anything to do here? And what specific dependancies are you worried about?
It is somewhat tempting to think that being in the kernel is necessary for performance, this does not appear to be true from my discussion with Greg and others. In specific, a key advantage of being in the kernel is a reduction in context switches and consequently, one would expect programs using the old API to benefit, but they were quite clear to me that programs using the old API do not benefit. At the same time, we had a similar situation where people thought that the httpd server had to be inside the kernel until Linux 2.6, when our userland APIs improved to the point where we were able to get similar if not better performance in userland compared to the implementation of khttpd in Linux 2.4.y.
Again, please see the kernel patches for lots of detail as to why this should be in the kernel. If you disagree with the specific statements I have listed there, please respond with specifics.
I started to think that we probably ought to design a way to put kdbus into userland and then I realized that we already have one in the form of CUSE. This would not only makes kdbus play nicely with SELinux and lxc, but also other POSIX systems that currently share dbus with Linux systems, which includes older Linux kernels. Greg claimed that the kdbus code was fairly self contained and was just a character device, so I assume this is possible and I am curious why it is not done.
The latest version is a filesystem not a character device, your information is out of date :)
P.S. I also mentioned my concern that having the shim in the systemd repository would have a negative effect on distributons that use alterntaive libc libraries because the systemd developers refuse to support alternative libc libraries. I mentioned this to one of the people to whom Greg introduced me (and whose name escapes me) as we were walking to Michael Kerrisk's talk on API design. I was told quite plainly that such distributions are not worth consideration. If kdbus is merged despite concerns about security and backward compatibility, could we at least have the shim moved to libc netural place, like Linus' tree?
Take that up on the systemd mailing list, it's not a kernel issue. greg k-h