freebsd kernel with SKQ
Go to file
Rick Macklem 4302e8b671 Modify the way the client side krpc does soreceive() for TCP.
Without this patch, clnt_vc_soupcall() first does a soreceive() for
4 bytes (the Sun RPC over TCP record mark) and then soreceive(s) for
the RPC message.
This first soreceive() almost always results in an mbuf allocation,
since having the 4byte record mark in a separate mbuf in the socket
rcv queue is unlikely.
This is somewhat inefficient and rather odd. It also will not work
for the ktls rx, since the latter returns a TLS record for each
soreceive().

This patch replaces the above with code similar to what the server side
of the krpc does for TCP, where it does a soreceive() for as much data
as possible and then parses RPC messages out of the received data.
A new field of the TCP socket structure called ct_raw is the list of
received mbufs that the RPC message(s) are parsed from.
I think this results in cleaner code and is needed for support of
nfs-over-tls.
It also fixes the code for the case where a server sends an RPC message
in multiple RPC message fragments. Although this is allowed by RFC5531,
no extant NFS server does this. However, it is probably good to fix this
in case some future NFS server does do this.
2020-06-21 00:06:04 +00:00
bin bin/ps: Make the rtprio option actually show realtime priorities 2020-06-19 09:27:58 +00:00
cddl ZFS: Allow setting checksum=skein on boot pools 2020-06-19 17:59:55 +00:00
contrib liblzma: Make liblzma use libmd implementation of SHA256. 2020-06-20 21:32:07 +00:00
crypto Merge OpenSSL 1.1.1g. 2020-04-21 19:38:32 +00:00
etc Restrict default /root permissions 2020-06-04 16:04:19 +00:00
gnu Remove now-unused GNU as build infrastructure 2020-06-07 13:53:23 +00:00
include Add pthread_getname_np() and pthread_setname_np() aliases for 2020-06-10 22:13:24 +00:00
kerberos5 Update Makefile.depend files 2019-12-11 17:37:53 +00:00
lib liblzma: Make liblzma use libmd implementation of SHA256. 2020-06-20 21:32:07 +00:00
libexec rtld: Apply relro to itself. 2020-06-18 23:07:58 +00:00
release release: Fix arm GPT image 2020-06-10 14:10:48 +00:00
rescue rescue: Remove useless linking with libl 2020-03-24 07:08:02 +00:00
sbin dump(8): Reapply slightly modified r362422 2020-06-20 20:14:50 +00:00
secure Install 32-bit libcrypto engines in /usr/lib32/engines instead of 2020-06-01 18:58:09 +00:00
share liblzma: Make liblzma use libmd implementation of SHA256. 2020-06-20 21:32:07 +00:00
stand loader: libofw build is missing sys/list.h after r362431 2020-06-20 08:22:57 +00:00
sys Modify the way the client side krpc does soreceive() for TCP. 2020-06-21 00:06:04 +00:00
targets libalias: retire cuseeme support 2020-05-16 02:29:10 +00:00
tests Make audit tests depend on /dev/auditpipe. This should fix 2020-06-18 15:41:16 +00:00
tools Move font related data structured to sys/font.c and update vtfontcvt 2020-06-14 06:58:58 +00:00
usr.bin join(1): Add EXAMPLES section 2020-06-20 11:27:59 +00:00
usr.sbin Allocate an fs_summary_info structure when creating a UFS filesystem 2020-06-19 23:32:40 +00:00
.arcconfig
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Cirrus-CI: increase timeout to 120m 2020-02-19 15:56:40 +00:00
.clang-format Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore .gitignore: Add LINT kernel configurations generated into SRCDIR 2019-08-10 18:22:22 +00:00
COPYRIGHT Happy New Year 2020! 2019-12-31 16:01:36 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS ice(4): Introduce new driver for Intel E800 Ethernet controllers 2020-05-26 23:35:10 +00:00
Makefile Use universe-toolchain config(8) 2020-04-29 02:18:39 +00:00
Makefile.inc1 Retire BINUTILS and BINUTILS_BOOTSTRAP options 2020-06-07 00:07:21 +00:00
Makefile.libcompat Stop building libl and liby 2020-03-26 08:23:09 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc Update opencsd to 0.14.2 2020-06-17 10:42:20 +00:00
README README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
README.md Import OpenCSD v0.14.2 2020-06-15 11:30:04 +00:00
RELNOTES Add an entry for r362158, r362163, which changes struct export_args. 2020-06-16 20:55:22 +00:00
UPDATING Add an entry to UPDATING for r362158. 2020-06-14 00:15:44 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html