freebsd with flexible iflib nic queues
Go to file
Justin T. Gibbs 8a8a3387fd Several enhancements to the Xen block back driver.
sys/dev/xen/blkback/blkback.c:
	o Implement front-end request coalescing.  This greatly improves the
	  performance of front-end clients that are unaware of the dynamic
	  request-size/number of requests negotiation available in the
	  FreeBSD backend driver.  This required a large restructuring
	  in how this driver records in-flight transactions and how those
	  transactions are mapped into kernel KVA.  For example, the driver
	  now includes a mini "KVA manager" that allocates ranges of
	  contiguous KVA to patches of requests that are physically
	  contiguous in the backing store so that a single bio or UIO
	  segment can be used to represent the I/O.

	o Refuse to open any backend files or devices if the system
	  has yet to mount root.  This avoids a panic.

	o Properly handle "onlined" devices.  An "onlined" backend
	  device stays attached to its backing store across front-end
	  disconnections.  This feature is intended to reduce latency
	  when a front-end does a hand-off to another driver (e.g.
	  PV aware bootloader to OS kernel) or during a VM reboot.

	o Harden the driver against a pathological/buggy front-end
	  by carefully vetting front-end XenStore data such as the
	  front-end state.

	o Add sysctls that report the negotiated number of
	  segments per-request and the number of requests that
	  can be concurrently in flight.

Submitted by:	kdm
Reviewed by:	gibbs
Sponsored by:	Spectra Logic Corporation
MFC after:	1 week
2011-06-13 20:36:29 +00:00
bin sh: Save/restore changed variables in optimized command substitution. 2011-06-12 23:06:04 +00:00
cddl Remove C constructs that are incompatible with C++ from various 2011-06-10 20:10:30 +00:00
contrib Add a new option -P to suppress getservbyport(3) calls when printing rules. 2011-06-13 20:11:28 +00:00
crypto Fix clang warning (why is there nowhere yyparse() is declared?). 2011-05-18 20:57:23 +00:00
etc Convert the allowed characters '-', '.', and ':' in a ZFS pool name to _ 2011-06-13 19:45:01 +00:00
games Minor typo, fix 2 attributions 2011-06-09 06:10:39 +00:00
gnu Simply post r222273. 2011-06-08 21:29:33 +00:00
include Vendor import of llvm trunk r132879: 2011-06-12 15:42:51 +00:00
kerberos5 Fix a typo. 2010-01-09 18:53:03 +00:00
lib Upgrade our copy of llvm/clang to r132879, from upstream's trunk. 2011-06-12 18:01:31 +00:00
libexec Compile RTLD with global dot symbols on 64-bit PowerPC, as a crutch for 2011-06-08 13:23:35 +00:00
release Add an MBR to our release media to aid booting some IBM systems. 2011-06-12 00:14:57 +00:00
rescue Finally... Import the latest open-source ZFS version - (SPA) 28. 2011-02-27 19:41:40 +00:00
sbin Implement fully asynchronous partial truncation with softupdates journaling 2011-06-10 22:48:35 +00:00
secure Upgrade to OpenSSH 5.8p2. 2011-05-04 07:34:44 +00:00
share Add self 2011-06-11 21:27:14 +00:00
sys Several enhancements to the Xen block back driver. 2011-06-13 20:36:29 +00:00
tools Vendor import of llvm trunk r132879: 2011-06-12 15:42:51 +00:00
usr.bin Using statfs.f_fstypename rather than statfs.f_type whilst performing fstype 2011-06-13 05:22:07 +00:00
usr.sbin Use alternative, less messy solution to avoid breakage after r223020: 2011-06-13 16:05:41 +00:00
COPYRIGHT Happy New Year 2011. 2010-12-31 18:07:16 +00:00
LOCKS
MAINTAINERS Encourage Ben Laurie to finish getting his commit bit by appointing him 2011-05-14 17:44:12 +00:00
Makefile Vendor import of llvm trunk r132879: 2011-06-12 15:42:51 +00:00
Makefile.inc1 Implement WITH{,OUT}_{GCC,BINUTILS} to provide finer-grained control 2011-05-19 05:13:25 +00:00
Makefile.mips Retire TARGET_ABI. 2011-01-07 20:26:33 +00:00
ObsoleteFiles.inc Upgrade our copy of llvm/clang to r130700, from upstream's trunk. 2011-05-02 21:04:37 +00:00
README Add the cddl/ directory. 2010-11-14 11:32:56 +00:00
UPDATING remove code for dynamic offlining/onlining of CPUs on x86 2011-06-08 08:12:15 +00:00

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

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, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


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.

games		Amusements.

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.

sys		Kernel sources.

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:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html