<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE report PUBLIC "-//FreeBSD//DTD FreeBSD XML Database for Status
Report//EN" "http://www.FreeBSD.org/XML/www/share/sgml/statusreport.dtd">
<!-- $FreeBSD$ -->
<report>
  <date>
    <month>January-March</month>

    <year>2010</year>
  </date>

  <section>
    <title>Introduction</title>

    <p>This report covers &os; related projects between January and
      March 2010.  Being the first of the four reports planned for 2010 with
      46 entries, it shows a good progress of the &os; Project and proves
      that our committers are keeping up with the latest trends in the OS
      development.  During this period, a new minor version of &os;,
      7.3-RELEASE, has been released, while the release process for
      8.1-RELEASE is soon to begin and is planned to be released later this
      summer.</p>

    <p>Thanks to all the reporters for their excellent work!  We hope you
      enjoy the reading.</p>

    <p>Please note that the deadline for submissions covering the
      period between April and June 2010 is July 15th, 2010.</p>
  </section>

  <category>
    <name>soc</name>

    <description>Google Summer of Code</description>
  </category>

  <category>
    <name>proj</name>

    <description>Projects</description>
  </category>

  <category>
    <name>team</name>

    <description>&os; Team Reports</description>
  </category>

  <category>
    <name>net</name>

    <description>Network Infrastructure</description>
  </category>

  <category>
    <name>kern</name>

    <description>Kernel</description>
  </category>

  <category>
    <name>docs</name>

    <description>Documentation</description>
  </category>

  <category>
    <name>bin</name>

    <description>Userland Programs</description>
  </category>

  <category>
    <name>arch</name>

    <description>Architectures</description>
  </category>

  <category>
    <name>ports</name>

    <description>Ports</description>
  </category>

  <category>
    <name>misc</name>

    <description>Miscellaneous</description>
  </category>

  <project cat="net">
    <title>Enhancing the &os; TCP Implementation</title>

    <contact>
      <person>
	<name>
	  <given>Lawrence</given>

	  <common>Stewart</common>
	</name>

	<email>lstewart@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://caia.swin.edu.au/freebsd/etcp09/" />

      <url href="http://caia.swin.edu.au/urp/newtcp/" />

      <url href="http://www.FreeBSDFoundation.org/projects.shtml" />

      <url
      href="http://people.FreeBSD.org/~lstewart/patches/tcp_ffcaia2008/" />
    </links>

    <body>
      <p>The ALQ(9) implementation and KPI has been rototilled and modified
	(one more patch needs to be committed) to support variable length
	messages.  In addition, it can now be compiled and loaded as a kernel
	module.</p>

      <p>With the ALQ changes in head, SIFTR can finally be imported.</p>

      <p>Reassembly queue autotuning is in the project branch and needs to
	be extracted as a patch people can easily test.</p>
    </body>

    <help>
      <task>Solicit external testing for and commit SIFTR.</task>

      <task>Solicit external testing for and commit reassembly queue
	autotuning patch.</task>
    </help>
  </project>

  <project cat="proj">
    <title>Modular Congestion Control</title>

    <contact>
      <person>
	<name>
	  <given>Lawrence</given>

	  <common>Stewart</common>
	</name>

	<email>lstewart@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://caia.swin.edu.au/urp/newtcp/" />

      <url
      href="http://svn.FreeBSD.org/viewvc/base/projects/tcp_cc_head/" />
    </links>

    <body>
      <p>I have just completed the last disruptive change to the KPI, which
	laid the groundwork to allow different congestion aware transports to
	share congestion control algorithms.  The import into the head branch
	is a big job and my time is limited, so progress will be slow and I
	will not have it done and ready to MFC by 8.1 as I had hoped.  I will
	aim to have it in 8.2 though.</p>
    </body>

    <help>
      <task>Solicit external testing.</task>

      <task>Commit to head.</task>
    </help>
  </project>

  <project cat="net">
    <title>(Virtual) Network Stack resource cleanup</title>

    <contact>
      <person>
	<name>
	  <given>Bjoern A.</given>

	  <common>Zeeb</common>
	</name>

	<email>bz@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>In February work was done to address resource leaks in the
	(virtual) network stack, especially on teardown.</p>

      <p>During that time also multiple general run-time problems and leaks
	were identified and fixed including leaked ipfw tables on module
	unload, routing entries leaked, in case of interfaces going away, as
	well as leaked link-layer entries in interaction with flowtable and
	timers.</p>

      <p>For virtual network stacks resources are are no longer allocated
	multiple times or freed upon teardown for eventhandlers, IP and upper
	level layers, like TCP syncache and host cache, flowtable, and
	especially radix/routing table memory.<br />
	In addition epair(4) was enhanced and debugging was improved.</p>

      <p>This work was sponsored by ISPsystem.</p>
    </body>

    <help>
      <task>Merge the remaining patches.</task>

      <task>Work on a better teardown model and get to the point where we
	can free UMA zones without keeping pages for type stability and
	timers around.</task>
    </help>
  </project>

  <project cat="soc">
    <title>Google Summer of Code 2010</title>

    <contact>
      <person>
	<name>
	  <given>Brooks</given>

	  <common>Davis</common>
	</name>

	<email>brooks@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Robert</given>

	  <common>Watson</common>
	</name>

	<email>rwatson@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://socghop.appspot.com/org/home/google/gsoc2010/freebsd">
	  &os; GSoC Homepage</url>

      <url href="http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/timeline">
	  GSoC Timeline</url>
    </links>

    <body>
      <p>We are once again participating in the Google Summer of Code.  This
	is our 6th year of participation and we hope to once again see great
	results from our students.  Currently applications have all been
	submitted and we are in the process of reviewing them.  Accepted
	students will be announced April 26th and coding officially begins
	May 24th.</p>
    </body>
  </project>

  <project cat="team">
    <title>Release Engineering Team</title>

    <contact>
      <person>
	<name>
	  <given>Release Engineering Team</given>
	</name>

	<email>re@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.FreeBSD.org/releng/" />
    </links>

    <body>
      <p>The Release Engineering Team announced &os;-7.3 on March 23rd,
	2010.  The schedule has been set for &os;-8.1 with the release date
	planned for mid July 2010.</p>
    </body>
  </project>

  <project cat="proj">
    <title>mfsBSD</title>

    <contact>
      <person>
	<name>
	  <given>Martin</given>

	  <common>Matuska</common>
	</name>

	<email>mm@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://mfsbsd.vx.sk" />
    </links>

    <body>
      <p>mfsBSD is a set of scripts that generate a bootable image (e.g. an
	ISO file) that creates a working minimal installation of &os; that is
	completely loaded into memory (mfs).</p>

      <p>The project has now reached a stable and well tested state. Images
	can be created from 8.0-RELEASE or 7.3-RELEASE ISO image files or
	from a custom makeworld.</p>

      <p>A new feature is a script called "zfsinstall" that automates a
	ZFS-only install of &os; from a mfsbsd ISO (script works with
	8-STABLE and 9-CURRENT, sample ISO images can be downloaded from the
	project web site).</p>
    </body>

    <help>
      <task>Bundle distribution installation files (target:
	8.1-RELEASE).</task>

      <task>Make zfsinstall 7.3 compatible (mostly gpart syntax).</task>

      <task>Enable zfsinstall combination with sysinstall (zfsinstall
	prepares drives, sysinstall installs distribution).</task>

      <task>Integrate toolset into &os; source (tools?).</task>
    </help>
  </project>

  <project cat="team">
    <title>The &os; Foundation</title>

    <contact>
      <person>
	<name>
	  <given>Deb</given>

	  <common>Goodkin</common>
	</name>

	<email>deb@FreeBSDFoundation.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.FreeBSDFoundation.org" />
    </links>

    <body>
      <p>We were proud to be a sponsor for AsiaBSDCon in March.  We also
	committed to sponsoring BSDCan 2010 and NYCBSDCon 2010.  We provided
	travel grants for AsiaBSDCon.</p>

      <p>We funded a project by Murray Stokely to provide Closed Captioning
	of &os; Technical Videos in the BSD Conferences YouTube Channel.  We
	were very pleased that the foundation funded HAST project
	completed.</p>

      <p>We solicited project proposals and were very pleased with the
	number of proposals we received.  With our project spending budget
	increase, we will be able to fund more projects this year.</p>

      <p>We grew our board of directors by adding Erwin Lansing.  This will
	expand our representation in Europe.  Erwin brings ports knowledge and
	expertise to the board.</p>

      <p>We continued our work on infrastructure projects to beef up
	hardware for package-building, network-testing, etc.</p>

      <p>Follow us on 
	<a href="https://twitter.com/freebsdfndation">Twitter</a>

      now!</p>

      <p>We are fund-raising for 2010 now! Find out more at 
	<a href="http://www.FreeBSDFoundation.org/donate/">
	    http://www.FreeBSDFoundation.org/donate/</a>.</p>
    </body>
  </project>

  <project cat="proj">
    <title>The tbemd branch</title>

    <contact>
      <person>
	<name>
	  <given>Warner</given>

	  <common>Losh</common>
	</name>

	<email>imp@bsdimp.com</email>
      </person>
    </contact>

    <body>
      <p>'tbemd' stands for Target Big Endian Must Die.  The current build
	systems requires that one define TARGET_BIG_ENDIAN for either big
	endian MIPS or big endian ARM processors.  There are many problems
	with this approach.  The resulting system will not create the proper
	binaries without TARGET_BIG_ENDIAN defined.  There is no easy way to
	know what the endian is of the system you are running.  There are
	many issues with ports, since they do not use bsd make, so do not
	pick up the extra flags that are added if TARGET_BIG_ENDIAN is
	defined.</p>

      <p>The tbemd branch seeks to fix this.  We will move from
	MACHINE_ARCH=mips for all mips platforms to MACHINE_ARCH=mipsel,
	mipseb, mips64eb and mips64el to match NetBSD's conventions.  These
	represent 32-bit mips little endian, 32-bit mips big endian, 64-bit
	mips big endian and 64-bit mips little endian respectively.  ARM will
	move to arm (little endian) and armeb (big endian), again following
	the standards set elsewhere.  To facilitate a number of different
	MACHINE_ARCHs all built from the same source, a new MACHINE_CPUARCH
	is introduced and represents the sources needed to build CPU support
	for a given MACHINE_ARCH.</p>

      <p>In addition, MACHINE_ARCH is overused in the build system today.
	Many of its uses are gratuitous and can be simplified.  Many of its
	uses do not scale well and need to be refactored into a system that
	will scale well.  A per MACHINE/MACHINE_ARCH/MACHINE_CPUARCH selection
	mechanism for makefile snippets will be introduced to move much of
	the current if spaghetti into more controlled lists.<br />
	The branch can build everything we currently support with the new
	names.</p>
    </body>

    <help>
      <task>Finish migrating to bsd.arch.inc.mk.</task>

      <task>Reduce diffs between the branch and the mainline before the
	collapse.</task>

      <task>Documentation needs to be written for how to use all of
	this.</task>
    </help>
  </project>

  <project cat="proj">
    <title>Out of Tree Toolchain</title>

    <contact>
      <person>
	<name>
	  <given>Warner</given>

	  <common>Losh</common>
	</name>

	<email>imp@bsdimp.com</email>
      </person>
    </contact>

    <body>
      <p>Work is underway to allow the &os; build system to use out of tree
	compilers and binary utililies (loaders, linkers, etc), especially in
	a cross compilation environment.  While it is possible to swap out the
	compiler with a compatible compiler relatively easily, swapping out
	the toolchain is more involved.  In addition, when using an external
	compiler to build the system, certain parts of buildworld can be
	omitted.</p>
    </body>

    <help>
      <task>Create ports for latest binutils.  This work is nearly complete,
	and is waiting for integration of two branches that are collapsing
	soon (the 'tbemd' branch from Warner and the mips collapse from Juli
	Mallet).</task>

      <task>Create ports for gcc.  This work has been started.  Native builds
	are straight forward, but cross builds have a buildworld dependency
	at the moment.  These dependencies are being worked out, as well as
	some gcc library dependencies.</task>

      <task>Documentation needs to be written for how to use all of
	this.</task>
    </help>
  </project>

  <project cat="ports">
    <title>Portmaster</title>

    <contact>
      <person>
	<name>
	  <given>Doug</given>

	  <common>Barton</common>
	</name>

	<email>dougb@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://dougbarton.us/portmaster-proposal.html" />
    </links>

    <body>
      <p>Portmaster version 2.22 is now in the ports tree and has full
	support for the following new features:</p>

      <ul>
	<li>Using the INDEX file to show that an installed port needs
	  updating.</li>

	<li>Support for installation of packages in 'try packages first,'
	  --packages-only, --packages-if-newer, and --packages-build
	  modes.</li>

	<li>A new --delete-build-only option to delete ports/packages that
	  are not needed at run time.</li>

	<li>Updating of the terminal title bar to show what is being worked
	  on, and how much more is left to do.</li>

	<li>Support for custom definitions of the packages repository and
	  INDEX files.</li>

	<li>The ability to operate without any local ports tree at all with
	  the --index-only and --packages-only options.</li>

	<li>A new dialog to confirm the list of ports to be installed.</li>
      </ul>

      <p>I am very excited about these new features, and owe a debt of
	gratitude to the companies and especially the individuals who stepped
	forward to support this work.  I literally could not have done it
	without them.</p>
    </body>

    <help>
      <task>There are still some interesting and oft-requested features
	listed on the proposal web site that I would really like to
	implement, including (but not limited to) downloading of all packages
	before beginning the installation, and writing out a script that can
	be re-run either on that machine, or on a set of identical
	machines.</task>
    </help>
  </project>

  <project cat="arch">
    <title>&os;/arm port for TI DaVinci</title>

    <contact>
      <person>
	<name>
	  <given>Jakub</given>

	  <common>Klama</common>
	</name>

	<email>jceel@semihalf.com</email>
      </person>
    </contact>

    <links>
      <url href="http://focus.ti.com/dsp/docs/dspplatformscontenttp.tsp?sectionId=2&amp;familyId=1300&amp;tabId=1854">
	  DaVinci on TI's site</url>

      <url href="http://p4web.FreeBSD.org/@md=d&amp;cd=//depot/user/jceel/davinci/">
	  Project branch in P4</url>
    </links>

    <body>
      <p>DaVinci (TMS320DM644x) is an ARM9-based system-on-chip family from
	Texas Instruments with built-in DSP core and powerful
	multimedia/video features.  This work is bringing support for &os; on
	these systems - it works in multiuser mode, using root filesystem
	mounted either via NFS or from SD/MMC card.  The code is available in
	P4 at //depot/user/jceel/davinci/.</p>

      <p>Current DaVinci support includes:</p>

      <ul>
	<li>Booting from U-Boot bootloader</li>

	<li>Serial console</li>

	<li>Interrupt controller</li>

	<li>Integrated timers</li>

	<li>Power and sleep controller</li>

	<li>10/100 Ethernet controller</li>

	<li>SD/MMC controller</li>
      </ul>
    </body>

    <help>
      <task>Remaining built-in peripherals drivers (USB, ATA, NAND flash,
	I2C, DMA engine, sound, video input/output).</task>

      <task>Framework for communicating with DSP core.</task>
    </help>
  </project>

  <project cat="proj">
    <title>NAND Flash framework for embedded &os;</title>

    <contact>
      <person>
	<name>
	  <given>Grzegorz</given>

	  <common>Bernacki</common>
	</name>

	<email>gjb@semihalf.com</email>
      </person>

      <person>
	<name>
	  <given>Rafal</given>

	  <common>Jaworowski</common>
	</name>

	<email>raj@semihalf.com</email>
      </person>
    </contact>

    <links>
      <url href="http://wiki.FreeBSD.org/NAND#head-9a32aaa85046b2f9f9219e36ba34947ca47a4153">
	  Project wiki pages</url>

      <url href="http://p4db.FreeBSD.org/changeList.cgi?FSPC=//depot/projects/nand2/...">
	  Project P4 branch</url>
    </links>

    <body>
      <p>The purpose of this project is to provide embedded &os; with a
	generic and flexible scheme to support NAND Flash devices.  The
	framework provides a set of KOBJ interfaces inside the kernel, which
	allow for uniform and flexible management of the NAND devices:</p>

      <ul>
	<li>NAND Flash Controller (NFC) layer, into which back-end drivers
	  for individual controllers plug in (implementing low-level routines
	  specific to a given NAND controller)</li>

	<li>Generic (common) NAND layer which provides means to perform
	  operations on the flash devices in an abstract way (read, program,
	  erase, get status etc.)</li>

	<li>NAND character device, which exports chip device as a standard
	  character device and allows to read/write directly to a device, as
	  well as perform other specific operations by using ioctl.</li>

	<li>GEOM NAND class for basic access through GEOM.</li>
      </ul>

      <p>Part of the infrastructure is a full system simulator of
	ONFI-compliant devices (NANDsim), with a userland control application.
	This allows for exercising of the framework on platforms without real
	NAND chips.</p>

      <p>Current state highlights:</p>

      <ul>
	<li>The framework is considered functionally complete (including
	  NANDsim).</li>

	<li>Framework compliant back-end drivers are available for the
	  following NAND Flash controller (NFC) chips:</li>

	<ul>
	  <li>Freescale MPC8572 (PowerPC)</li>

	  <li>Marvell MV-78100 (ARM)</li>

	  <li>Samsung S3C24X0 (ARM)</li>
	</ul>
      </ul>
    </body>

    <help>
      <task>Extend interface with features / options suggested by early
	adopters of the code.</task>

      <task>Complete, clean up, merge with HEAD.</task>
    </help>
  </project>

  <project cat="ports">
    <title>Ports Collection</title>

    <contact>
      <person>
	<name>
	  <given>Thomas</given>

	  <common>Abthorpe</common>
	</name>

	<email>portmgr-secretary@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Port</given>

	  <common>Management Team</common>
	</name>

	<email>portmgr@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.FreeBSD.org/ports/" />

      <url href="http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributing-ports/" />

      <url href="http://portsmon.FreeBSD.org/index.html" />

      <url href="http://www.FreeBSD.org/portmgr/index.html" />

      <url href="http://tinderbox.marcuscom.com/" />
    </links>

    <body>
      <p>Most of quarter one was spent dealing with the 7.3-RELEASE
	process.  With apparent success enforcing Feature Safe ports commits
	during the 8.0-RELEASE, it was continued for the recent src/
	freeze.</p>

      <p>The ports count now exceeds 21,500 ports, and counting.  The open
	PR count currently is over 1000.  With the release of &os; 7.3, it is
	hoped this count will drop drastically.</p>

      <p>Since the last report, we added four new committers, and had an
	old committer rejoin us.</p>

      <p>With the donation of an Apple Xserve, powerpc builds have resumed.
	Renewed interest in ia64 has brought about new ports builds.  A new
	sparc64 machine hosted by skreuser will help us with this build.</p>

      <p>The Ports Management team have been running -exp runs on an
	ongoing basis, verifying how src code updates may affect the ports
	tree, as well as providing QA runs for major ports updates.  Of note
	-exp runs were done for; gabor's BSD licensed bc/dc in src/, mva's
	OpenAL and SDL upgrades; brooks' removal of NGROUPS; ed's removal of
	libcompat and regexp.h; dinoex's jpeg update; a test run for m4
	update; jilles' update for sh(1); johans' update for bison; and
	roam's curl update.</p>
    </body>

    <help>
      <task>Looking for help fixing 
      <url link="http://wiki.FreeBSD.org/PortsBrokenOnCurrent">ports broken
	on CURRENT</url>.</task>

      <task>Looking for help with 
	<url link="http://wiki.FreeBSD.org/PortsBrokenOnTier2Architectures">
	    Tier-2 architectures</url>.</task>

      <task>Most ports PRs are assigned, we now need to focus on testing,
	committing and closing.</task>

      <task>Major commits expected soon include the latest Xorg, KDE4, and
	Gnome updates.</task>
    </help>
  </project>

  <project cat="kern">
    <title>IPv6 without legacy IP kernel</title>

    <contact>
      <person>
	<name>
	  <given>Bjoern A.</given>

	  <common>Zeeb</common>
	</name>

	<email>bz@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://p4web.FreeBSD.org/@md=d&amp;cd=//&amp;c=MNx@//depot/user/bz/noinet/src/sys/?ac=83">
	  P4 workspace</url>
    </links>

    <body>
      <p>During 2009 work was done that allowed us to build a &os; kernel
	without INET and without INET6 (again).  This work was the foundation
	for a prototype to get a kernel to compile and boot with only INET6
	but no INET compiled in earlier this year.</p>

      <p>The current focus is to identify general
	architectural problems and dependencies we do have between these two
	address families as well as with the upper layer protocols.  This will
	at some point allow us to discuss the issues and seek solutions,
	preparing for a future where we can remove either INET or INET6 from
	the system.</p>

      <p>Once we will have a stable, in-tree way to compile out either
	address family, optimizations wrt. size, as well as user space
	will need to be worked on.  In addition to this, the work is believed
	to help should we further head in the direction of network stack
	modularization.</p>
    </body>
  </project>

  <project cat="kern">
    <title>geom_sched</title>

    <contact>
      <person>
	<name>
	  <given>Luigi</given>

	  <common>Rizzo</common>
	</name>

	<email>luigi@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Fabio</given>

	  <common>Checconi</common>
	</name>

	<email>fabio@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://info.iet.unipi.it/~luigi/geom_sched/" />
    </links>

    <body>
      <p><b>geom_sched</b> is a GEOM module that supports pluggable schedulers
	for disk I/O requests.  The main algorithm supported at the moment is
	an anticipatory Round Robin scheduler, which is especially effective
	in presence of workloads with highly random disk accesses.  Other
	schedulers are available on the <a
	  href="http://info.iet.unipi.it/~luigi/geom_sched/">geom_sched</a>
	page.</p>

      <p>Developed in early 2009 and refined as a GSOC2009 project,
	geom_sched has been recently introduced in HEAD and is going to be
	soon merged to stable/8.  A version for stable/7 also exists, with
	some restrictions.</p>

      <p>To use the module, say on disk <b>ad4</b>, all you need to do
	is:</p>

<pre>
kldload geom_sched
geom sched insert ad4
</pre>

      <p>A number of sysctl variables under kern.geom.sched allow you to
	tune the parameters of the algorithm, or bypass the scheduler
	entirely so you can tell the difference of behaviour with and without
	the scheduler.</p>
    </body>
  </project>

  <project cat="net">
    <title>Experimental NFS subsystem (NFSv4)</title>

    <contact>
      <person>
	<name>
	  <given>Rick</given>

	  <common>Macklem</common>
	</name>

	<email>rmacklem@uoguelph.ca</email>
      </person>
    </contact>

    <body>
      <p>Although the bare bones of the NFS Version 4 support was released
	in &os; 8.0, the integration has been progressing slowly and support
	should be functional for &os; 8.1 for RFC3530 (NFS Version 4.0).</p>

      <p>Post &os; 8.1, I believe the focus will be on code cleanup and,
	under a projects area of svn, some experimental work on aggressive
	whole file caching to client disk.</p>
    </body>

    <help>
      <task>Handling of delegations on the server w.r.t. local processes
	running on the server.</task>

      <task>Integration of recent changes to the regular NFS client, such
	as Dtrace support.</task>
    </help>
  </project>

  <project cat="kern">
    <title>Rewrite of &os; read/write path using vnode page</title>

    <contact>
      <person>
	<name>
	  <given>Konstantin</given>

	  <common>Belousov</common>
	</name>

	<email>kib@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Peter</given>

	  <common>Holm</common>
	</name>

	<email>pho@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://svn.freebsd.org/viewvc/base/user/kib/vm6/">Branch for
	  the rewrite</url>

      <url href="http://wiki.FreeBSD.org/VM6" />
    </links>

    <body>
      <p>Based on the idea of Jeff Roberson, we reimplemented the path for
	read(2)/write(2) syscalls using page cache (in wide sense) to
	eliminate the issues with recursive vnode and buffer lock
	acquisitions.  The usual reads and writes are no longer calls into
	VOP_READ/VOP_WRITE; the operation is done by copying user buffers to
	or from the pages of the vnode.  This fixes known deadlocks when reads
	or writes are done over file-mmaped buffers.</p>

      <p>The patch changes the performance characteristics of I/O, and we
	observed both better and worse behaviour.  If filesystem implements
	VOP_GETPAGES and VOP_PUTPAGES without referencing buffer cache,
	buffers are completely eliminated from the i/o path (not true for UFS
	or NFS).</p>
    </body>

    <help>
      <task>We need wider testing and reviews.</task>
    </help>
  </project>

  <project cat="bin">
    <title>&os; port for libunwind</title>

    <contact>
      <person>
	<name>
	  <given>Konstantin</given>

	  <common>Belousov</common>
	</name>

	<email>kib@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.nongnu.org/libunwind/" />
    </links>

    <body>
      <p>The alpha version of libunwind library port for &os; x86 and
	x86_64 is completed and imported into the official libunwind git
	repository.  Libunwind is the library to perform dynamic unwinding of
	stacks, using dwarf call frame information.  The library features
	remote unwinding using ptrace(2), very fast setjmp(3) implementation
	and more interesting features.</p>
    </body>
  </project>

  <project cat="arch">
    <title>&os;/mips on D-Link DIR-320</title>

    <contact>
      <person>
	<name>
	  <given>Alexandr</given>

	  <common>Rybalko</common>
	</name>

	<email>ray@dlink.ua</email>
      </person>
    </contact>

    <links>
      <url href="http://wiki.ddteam.net/wiki.cgi?page=DIR-320+FreeBSD" />
    </links>

    <body>
      <p>&os;/mips has been ported to D-Link DIR-320, wireless router based
	on BCM5354 SoC.  Project aims to providing several working images
	tailored for different purposes (profiles).  So far 
	<a href="http://ipsec-tools.sourceforge.net/">racoon</a>
	based router-ipsec image is available.</p>
    </body>

    <help>
      <task>bfeswitch configuration utility.</task>

      <task>Add router profile.</task>

      <task>Add wifi-router profile.</task>

      <task>Add openvpn-router profile.</task>
    </help>
  </project>

  <project cat="net">
    <title>ipfw and dummynet enhancements</title>

    <contact>
      <person>
	<name>
	  <given>Luigi</given>

	  <common>Rizzo</common>
	</name>

	<email>luigi@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://info.iet.unipi.it/~luigi/dummynet/">main dummynet
	  page</url>

      <url href="http://www.youtube.com/watch?v=r8vBmybeKlE">youtube video
	  on dummynet internals</url>

      <url href="http://info.iet.unipi.it/~luigi/qfq/">Description of the
	  qfq scheduler</url>
    </links>

    <body>
      <p>We have recently completed a massive revision of ipfw and
	dummynet, and the result has been committed to HEAD and stable/8.
	The main features introduced with this work are:</p>

      <ul>
	<li>ipfw now has much faster skipto instructions, including
	  table-based ones.  The complexity for rule lookups is now O(1) or
	  O(log N) as opposed to the O(N) that we had before.  People using
	  "skipto tablearg" or "pipe tablearg" with large numbers of rules or
	  pipes should see a significant performance improvement;</li>

	<li>Expensive operations in response to userland reconfigurations
	  now do not interfere with kernel filtering for more than the time
	  required to swap a pointer;</li>

	<li>You can now use ports and the "tos" field as lookup argument
	  for tables.  This might allow some simplifications in rulesets which
	  in turn result in faster execution time;</li>

	<li>ipfw can now send packets matching rules with a 'log' attribute
	  to the "ipfw0" pseudo interface, where you can run tcpdump to
	  implement additional filtering, logging etc.;</li>

	<li>dummynet now supports many different scheduler types, to adapt
	  to different needs people may have in terms of performance and
	  service guarantees.  Existing schedulers now include FIFO, WF2Q+,
	  Deficit Round Robin, Priority, and QFQ.  More schedulers can be
	  implemented as loadable kernel modules.;</li>

	<li>The kernel side has a backward-compatible interface so you can
	  use a RELENG_7 or RELENG_8 version of /sbin/ipfw to configure the
	  firewall and dummynet.</li>
      </ul>
    </body>

    <help>
      <task>There is ongoing work on optimizing the deletion of idle
	entries in dummynet.  This should be completed shortly.</task>

      <task>A longer term goal is to parallelize operation in presence of
	ipfw dynamic rules, which currently require exclusive lock on a hash
	table containing dynamic rules.</task>
    </help>
  </project>

  <project cat="arch">
    <title>&os;/sparc64</title>

    <contact>
      <person>
	<name>
	  <given>Marius</given>

	  <common>Strobl</common>
	</name>

	<email>marius@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <ul>
	<li>Yet another bug causing unaligned accesses in NFS server
	  operation has been found and fixed in &os; 7 and 8.  Unlike as
	  announced in the last Status Report, no Erratum Notices regarding
	  these problems have been issued as it quickly became obvious
	  that dealing with so many of them is impractical, especially
	  since the fixes unveiled secondary bugs.</li>

	<li>Alexander Motin has fixed several bugs in netgraph(4) nodes in
	  9.0-CURRENT which also caused unaligned accesses, so these should
	  work now on sparc64.</li>

	<li>Peter Jeremy has contributed several fixes for the sparc64 FPU
	  emulation code, which now passes a test suite built around
	  TestFloat.  These fixes were incorporated into &os; 6, 7 and 8
	  but unfortunately did not quite make it into 7.3-RELEASE but will
	  be present in 8.1-RELEASE and 7.4-RELEASE.</li>

	<li>Support for UltraSPARC-IV and -IV+ CPUs has been added and will
	  be present in 8.1-RELEASE and 7.4-RELEASE.  Thus Sun Fire V890 is
	  now supported and stable, though due to the lack of properly working
	  test hardware, not with configurations consisting of a mix of US-IV
	  and -IV+ CPUs.  However, performance is not yet where it should be,
	  i.e. a buildworld on a 4x1.5GHz US-IV+ Sun Fire V890 takes nearly 3
	  hours while on a Sun Fire V440 with (theoretically) less powerful
	  4x1.5GHz US-IIIi CPUs it takes just over 1 hour.  So far it is
	  unclear what is causing this, it might have to with what appears to
	  be a silicon bug of US-IV+ CPUs encountered and worked around while
	  adding support for these.</li>

	<li>Work on getting Sun Fire V1280 supported has been continued.
	  A third firmware bug has been worked around and a driver for
	  the BootBus controller, which provides console and time-of-day
	  services in these machines, has been written.  It is now possible to
	  netboot Sun Fire V1280 into multi-user mode.  Unfortunately, they do
	  not run stable as processes may hang when transitioning to another
	  CPU, likely due to what the OpenSolaris code refers to as Cheetah+
	  erratum 25, but which unfortunately is not part of the publicly
	  available US-III+/++ errata document.  Efforts on understanding this
	  problem are still ongoing.</li>

	<li>Mark Linimon is trying to find volunteers interested in helping
	  to fix packages on sparc64.</li>
      </ul>
    </body>
  </project>

  <project cat="proj">
    <title>Chromium web browser</title>

    <contact>
      <person>
	<name>
	  <given>sprewell</given>
	</name>

	<email>chromium@jaggeri.com</email>
      </person>
    </contact>

    <links>
      <url href="http://chromium.jaggeri.com">Main chromium site</url>

      <url href="http://wiki.FreeBSD.org/Chromium">Build instructions for
	  older patches</url>
    </links>

    <body>
      <p>Chromium is a Webkit-based web browser that is mostly BSD
	licensed.  It works very well on &os; and even supports new features
	like HTML 5 video.  I have started offering subscriptions to fund the
	porting effort to &os;, funding which has already paid to fix
	Chromium on BSD-i386.  I am using a new funding model where
	subscriptions pay for development that is kept closed for at most 1
	year, after which all patches used in a build are released to
	subscribers under the same BSD license as Chromium.  Also, parts of
	the closed patches are continually pushed upstream, 
	<a href="http://codereview.chromium.org/1543003">the BSD i386 fix has
	already been committed upstream</a>.
	The goal is to fund Chromium development on BSD while continually
	pushing patches back to the BSD-licensed Chromium project.  I will
	spin off a Chromium port for ports soon, for those who do not mind
	using an older, stable build that does not have all the paid features
	in the subscriber builds.  You can read about 
	<a href="http://chromium.jaggeri.com/issues">the issues that a
	subscription would pay for, such as replacing the ALSA audio backend
	with OSS</a>, and
	<a href="http://chromium.jaggeri.com/subscriptions">find out more
	about subscribing</a>.</p>
    </body>
  </project>

  <project cat="docs">
    <title>The &os; Hungarian Documentation Project</title>

    <contact>
      <person>
	<name>
	  <given>G&aacute;bor</given>

	  <common>K&ouml;vesd&aacute;n</common>
	</name>

	<email>gabor@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>G&aacute;bor</given>

	  <common>P&aacute;li</common>
	</name>

	<email>pgj@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.FreeBSD.org/hu/">Hungarian &os; Web Pages</url>

      <url href="http://www.FreeBSD.org/doc/hu/">Hungarian &os;
	  Documentation</url>

      <url href="http://wiki.FreeBSD.org/HungarianDocumentationProject">The
	  &os; Hungarian Documentation Project's Web Page</url>

      <url href="http://p4web.FreeBSD.org/@md=d&amp;cd=//depot/projects/docproj_hu/&amp;c=aXw@//depot/projects/docproj_hu/?ac=83">
	  The &os; Hungarian Documentation Project's Perforce Repository</url>
    </links>

    <body>
      <p>We restlessly keep the existing documentation and web page
	translations up to date.  However, this will not last forever, and
	help is always welcome, so if you feel yourself Hungarian with some
	interests in translation, please contact our Documentation Project
	via the email addresses noted above.</p>
    </body>

    <help>
      <task>Translate release notes.</task>

      <task>Translate articles.</task>

      <task>Translate web pages.</task>

      <task>Read translations, send feedback.</task>
    </help>
  </project>

  <project cat="arcj">
    <title>&os;/mips on Octeon</title>

    <contact>
      <person>
	<name>
	  <given>Juli</given>

	  <common>Mallett</common>
	</name>

	<email>jmallett@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://svn.FreeBSD.org/base/user/jmallett/octeon/">
	  Subversion branch</url>
    </links>

    <body>
      <p>Significant progress has been made in terms of stabilizing the
	uniprocessor Octeon port and adding support for MIPS ABIs other than
	o32 in the toolchain, rtld, libc and the kernel.  Kernels built to the
	n32 ABI are currently supported with changes that will not be merged
	because they make invasive changes throughout the system with regard
	to db_expr_t and register_t, which are larger than a pointer in the
	n32 ABI.  Once support for n64 kernels is completed (including the
	ability to run n32 worlds) and the n32 hacks are removed, the branch
	will be suitable for merging.  Many nearby cleanups have occurred,
	particularly in the area of TLB and pmap code.</p>
    </body>

    <help>
      <task>An import of select pieces of the Cavium simple executive as
	vendor code is planned to make it possible to remove
	locally-maintained copies of Cavium headers and shim functions, many
	of which are vastly outdated.</task>

      <task>The Linux opencrypto port contains an opencrypto driver for the
	cryptographic coprocessor which look relatively easy to port.</task>

      <task>Support for SMP is a high-priority item that will be addressed
	after the 64-bit changes are stabilized.</task>

      <task>PCI and USB bus and device support is planned to follow the
	import of the simple executive functions and headers.</task>

      <task>The rgmx ethernet driver currently copies packets in and out of
	mbufs rather than putting pointers to mbuf storage into hardware,
	which results in bad network performance.</task>
    </help>
  </project>

  <project cat="kern">
    <title>Dynamic Ticks in &os;</title>

    <contact>
      <person>
	<name>
	  <given>Tsuyoshi</given>

	  <common>Ozawa</common>
	</name>

	<email>ozawa@t-oza.net</email>
      </person>
    </contact>

    <links>
      <url href="http://github.com/oza/FreeBSD-8.0-dyntick">Project page
	  (github).</url>

      <url href="http://tsuyoshiozawa.blogspot.com/2010/03/started-to-implement-dynticks-in.html">
	  My weblog article which describes benchmark of dynamic ticks.</url>
    </links>

    <body>
      <p>I wrote experimental code (please see my project page) and threw
	patch ( http://gist.github.com/350230 ) to freebsd-hackers.  A lot of
	&os; hackers gave me precious advice, so I am going to reflect it as
	a next step.</p>
    </body>

    <help>
      <task>Run hard/stat/prof-clocks irregularly (in progress).</task>

      <task>Some timers which are added after the kernel's scheduling next
	timer interrupt may be ignored (BUG).</task>

      <task>Make callout queue have the tick when the next timer event rise
	up.</task>
    </help>
  </project>

  <project cat="docs">
    <title>The &os; German Documentation Project</title>

    <contact>
      <person>
	<name>
	  <given>Johann</given>

	  <common>Kois</common>
	</name>

	<email>jkois@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Benedict</given>

	  <common>Reuschling</common>
	</name>

	<email>bcr@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://doc.bsdgroup.de" />
    </links>

    <body>
      <p>Our last status report listed a number of documents that needed
	help.  Thanks to the external contributions of Frank Boerner we were
	able to update a substantial amount of documents.  This has resulted
	in a great reduction of our backlog.  Subsequently, Benedict has
	agreed to take Frank under mentorship for the German doc project.  We
	are looking forward to his future contributions and thank him for his
	past efforts.</p>

      <p>Johann was busy keeping the German website in sync with updates to
	FreeBSD.org.  However, there are still parts of the website that
	remain untranslated.  We are looking for more support in maintaining
	the German website.</p>

      <p>&os; users with German language skills are always welcome to join
	our efforts in translating the documentation and/or fixing bugs.</p>
    </body>

    <help>
      <task>Translate more parts of the documentation and the German
	website.</task>

      <task>Keep the current documentation up to date.</task>

      <task>Report bugs to <a href="mailto:de-bsd-translators@de.FreeBSD.org">
	  de-bsd-translators@de.FreeBSD.org</a>.</task>
    </help>
  </project>

  <project cat="ports">
    <title>QAT</title>

    <contact>
      <person>
	<name>
	  <given>Ion-Mihai</given>

	  <common>Tetcu</common>
	</name>

	<email>itetcu@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Josh</given>

	  <common>Paetzel</common>
	</name>

	<email>jpaetzel@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>QAT has been running on a single server for about two years now
	and has proven very effective at catching problems with ports
	commits.  Many of the problems it cannot catch are architecture or
	branch related.  By moving QAT to a VMware box capable of running
	arbitrary versions of &os; on both amd64 and i386 this limitation
	will be removed.</p>
    </body>

    <help>
      <task>Bring VMware server online and provision VMs.</task>

      <task>Refactor QAT code to handle concurrent builds.</task>

      <task>Migrate the existing QAT to the new setup.</task>
    </help>
  </project>

  <project cat="kern">
    <title>CAM-based ATA implementation</title>

    <contact>
      <person>
	<name>
	  <given>Alexander</given>

	  <common>Motin</common>
	</name>

	<email>mav@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>Work on CAM-based ATA implementation continues.  Since last report
	handling of heavy errors and timeouts was improved, Hot-plug now
	works for both Host and Port Multiplier ports.  Series of changes were
	made to CAM to fix some old issues and honor some new ATA
	demands.</p>

      <p>New drivers ahci(4) and siis(4) got some fixes and are quite
	stable now.  "options ATA_CAM" kernel option shows good results in
	supporting other controllers using existing ata(4) drivers, so it is
	possible to start deprecating old ata(4) APIs now.</p>

      <p>Started work on new Marvell SATA driver for both PCI-X/PCIe cards
	and ARM System-on-Chip SATA controllers.  It is expected to support
	NCQ, Port Multipliers with FIS-based switching and other new
	features.</p>

      <p>Most of the code is present in 8-STABLE.</p>
    </body>

    <help>
      <task>Port ataraid(4) functionality to GEOM module.</task>

      <task>Write SAS-specific transport and drivers for SAS HBAs (specs
	wanted).  SAS controllers can support SATA devices and multipliers, so
	it should fit nicely into new infrastructure.</task>
    </help>
  </project>

  <project cat="kern">
    <title>Multichannel playback in HDA sound driver (snd_hda)</title>

    <contact>
      <person>
	<name>
	  <given>Alexander</given>

	  <common>Motin</common>
	</name>

	<email>mav@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>snd_hda(4) audio driver got real multichannel playback support.  It
	now supports 4.0 (quadro), 5.1 and 7.1 analog speaker setups.  Digital
	multichannel AC3/DTS passthrough was already implemented earlier.
	Digital multichannel LPCM output via HDMI could also be possible now,
	but is not tested.</p>

      <p>To use multichannel playback you should have fresh 8-STABLE
	kernel, instruct sound(4) vchans subsystem (if you are using it)
	about your speaker setup using dev.pcm.X.play.vchanformat sysctls and
	use your audio/video player application to play multichannel audio
	content without down-mixing it to stereo.</p>
    </body>

    <help>
      <task>HDMI/DisplayPort often require some audio support from X11
	video drivers.  This area still should be investigated and tested,
	especially relayed to multichannel LPCM playback.</task>
    </help>
  </project>

  <project cat="team">
    <title>&os; Bugbusting Team</title>

    <contact>
      <person>
	<name>
	  <given>Gavin</given>

	  <common>Atkinson</common>
	</name>

	<email>gavin@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Mark</given>

	  <common>Linimon</common>
	</name>

	<email>linimon@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Remko</given>

	  <common>Lodder</common>
	</name>

	<email>remko@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Volker</given>

	  <common>Werth</common>
	</name>

	<email>vwe@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.FreeBSD.org/support.html#gnats">GNATS</url>

      <url href="http://wiki.FreeBSD.org/BugBusting">BugBusting</url>

      <url href="http://people.FreeBSD.org/~linimon/studies/prs/">
	  experimental report pages</url>

      <url href="http://people.FreeBSD.org/~linimon/studies/prs/recommended_prs.html">
	  PRs recommended for committer evaluation by the bugbusting team</url>

      <url href="http://people.FreeBSD.org/~linimon/recommended_subscribers.txt">
	  (subscription list for the above report)</url>

      <url href="http://people.FreeBSD.org/~linimon/studies/prs/easy_prs.html">
	  PRs considered 'easy' by the bugbusting team (these are low-hanging
	  fruit)</url>

      <url href="http://people.FreeBSD.org/~linimon/studies/prs/prs_for_all_groups.html">
	  summary chart of PRs with tags</url>

      <url href="http://wiki.FreeBSD.org/AssigningPRs">Assigning PRs</url>
    </links>

    <body>
      <p>Bruce Cran (brucec) has graduated from GNATS-only access to having
	a src commit bit.  He has been making commits to help us catch up with
	the PR backlog.  Thanks!</p>

      <p>We continue to classify PRs as they arrive, adding 'tags' to the
	subject lines corresponding to the kernel subsystem involved, or man
	page references for userland PRs.  These tags, in turn, produce lists
	of PRs sorted both by tag and by manpage.  The most recent use of
	these tags is the creating of a new report, Summary Chart of PRs With
	Tags, which sorts tagged PRs into logical groups such as filesystem,
	network drivers, libraries, and so forth.  The slice labels are
	clickable.  The chart is updated once a day.  You can consider it as a
	prototype for browsing "sub-categories" of kernel PRs.</p>

      <p>The "recommended list" has been split up into "non-trivial PRs
	which need committer evaluation" and the "easy list" of trivial PRs,
	to try to focus some attention on the latter.</p>

      <p>New reports were added for "PRs which are from &os; vendors or
	OEMs", "PRs containing code for new device drivers", and "PRs
	referencing other BSDs".  These will primarily be of interest to
	committers.</p>

      <p>Some other bitrot on the "experimental PR reports" pages has been
	fixed.</p>

      <p>It is now possible for interested parties to be emailed a weekly,
	customized, report along the lines of the above.  If you are
	interested in setting one up, contact <a
	  href="mailto:linimon@FreeBSD.org">linimon@FreeBSD.org</a>.</p>

      <p>The overall PR count has recently jumped to around 6400.  This may
	be due to increasing uptake of &os; 8.</p>

      <p>Our clearance rate of PRs, especially in kern and bin, seems to be
	improving.</p>

      <p>Mark Linimon polled various committers about their interest in
	specific PRs. As a result, the AssigningPRs page on the wiki and the
	src/MAINTAINERS file were updated based on feedback.</p>

      <p>As always, anybody interested in helping out with the PR queue is
	welcome to join us in #freebsd-bugbusters on EFnet.  We are always
	looking for additional help, whether your interests lie in triaging
	incoming PRs, generating patches to resolve existing problems, or
	simply helping with the database housekeeping (identifying duplicate
	PRs, ones that have already been resolved, etc).  This is a great way
	of getting more involved with &os;!</p>
    </body>

    <help>
      <task>We will be having a bugbusting session at BSDCan.  If you are
	developer who will be attending the conference, please stop
	by.</task>

      <task>try to find ways to get more committers helping us with closing
	PRs that the team has already analyzed.</task>
    </help>
  </project>

  <project cat="arch">
    <title>&os;/ia64</title>

    <contact>
      <person>
	<name>
	  <given>Mark</given>

	  <common>Linimon</common>
	</name>

	<email>linimon@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>The stability of the machines under package build has been
	improved by a number of recent commits.  Some rework is underway to
	run with WITNESS.  However, we are still limited in the number of
	simultaneous packages that can be built.</p>

      <p>Based on this, we have completed the first full ia64-8 package
	build.  17187 were built (as compared to 19885 on a recent i386-8.)
	Mark Linimon has gone through the results to denote which packages do
	not build.  A few fixes have already been committed based on this.</p>

      <p>We currently have 3 available machines that are stable enough for
	package builds.</p>

      <p>Support for the SGI Altix 350 has made its start.  Porting is done
	on 2 SGI Altix 350 machines connected with NUMAFlex, giving a total
	of 4 CPUs and 24GB of DDR.  The kernel boots with code on the
	projects/altix branch but since ACPI does not enumerate PCI busses,
	no hardware devices are found.  SMP has been disabled because waking
	up the APs result in a machine check.</p>
    </body>

    <help>
      <task>Continue to try to understand why multiple simultaneous package
	builds bring the machines down.</task>

      <task>Upgrade the firmware on the two machines at Yahoo! to see if
	that helps the problem.</task>

      <task>Figure out why the fourth machine is not stable.</task>

      <task>Configure a fifth machine that has been made available to
	us.</task>

      <task>Figure out the problems with the latest gcc port.</task>

      <task>We need documentation about the SGI SAL implementation to speed
	up porting to the SGI Altix 350.</task>

      <task>The loader and kernel need to change to allow the kernel to be
	loaded at a runtime-determined physical address as well as add
	support for NUMA.</task>
    </help>
  </project>

  <project cat="arch">
    <title>&os;/powerpc</title>

    <contact>
      <person>
	<name>
	  <given>Nathan</given>

	  <common>Whitehorn</common>
	</name>

	<email>nwhitehorn@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>An Apple XServe G5 has been donated by Peter Grehan for package
	building.  Based on the last two months' worth of testing, a large
	number of commits have been made to increase stability.</p>

      <p>We have completed the first full powerpc-8 package build.  Only
	10918 were built (as compared to 19885 on a recent i386-8), primarily
	due to a few high-impact packages failing (such as lang/python25).
	Mark Linimon has gone through the results to denote which packages do
	not build.  A few fixes have already been committed based on this; we
	have patches that are being tested in the next run.</p>

      <p>Mark Linimon is working on getting us more XServes.</p>
    </body>

    <help>
      <task>Start the hard work of fixing individual packages.</task>
    </help>
  </project>

  <project cat="bin">
    <title>LDAP support in base system</title>

    <contact>
      <person>
	<name>
	  <given>Xin</given>

	  <common>ZHAO</common>
	</name>

	<email>quakelee@geekcn.org</email>
      </person>

      <person>
	<name>
	  <given>Xin</given>

	  <common>LI</common>
	</name>

	<email>delphij@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>&os; is currently lacking support of LDAP based authentication and
	user identity.</p>

      <p>We have integrated a stripped down 
	<a href="http://www.openldap.org/">OpenLDAP</a>
	library (renamed to avoid conflict with ports OpenLDAP libraries), as
	well as some changes to OpenSSH as well as plugins for PAM, NSS and
	can support.</p>

      <p>We have used several existing works and updated them to use new
	OpenLDAP API, fixed several bugs and integrated them together.  All
	these works are under BSD or similar license and our new work would be
	under 2-clause BSD license.  Currently, we support storing user
	identity, password and SSH public keys in LDAP tree.</p>
    </body>

    <help>
      <task>Further code review.</task>

      <task>Make the changes less intrusive.</task>

      <task>Fix issues found in production deployment.</task>
    </help>
  </project>

  <project cat="proj">
    <title>EFI support for &os;/i386</title>

    <contact>
      <person>
	<name>
	  <given>Rui</given>

	  <common>Paulo</common>
	</name>

	<email>rpaulo@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>Work on supporting EFI booting on &os;/i386 resumed.  The boot
	loader can now read an ELF file from the EFI FAT partition.  We are
	now working on trying to boot a kernel.</p>
    </body>
  </project>

  <project cat="arch">
    <title>&os;/powerpc64 port</title>

    <contact>
      <person>
	<name>
	  <given>Nathan</given>

	  <common>Whitehorn</common>
	</name>

	<email>nwhitehorn@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>A full 64-bit PowerPC port of &os; is now complete, and should
	shortly be merged to HEAD, likely first appearing in &os; 9.0.  This
	port supports SLB-based 64-bit server CPUs, such as the IBM POWER4-7,
	PowerPC 970 (G5), and Cell Broadband Engine.  Current machine support
	is limited to Apple single and dual processor G5 systems, with future
	support planned for IBM Power Systems servers and the Sony
	PlayStation 3.</p>
    </body>
  </project>

  <project cat="net">
    <title>net80211 rate control framework</title>

    <contact>
      <person>
	<name>
	  <given>Rui</given>

	  <common>Paulo</common>
	</name>

	<email>rpaulo@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://people.FreeBSD.org/~rpaulo/ratectl.diff" />
    </links>

    <body>
      <p>The net80211 (wireless) stack will support a modular rate control
	framework soon.  The idea is to reduce some code in the drivers and
	add more rate control algorithms in the tree.  All drivers that do
	rate control in software will automatically benefit from this
	project.  On this stage, we are working on changing all the necessary
	drivers to cope with the new framework and making sure it all works
	as expected.  Later this year we will bring the necessary changes to
	change the rate control algorithm with ifconfig(1).</p>

      <p>If you are doing rate control algorithm or research on rate
	control algorithms for wireless networks, &os; is now an ideal
	candidate for testing your project!</p>
    </body>
  </project>

  <project cat="net">
    <title>802.11n support</title>

    <contact>
      <person>
	<name>
	  <given>Rui</given>

	  <common>Paulo</common>
	</name>

	<email>rpaulo@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>802.11n support in the Atheros driver is being worked on.  Right
	now it can do AMPDU RX in software and we are working on TX AMPDU.
	The code lives in a private Perforce branch, but some bits of it are
	already committed to HEAD.</p>

      <p>This work is being sponsored by iXsystems, inc.</p>
    </body>
  </project>

  <project cat="net">
    <title>Atheros AR9285 support</title>

    <contact>
      <person>
	<name>
	  <given>Rui</given>

	  <common>Paulo</common>
	</name>

	<email>rpaulo@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>Atheros AR9285 support was added to &os; HEAD and 8-STABLE.  There
	are still some issues but in general it works fine.</p>
    </body>
  </project>

  <project cat="proj">
    <title>webcamd</title>

    <contact>
      <person>
	<name>
	  <given>Hans Petter</given>

	  <common>Selasky</common>
	</name>

	<email>hselasky@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.selasky.org/hans_petter/video4bsd/" />
    </links>

    <body>
      <p><B>Webcamd</B>
	is a userland daemon that enables use of hundreds of different USB
	based Linux device drivers under the &os;-8/9 operating system.
	Current focus has been on USB webcam and USB DVB-T/S/C devices.
	It is also possible to use the webcamd framework to make other Linux
	kernel USB devices work under the &os;-8/9 operating system, without
	violating the GPL license.  The daemon currently depends on libc,
	pthreads, libusb and libcuse4bsd.  Cuse4BSD is a new character device
	from userland implementation that fully supports open, read, write,
	ioctl, mmap and close file operations.</p>

      <p>If you like this project or want me to spend more time on it, you
	can support it by transferring money to hselasky@c2i.net via
	paypal.</p>
    </body>

    <help>
      <task>Testing and bugfixes.</task>

      <task>Add support for more device drivers.</task>
    </help>
  </project>

  <project cat="misc">
    <title>meetBSD 2010 -- The BSD Conference</title>

    <contact>
      <person>
	<name>
	  <given>meetBSD</given>

	  <common>Information</common>
	</name>

	<email>info@meetbsd.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.meetbsd.org" />
    </links>

    <body>
      <p>meetBSD is an annual event gathering users and developers of the
	BSD operating systems family, mostly &os;, NetBSD and OpenBSD.  Afer
	the special California edition, meetBSD Wintercamp in Livigno, this
	year we are back to Krakow, Poland.</p>

      <p>meetBSD 2010 will be held on 2-3 July at Jagiellonian
	University.</p>

      <p>See the conference main web site for more details.</p>
    </body>
  </project>

  <project cat="kern">
    <title>ZFS</title>

    <contact>
      <person>
	<name>
	  <given>Pawel Jakub</given>

	  <common>Dawidek</common>
	</name>

	<email>pjd@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Martin</given>

	  <common>Matuska</common>
	</name>

	<email>mm@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Xin</given>

	  <common>LI</common>
	</name>

	<email>delphij@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://perforce.FreeBSD.org/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs">
	  Perforce tree for latest ZFSv25 work</url>

      <url href="http://hub.opensolaris.org/bin/view/Community+Group+zfs/WebHome">
	  OpenSolaris ZFS homepage</url>
    </links>

    <body>
      <p>The ZFS file system has been updated to version 14 on both -HEAD
	and 8-STABLE.  Ongoing work is undergoing to bring bug fixes and
	performance improvements from upstream svn -HEAD to approximately ZFS
	v15 in the near future, and a full upgrade of ZFS to version 24
	including the de-duplication functionality, etc.  The de-duplication
	functionality is currently partly supported, which is demonstrated
	below:</p>

<pre>
# uname -sr
FreeBSD 9.0-CURRENT
# zpool create tank ad{4,6,8,10}
# zpool get version tank
NAME  PROPERTY  VALUE    SOURCE
tank  version   24       default
# zfs set dedup=on tank
# dd if=/dev/random of=/tank/rand0 bs=1m count=1024
# zpool get allocated,dedupratio tank
NAME  PROPERTY    VALUE  SOURCE
tank  allocated   1.00G  -
tank  dedupratio  1.00x  -
# dd if=/tank/rand0 of=/tank/rand1 bs=1m
# dd if=/tank/rand0 of=/tank/rand2 bs=1m
# dd if=/tank/rand0 of=/tank/rand3 bs=1m
# zpool get allocated,dedupratio tank
NAME  PROPERTY    VALUE  SOURCE
tank  allocated   1.01G  -
tank  dedupratio  4.00x  -
</pre>
    </body>

    <help>
      <task>Bring ZFS v15 changes to svn -HEAD and MFC.</task>

      <task>Further polish the code in perforce and test for functionality,
	etc.</task>
    </help>
  </project>

  <project cat="proj">
    <title>Clang replacing GCC in the base system</title>

    <contact>
      <person>
	<name>
	  <given>Ed</given>

	  <common>Schouten</common>
	</name>

	<email>ed@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Roman</given>

	  <common>Divacky</common>
	</name>

	<email>rdivacky@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Brooks</given>

	  <common>Davis</common>
	</name>

	<email>brooks@FreeBSD.org</email>
      </person>

      <person>
	<name>
	  <given>Pawel</given>

	  <common>Worach</common>
	</name>

	<email>pawel.worach@gmail.com</email>
      </person>
    </contact>

    <links>
      <url href="http://wiki.FreeBSD.org/BuildingFreeBSDWithClang" />

      <url href="http://lists.FreeBSD.org/pipermail/FreeBSD-current/2010-April/016648.html" />
    </links>

    <body>
      <p>Since the last status report we got to the state where we are able
	to build all of &os; (the C and C++ bits) on i386/amd64 with clang.
	The only exception is the bootloader which does not fit within the
	given size constraint.  This is where the current efforts are going
	on.  The C++ part got a big boost now being able to compile all C++
	code in &os; and itself.</p>

      <p>We saw some movement on Mips and PowerPC.  Mips got its driver
	definitions from Oleksander Tymoshenko and Nathan Whitehorn did the
	same for PowerPC and tested the kernel.  Currently, the PPC kernel
	seems to boot but due to lack of va_arg implementation for PowerPC
	nothing is printed out.  Nathan is working on that.</p>

      <p>Overall ClangBSD is selfhosting on i386/amd64 and some progress
	has been made on PowerPC/PPC.  We also saw some contribution to the
	Sparc64 but this seems to have stalled.</p>

      <p>We need people to try out ClangBSD (see the wiki) and runtime test
	it.  We also would appreciate help with other archs - namely ARM.</p>
    </body>

    <help>
      <task>Runtime test ClangBSD on amd64/i386.</task>

      <task>Help with ARM/Mips/Sparc64.</task>

      <task>More testing of clang on 3rd party apps (ports).</task>

      <task>Discussion on integrating LLVM/clang into &os;.</task>
    </help>
  </project>

  <project cat='kern'>
    <title>SUJ: Journaled Softupdates</title>

    <contact>
      <person>
	<name>
	  <given>Jeff</given>
	  <common>Roberson</common>
	</name>
	<email>jeff@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://jeffr_tech.livejournal.com/" />
    </links>

    <body>
      <p>The soft-updates journaling project is nearing completion and will
	be available in head by the time this status report is released.
	Backports to other releases are maintained in <a
	  href="svn://svn.FreeBSD.org/base/projects/suj">SVN</a>.  SUJ is
	fully backwards compatible with non-journaled softupdates.  Existing
	systems will not be affected.  Journaling may be enabled and disabled
	by tunefs on unmounted filesystems.  Journaling provides near-instant
	filesystem recovery after crash at the expense of some runtime
	performance and extra disk I/O.</p>
    </body>
  </project>

  <project cat='proj'>
    <title>PC-BSD PC-SysInstall Backend</title>

    <contact>
      <person>
	<name>
	  <given>Kris</given>
	  <common>Moore</common>
	</name>
	<email>kmoore@FreeBSD.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.pcbsd.org" />
      <url href="http://trac.pcbsd.org/browser/pcbsd/trunk/pc-sysinstall">
	  pc-sysinstall in Trac</url>
    </links>

    <body>
      <p>We are currently doing a lot of code cleanup in the new System
	Installer backend for PC-BSD, pc-sysinstall, which can be used to
	install regular &os; as well.  Some new features have already been
	implemented, such as:</p>

      <ul>
	<li>Improved ZFS support, raidz, mirroring, multiple mount-points
	  per-pool, etc.</li>
	<li>Support for GPT/EFI on "Full" installations, allowing us to go
	  beyond the 2TB barrier.</li>
	<li>MBR Slice/Partition manager.</li>
	<li>geli passphrase support.</li>
      </ul>
    </body>

    <help>
      <task>We are mostly finished migrating to only using gpart instead of
	fdisk, which gives us some new functionality for dealing with GPT/EFI
	partitioning schemes.</task>
   </help>
  </project>

  <project cat='net'>
    <title>TCP/UDP connection groups</title>

    <contact>
      <person>
	<name>
	   <given>Robert</given>
	   <common>Watson</common>
	</name>
	<email>rwatson@FreeBSD.org</email>
      </person>
      <person>
	<name>
	   <common>&os; network mailing list</common>
	</name>
	<email>freebsd-net@FreeBSD.org</email>
      </person>
    </contact>

    <body>
      <p>This on-going project is to reduce tcbinfo/udbinfo lock and cache
	line contention; this global lock protects access to connection lists,
	and while it is a read-write lock, it is acquired for every in-bound
	packet (briefly) to look up the connection.  This project adds a new
	connection group table, which assigns connections to groups, each of
	which has CPU affinity and aligns with RSS-selected queues in high-end
	1gbps and most 10gbps implementations. The following tasks have been
	completed:</p>
         
      <ul>
	<li>Teach libkvm to handle dynamic per-cpu storage (DPCPU) to improve
	  crashdump analysis of per-CPU data.</li>
	<li>Teach netstat to monitor netisr DPCPU queues for live kernels and
	  crashdumps.</li>
	<li>Create a new inpcbgroup abstraction, used for UDP and TCP.</li>
	<li>Distribute UDP and TCP connections (inpcbs) over groups based on
	  4-tuple bindings.</li>
	<li>Replicate membership across all groups for wildcard socket
	  bindings.</li>
	<li>Write new TCP/UDP connection and binding regression tests.</li>
      </ul>
         
      <p>The following tasks remain:</p>
         
      <ul>
	<li>Migrate from naive work assignment algorithm to RSS
	  assignment.</li>
	<li>Modify device driver KPI to allow consistent initialization and
	  configuration between stack and hardware.</li>
	<li>Complete migration to dynamic, per-CPU network statistics in TCP,
	  UDP, and IP.</li>
	<li>Add socket options to query effective CPU affinity of connections
	  from userspace.</li>
	<li>On supporting hardware, allow affinity for a specific connection
	  to be explicitly migrated using a socket option.</li>
	<li>Detailed performance evaluation and optimization.</li>
      </ul>
         
      <p>This work is being performed in the &os; Perforce repository, and
	is sponsored by Juniper Networks.  Connection groups and related
	features are slated for inclusion in &os; 9.0 (with possible
	backports to 8-STABLE of some features).</p>
    </body>
  </project>

  <project cat='misc'>
    <title>BSDCan 2010 &mdash; The BSD Conference</title>

    <contact>
      <person>
	<name>
	  <given>BSDCan Information</given>
	</name>
	<email>info@BSDCan.org</email>
      </person>
    </contact>

    <links>
      <url href="http://www.BSDCan.org/2010/" />
      <url href="http://www.BSDCan.org/2010/schedule/">Tutorials and Talks Schedule</url>
    </links>

    <body>
      <p>BSDCan, a BSD conference held in Ottawa, Canada, has quickly
	established itself as the technical conference for people
	working on and with 4.4BSD based operating systems and related
	projects.  The organizers have found a fantastic formula that
	appeals to a wide range of people from extreme novices to
	advanced developers.</p>

      <p>BSDCan 2010 will be held on 13-14 May 2010 at the University of
	Ottawa, and will be preceded by two days of Tutorials on 11-12
	May 2010.</p>

      <p>There will be related events (of a social nature, for the most
	part) on the day before and after the conference.</p>

      <p>Please check the conference web site for more information.</p>
    </body>
  </project>
</report>
