165
Linux 6.6's in-kernel SMB networking server graduates
(www.theregister.com)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
Even if it was tested extensively, why would I want to run any server in the kernel?
I guess this is to get some kind of parity with nfsd
Yeah, another thing where I never understood why it was in the kernel.
Yeah, not sure about that either. Unless you have some kind of use case where you need every bit of performance out of this, this stuff belongs in user space.
And if performance was an issue, just throw more/better hardware at it.
The above text says that the aim is to do RDMA, to let the NIC access memory directly, but I'd think that existing Linux zero-copy interfaces would be sufficient for that.
https://en.wikipedia.org/wiki/Zero-copy
So I'd think that the target workload has to be one where you can't just fetch a big chunk of pre-existing data, where you have to interject server-generated data in response to small requests, and even the overhead of switching to userspace to generate some kind of server-generated response is too high.
Which seems like a heck of a niche case.
But it obviously got approval from the kernel team.
googles
https://www.kernel.org/doc/html/next/filesystems/smb/ksmbd.html
I guess you could accelerate open and close too.
In all seriousness, I feel like if you're in such a niche situation that you can't afford the overhead of going to userspace for that, (a) there's likely room to optimize your application to request different things and (b) CIFS might not be the best option to be sharing data over the network either.
Oh, so the attack surface is much bigger than I realized. The NIC is probably the last thing I'd want writing directly to memory and bypassing the kernel.
I guess none of this will be enabled in desktop distros or even the majority of server distros...right?
I was under the impression this is already the norm for network equipment because the vast amount of data is no longer processable by the kernel. In fairness though that equipment most likely doesn't really consume the data but rather just forwards.
Shouldn't
io_uring
solve the issues with speed between usermode and kernelmode?Or your distro could just have samba installed by default.
I know, and I agree that it is a pain, however this sort of thing really doesn't belong in the kernel for most use cases
And there will likely be many distros that compile this server as a kernel module and package it separately, so even inclusion in the kernel doesn't necessarily save you from defaults that don't fit you well.