FreeBSD Status Report April-June, 2010

FreeBSD Quarterly Status Report


This report covers FreeBSD-related projects between April and June
2010. It is the second of the four reports planned for 2010, and
contains 47 entries. During this period, a lot of work has gone into
the development of new minor version of FreeBSD, 8.1-RELEASE, which
should be released within days.

Thanks to all the reporters for the excellent work! We hope you enjoy

Please note that the deadline for submissions covering the period
between July and September 2010 is October 15th, 2010.

Google Summer of Code

* Binary Package Patch Infrastructure -- pkg_patch
* Collective Resource Limits (aka. Jobs)
* ExtFS Status Report
* File System Changes Notification
* Google Summer of Code 2010
* Making Ports Work with Clang
* Namecache Improvements -- dircache
* Package Management Library -- libpkg
* Packet-Capturing Stack -- ringmap


* Clang Replacing GCC in the Base System
* DAHDI/FreeBSD Project
* Distributed Audit
* General-Purpose DMA Framework
* GEOM-Based Pseudo-RAID Implementation -- geom_pseudoraid
* GPIO Framework
* New System Installer -- pc-sysinstall
* OpenAFS Port
* Resource Containers
* V4L Support in Linux Emulator

FreeBSD Team Reports

* FreeBSD Bugbusting Team
* FreeBSD Core Team Election
* Release Engineering Team
* The FreeBSD Foundation Status Report

Network Infrastructure

* Enhancing the FreeBSD TCP Implementation
* libnetstat(3)


* Interrupt Threads
* Jail-Based Virtualization
* Kernel Event Timers Infrastructure


* The FreeBSD German Documentation Project
* The FreeBSD Hungarian Documentation Project
* The FreeBSD Japanese Documentation Project
* The FreeBSD Spanish Documentation Project

Userland Programs

* BSD-Licensed grep in Base System
* BSD-Licensed iconv in Base System
* FreeBSD Services Control -- fsc


* Flattened Device Tree for Embedded FreeBSD
* FreeBSD on the Sony Playstation 3
* FreeBSD/avr32
* FreeBSD/powerpc64
* FreeBSD/sparc64


* Chromium Web Browser
* FreeBSD Haskell
* Ports Collection


* BSD-Day@2010
* BSDCan
* meetBSD 2010 -- The BSD Conference

Binary Package Patch Infrastructure -- pkg_patch


Contact: Ivan Voras <ivoras@xxxxxxxxxxx>

The pkg_patch project is about creating a binary package patch
infrastructure which would allow users to patch their live system's
packages in an easy and efficient way. It is a C program written to
interface with libpkg (for things which are common to all pkg
utilities) meant to be included in the base system when it is done. It
comes with built-in mass patch creation and application commands. It is
funded by Google Summer of Code 2010.

Open tasks:

1. Finish the project.
2. Get some testing for it.
3. Convince the Port Management Team it is actually a Good Thing to
have even as an experimental feature.
4. Agree upon the policy on which package patches will be created
(i.e. from which point in time to which point in time), assuming
the "stable" package tree idea has still not gotten traction.



Contact: Gábor Páli <pgj@xxxxxxxxxxx>

The purpose of this one-day event is to gather Central European
developers of today's open-source BSD systems to popularize their work
and their organization, and to provide an interface for real-life
communication. There are no formalities, no papers, and no registration
or participation fee. However the invited developers are encouraged to
give a talk on their favorite BSD-related topic or join the live forum,
then have a beer with the other folks around. The goal is to motivate
potential future developers and users, especially undergraduate
university students to work with BSD systems.

This year's BSD-Day will be held in Budapest, Hungary at Eötvös Loránd
University, Faculty of Informatics on November 20, 2010.

Open tasks:

1. Apply as a developer, we are still looking for BSD people in the

BSD-Licensed grep in Base System


Contact: Gábor Kövesdán <gabor@xxxxxxxxxxx>

A portbuild test showed that grep is basically ready to enter HEAD, but
there were a few failures that seem to be related. These have to be
investigated and fixed before committing grep to 9-CURRENT.

Open tasks:

1. Investigate and fix some minor issues.

BSD-Licensed iconv in Base System


Contact: Gábor Kövesdán <gabor@xxxxxxxxxxx>

The work has been completed and the GNU compatibility levels seems to
be quite high. One exception is the fallback support. It is difficult
to implement that facility in this implementation because the design is
somewhat different. Probably, it will not be a big problem because that
functionality is not even documented in the GNU version so few
applications might use it.

Open tasks:

1. Run a portbuild test and solve possible problems that show up.



Contact: Dan Langille <dvl@xxxxxxxxxxx>

BSDCan 2010 was our 7th conference. As has become the custom, a FreeBSD
developer summit was held in the two days before the conference. Record
numbers attended the Dev Summit which carried over into the conference
proper. It was great to see representatives from so many more
companies. I saw many great ideas take root and the start of
cooperation on several projects.

The talks during the Dev Summit are beginning to attract a wider
audience, and we have been talking about opening this up to the general
audience by creating a fourth track at BSDCan 2011.

As impossible as it sounds, each year has seen an increase in the
quality of talks and the number of proposals submitted.

Open tasks:

1. I need people to help with various pre-conference tasks: website
updates, booking travel, etc.

Chromium Web Browser


Contact: Ruben <chromium@xxxxxxxxxxxxxxxx>

Chromium is a Webkit-based web browser that is largely BSD-licensed. It
works very well on FreeBSD and supports new features like HTML 5 video.
This effort uses a new hybrid-source model, where the FreeBSD patches
are largely kept closed for a limited time. I submitted Chromium to
ports a couple of months ago and recently updated the submission to the
stable 5.0.375 branch. The port is ready to be committed pending final
legal approval by the FreeBSD Foundation. Further work remains to port
Chromium to FreeBSD completely, such as porting the task manager fully
and making sure extensions work properly.

Clang Replacing GCC in the Base System


Contact: Ed Schouten <ed@xxxxxxxxxxx>
Contact: Roman Divacky <rdivacky@xxxxxxxxxxx>
Contact: Brooks Davis <brooks@xxxxxxxxxxx>
Contact: Pawel Worach <pawel.worach@xxxxxxxxx>

In the past quarter we imported Clang into FreeBSD and it is being
built by default on i386/amd64/powerpc. We have not yet commited the
necessary changes to let world compile with Clang.

Some bugs and warnings were fixed in HEAD as a result of the Clang
import and people are exploring more and more areas (DTrace, etc).
There are some bug fixes in Clang/LLVM as well that stem from the
import (unknown pragmas warnings, etc).

Roman Divacky and Matthew Fleming are working on ELF writer in LLVM.
This is meant as a replacement for assembler (currently we use an
outdated GNU as(1)). This work is progressing nice, currently it is
able to produce working variants of hello world in C and C++, and some
other small programs from "configure run".

Open tasks:

1. Import of newer Clang/LLVM into HEAD.
2. Help with ARM/MIPS/SPARC64.
3. Start pushing src patches into HEAD.
4. More testing of Clang on third-party applications (ports).
5. More work on the ELF writer.

Collective Resource Limits (aka. Jobs)


Contact: Gábor Kövesdán <gabor@xxxxxxxxxxx>

The SGI IRIX operating system has a concept, called job, which is used
to group processes together and then apply resource limits on them. The
purpose of this project is to implement this facility on FreeBSD.

I spent most of the time familiarizing myself with how things are done
inside the kernel, how syscalls work, etc. So far, I have the basic
understanding needed and I added the most important syscalls to group
processes together into jobs and manipulate collective resource limits
on them.

There is a bug, which I am tracking down at the moment, after this I
can start to implement actual resource limit enforcement. For some of
the limit types, it will be relatively easy but some others will take
more effort and studies.

Open tasks:

1. Fix the showstopper bug, which prevent me working on actual limit
2. Implement limit enforcements for all of the limits supported by
3. Add support for userland facilities and make utilities jobs-aware,
like showing jobs in ps(1), etc.

DAHDI/FreeBSD Project


Contact: Max Khon <fjoe@xxxxxxxxxxxxxx>

The purpose of DAHDI/FreeBSD project is to make it possible to use
FreeBSD as a base system for software PBX solutions.

DAHDI (Digium/Asterisk Hardware Device Interface) is an open-source
device driver framework and a set of hardware drivers for E1/T1, ISDN
digital, and FXO/FXS analog cards [1]. Asterisk is one of the most
popular open-source software PBX solutions [2].

The project includes porting DAHDI framework and hardware drivers for
E1/T1, FXO/FXS analog, and ISDN digital cards to FreeBSD. This also
includes TDMoE support, software and HW echo cancellation (Octasic,
VPMADT032), and hardware transcoding support (TC400B). The work is
ongoing in the official DAHDI SVN repository with the close
collaboration with DAHDI folks at Digium.

The project is nearing completion. The DAHDI framework and hardware
drivers telephony cards have been ported and tested. There are a number
of success stories from early adopters who have been using E1/T1 and
FXO/FXS cards on FreeBSD for several months.

Distributed Audit


Contact: Sergio Ligregni <ligregni@xxxxxxxxxxx>

90% of the functionality is working, the daemons sync two systems in a
master-slave paradigm.

Open tasks:

1. Standardize the code to meet FreeBSD requirements.
2. Implement SSL in network communication.
3. Perform security improvements and bug fixing, strlxxx() functions,
memcpy() instead of strcpy() when using non-char variables.
4. Integrate with the current Audit subsystem.

Enhancing the FreeBSD TCP Implementation


Contact: Lawrence Stewart <lstewart@xxxxxxxxxxx>

SIFTR was recently imported into HEAD and will be backported to
8-STABLE in time to be included in 8.2-RELEASE.

TCP reassembly queue autotuning will be ready for public testing within
the next week and will be committed soon after. It too will be
backported to 8-STABLE after an appropriate burn in period.

Open tasks:

1. Try SIFTR out and let me know if you run into any problems.
2. Solicit external testing for and commit the reassembly queue
autotuning patch.

ExtFS Status Report


Contact: Zheng Liu <gnehzuil@xxxxxxxxx>

This project has two goals: pre-allocation algorithm and ext4 read-only

The aim of pre-allocation algorithm is to implement a reservation
window mechanism. Now this mechanism has been introduced. The
performance comparison can be found on the wiki.

The aim of ext4 read-only mode is to make it possible to read ext4 file
system in read-only mode when the hard disk is formatted with default
features. Currently it only supports a few features, such as extents,
huge_file. Others features will be added, such as dir_index, uninit_bg,
dir_nlink, flex_bg and extra_isize. My work resides in extfs and ext4fs
branch of Perforce.

File System Changes Notification

Contact: Ilya Putsikau <iputsikau@xxxxxxxxx>

The aim of the project is to implement an inotify-compatible file
system change notification mechanism for FreeBSD and later, and add
inotify support to linuxulator. The result, fsnotify is already
functional but not yet compatible with inotify in some details.

Open tasks:

1. Add access permissions checks.
2. Port inotify test cases.
3. Fix compatibility issues.
4. Add linuxulator support.

Flattened Device Tree for Embedded FreeBSD


Contact: Rafal Jaworowski <raj@xxxxxxxxxxxx>

The purpose of this project was to provide FreeBSD with support for the
Flattened Device Tree (FDT) technology. A mechanism for describing
computer hardware resources, which cannot be probed or self enumerated,
in a uniform and portable way. The primary consumers of this technology
are embedded FreeBSD platforms (ARM, MIPS, PowerPC), where a lot of
designs are based on similar chips, but have different assignment of
pins, memory layout, addresses ranges, interrupts routing and other

Current state highlights:
* All code and documentation developed during the course of this
project was merged with HEAD, which covers FDT support for the
following platforms and systems:
* Marvell ARM
+ DB-88F5182
+ DB-88F5281
+ DB-88F6281
+ DB-78100
+ SheevaPlug
* Freescale PowerPC
+ MPC8555CDS
+ MPC8572DS
* The FDT infrastructure (bus drivers, helper libraries, and routines
shared across architectures and platforms) allows for easier
porting to new platforms or variations. The initially supported
systems offer a working example of how to migrate towards FDT

Work on this project was sponsored by the FreeBSD Foundation.

Open tasks:

1. Improve how-to and guidelines for new adopters (how to convert to
FDT and so on).
2. Migrate more existing embedded FreeBSD platforms (ARM, MIPS) to FDT

FreeBSD Bugbusting Team


Contact: Gavin Atkinson <gavin@xxxxxxxxxxx>
Contact: Mark Linimon <linimon@xxxxxxxxxxx>
Contact: Remko Lodder <remko@xxxxxxxxxxx>
Contact: Volker Werth <vwe@xxxxxxxxxxx>

After a long hiatus, we aim to hold a bugathon on the weekend of the
6th - 9th August. Everybody is welcome to help resolve or progress PRs
from the database. We appreciate the help of committers and
non-committers alike, please join us on IRC in #freebsd-bugbusters on
EFnet if you are free at any time over that weekend and can help.
Please see the "Bugathon" URL for more information.

Mark Linimon and Gavin Atkinson held a session on the State of
Bugbusting at BSDCan, which was well attended and led to some
interesting discussions. Time was also found to sit down with several
committers to discuss long-standing PRs.

The bugbusting team continue work on trying to make the GNATS PR
database more accessible and easier for committers to find and resolve

As a result, PRs continue to be classified as they arrive, by adding
'tags' to the subject lines corresponding to the kernel subsystem
involved, or man page references for userland PRs. Reports are
generated from these nightly, grouping related PRs in one place, sorted
by tag or man page. Mark Linimon continues work on producing a new
report, Summary Chart of PRs with Tags, which sorts tagged PRs into
logical groups such as file system, network drivers, libraries, and so
forth. The slice labels are clickable and may further subdivide the
groups. The chart is updated once a day. You can consider it as a
prototype for browsing "subcategories" of kernel PRs.

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. Various new reports exist,
including "PRs containing code for new device drivers", "PRs which are
from FreeBSD vendors or OEMs", and "PRs referencing other BSDs".

It is now possible for interested parties to be emailed a weekly,
customized, report similar in style to the above. If you are interested
in setting one up, contact linimon@xxxxxxxxxxxx

Our clearance rate of PRs, especially in kern and bin, seems to be
improving. The number of non-ports PRs has stayed almost constant since
the last status report.

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 FreeBSD!

Open tasks:

1. Plan and manage the bugathon in August, and get as many people as
possible interested in participating.
2. Try to find ways to get more committers helping us with closing PRs
that the team has already analyzed.

FreeBSD Core Team Election

Contact: Core Team <core@xxxxxxxxxxx>

The 2010 FreeBSD core team election was recently completed. The FreeBSD
core team acts as the project's "board of directors" and is responsible
for approving new src committers, resolving disputes between
developers, appointing sub-committees for specific purposes (security
officer, release engineering, port managers, webmaster, et cetera), and
making any other administrative or policy decisions as needed. The core
team has been elected by FreeBSD developers every 2 years since 2000,
and this marks our 6th democratically elected core team.

The new core team would like to thank outgoing members Kris Kennaway,
Giorgos Keramidas, George V. Neville-Neil, Murray Stokely, and Peter
Wemm for their service over the past two (and in some cases, many more)

The core team would also especially like to thank Dag-Erling Smřgrav
for running the election.

The newly elected core team members are:
* John Baldwin
* Konstantin Belousov
* Warner Losh
* Pav Lucistnik
* Colin Percival

The returning core team members are:
* Wilko Bulte
* Brooks Davis
* Hiroki Sato
* Robert Watson

FreeBSD Haskell


Contact: Gábor Páli <pgj@xxxxxxxxxxx>
Contact: Giuseppe Pilichi <jacula@xxxxxxxxxxx>
Contact: Ashish Shukla <ashish@xxxxxxxxxxx>

Our efforts on porting the generalized, general-purpose purely
functional programming language, Haskell has rallied, since two new
committers, Giuseppe Pilichi and Ashish Shukla joined recently, forming
the FreeBSD Haskell Team. Over the last months, FreeBSD/i386 and
FreeBSD/amd64 have become Tier-1 platforms, featuring officially
supported vanilla binary distributions for the Glasgow Haskell Compiler
starting from version 6.12.1. We introduced a unified ports
infrastructure for Haskell Cabal ports, which also makes possible the
direct translation of Cabal package descriptions to FreeBSD ports. The
number of Haskell package ports increases steadily.

Open tasks:

1. Improve support for Haskell Cabal packages and their translation.
2. Create a port for Haskell Platform.
3. Add more Haskell package ports.
4. Test and send feedback.

FreeBSD on the Sony Playstation 3


Contact: Nathan Whitehorn <nwhitehorn@xxxxxxxxxxx>

Work has begun to port FreeBSD/powerpc64 to the IBM Cell-based Sony
Playstation 3, using the OtherOS feature present on some models of the
console. As of July 14, the FreeBSD boot loader is ported, and it is
possible to netboot a kernel, which has support for the framebuffer,
MMU, and device discovery. Once work on drivers for the network
interface and interrupt controller is complete, it will be possible to
boot the console multi-user.

FreeBSD Services Control -- fsc


Contact: Tom Rhodes <trhodes@xxxxxxxxxxx>

FreeBSD Services Control is a mix of binaries which integrate into the
rc.d system and provide for service (daemon) monitoring. It knows about
signals, pidfiles, and uses very few resources.

The fsc daemon (fscd) runs in the background once the system has
started. Services are then added to this daemon via the fscadm control
utility, and from there they will be monitored. When they die,
depending on the reason, they will be restarted. Certain signals may be
ignored (list not decided) and fscd will remove that service from
monitoring. Every action is logged to the system logging daemon.
Additionally, the fscadm utility may be used to inquire about what
services are monitored, their pidfile location, and current process ID.

FSC provides several advantages over the third-party daemontools
package. For example, fscd uses push notifications instead of polling;
fscd is an internal, FreeBSD-maintained software package accessible to
all developers, where daemontools would have to be a port and require
us to maintain patches; fscd could be easily integrated with the
current rc.d infrastructure.

Partially based on the ideas of daemontools and Solaris Service Service
Mangement Facility (SMF), this could be an extremely useful tool for
FreeBSD systems.

Open tasks:

1. Testing. Get feedback on how it works in various environments.
2. Code review.
3. Other ideas on the rc.d integration.
4. Update the manual pages.



Contact: Oleksandr Tymoshenko <gonzo@xxxxxxxxxxx>

The FreeBSD/avr32 project was started by Arnar Mar Sing, and actively
developed by him and Ulf Lilleengen. It successfully reached
single-user stage but since then has not progressed much. At the moment
I am trying to get it back into shape. So far some problems with
toolchain on i386 host have been fixed, buildkernel succeeds,
buildworld succeeds with some exceptions. Next step would be fixing
pmap and bringing port back to single-user stage.



Contact: Nathan Whitehorn <nwhitehorn@xxxxxxxxxxx>

On July 13, FreeBSD/powerpc64 was integrated into HEAD. This provides
support for fully 64-bit operation on 64-bit PowerPC machines
conforming to the Book-S specification, including the PowerPC 970,
Cell, and POWER4-7. Hardware support is currently limited to Apple
machines, although this should expand in the near future.

Currently supported hardware:
* Apple Xserve G5
* Apple Power Macintosh G5
* Apple iMac G5


Contact: Marius Strobl <marius@xxxxxxxxxxx>

Since the last status report some issues with cas(4) have been fixed,
allowing it to work with Sun GigaSwift Ethernet 1.0 MMF cards (Cassini
Kuheen, part no. 501-5524) as well as the on-board interfaces of Sun
Fire B100s server blades (for the Sun Fire B1600 platform).

Support for Fujitsu (Siemens) PRIMEPOWER 250 based on SPARC64 V CPUs
has been added. PRIMEPOWER 450, 650, and 850 likely also work but have
not been tested. This also means that the building blocks for support
of machines based on SPARC64 VI and VII CPUs like the Fujitsu/Sun SPARC
Enterprise Mx000 series are now in place, but they need testing as

The problems with Schizo version 7 bridges (actually the firmware of
these machines) triggering panics during boot finally should be solved.

The work on getting Sun Fire V1280 supported has been stalled due to
access to such machines no longer being available.

The above mentioned improvements are/will be available in FreeBSD
8.1-RELEASE and 7.4-RELEASE.

Open tasks:

1. Access to machines based on SPARC64 VI and VII CPUs, like the
Fujitsu/Sun SPARC Enterprise Mx000 series would be appreciated.
2. Someone adding support for 64-bit SPARC V9 to Clang/LLVM, and
getting it on par with GCC would be appreciated.

General-Purpose DMA Framework


Contact: Jakub Klama <jceel@xxxxxxxxxxx>

This project purpose is adding support for general purpose DMA engines
found in most embedded devices. GPDMA framework provides a unified KOBJ
interface to DMA engine drivers and unified programming interface to
use direct memory transfers in kernel and userspace applications.

This project is a part of Google Summer of Code 2010 and it is a work
in progress. Current status can be observed on the wiki page.

Open tasks:

1. Add support for more DMA engines.
2. Complete, clean up, and merge with HEAD.

GEOM-Based Pseudo-RAID Implementation -- geom_pseudoraid


Contact: Boris Kochergin <spawk@xxxxxxxxxxxx>

The old ata(4) driver is believed to be going away sometime in the
future, to be replaced with ATA_CAM [1]. However, ATA pseudo-RAID
support in FreeBSD, ataraid(4), is implemented as part of said ata(4)
driver, which means that it, too, will be going away. It was decided
that pseudo-RAID support is desirable and that it should be
reimplemented in GEOM [2] [ 3], which this project aims to do.

Currently, RAID-1 arrays can be used on VIA Tech V-RAID and Adaptec
HostRAID controllers in a limited capacity. There is no support for
writing metadata yet, so disks are not marked degraded, there is no
rebuild support, etc. These features are planned, along with support
for more hardware and RAID-0 and SPAN arrays.

A major setback for the current code is that it uses the device(9)
family of functions to identify ATA pseudo-RAID controllers and
constructs arrays based on that information. Unfortunately, ATA_CAM
does not appear to add its devices to the device tree, so that tactic
cannot be used with ATA_CAM. While this is fine for development of the
actual RAID parts of the code, the project will be somewhat useless in
the absence of the old ata(4) driver. There has been talk of exporting
PCI information to GEOM [4] [5], but the work does not appear to have
been completed yet.

Open tasks:

1. Obtain documentation for or reverse-engineer metadata formats for
which there is no write support in the ataraid(4) driver (for
example, Adaptec HostRAID).
2. Add CAM support for exporting PCI information to GEOM.

Google Summer of Code 2010


Contact: Brooks Davis <brooks@xxxxxxxxxxx>
Contact: Tim Kientzle <kientzle@xxxxxxxxxxx>
Contact: Robert Watson <rwatson@xxxxxxxxxxx>

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 18 students. Coding officially began May 24th, and we
are in the middle of the mid-term evaluation period. You can see and
comment on weekly status reports on the mailing list or on the wiki.

GPIO Framework


Contact: Luiz Otavio O Souza <>
Contact: Oleksandr Tymoshenko <gonzo@xxxxxxxxxxx>

Implementation of General Purpose Input/Output interface for FreeBSD.
Current GPIO bus implementation allows user to control pins from
userland and it could be expanded to support various type of peripheral
devices. So far there are two drivers:
* gpioled provides simple led(4) functionality.
* gpioiic implements I2C over GPIO.

Framework is used in Alexandr Rybalko's port of FreeBSD to D-Link
DIR-320 and in Luis Otavio O Souza's work of bringing FreeBSD to

Interrupt Threads

Contact: John Baldwin <jhb@xxxxxxxxxxx>

For a while I have wanted to rework interrupt threads to address a few
issues. The new design uses per-CPU queues of interrupt handlers.
Interrupt threads are allocated by a CPU from a pool and bound to that
CPU while draining that CPU's queue of handlers. Non-filter handlers
can also reschedule themselves at the back of the current CPU's queue
while executing. Filters with handlers are now always enabled and
should provide a full replacement for the various uses of filters with
"fast" taskqueues. A new class of "manual" handlers are also available
which are not automatically scheduled, but are only explicitly
scheduled from a filter. Thus, a filter can potentially schedule
multiple handlers.

The code has been tested on amd64, but it needs wider review and
testing. I hope to start soliciting review and feedback soon with the
goal of getting the code into 9.0.

Jail-Based Virtualization


Contact: Bjoern A. Zeeb <bz@xxxxxxxxxxx>

The project started with some cleanup on the network stack after all
the import work and adjustments for virtualization to minimize changes
to earlier branches. These made it into the tree already and to
8-STABLE, and it will be included in the upcoming 8.1 release.

The first major task was to generalize the virtualization framework, so
that virtualization of further subsystems would be easier and could be
achieved with less duplication.

In addition some documentation on the virtual network stack programming
was written to help developers virtualizing their code. The interactive
kernel debugger support was improved and libjail along with jls and
netstat can work on core dumps now and query individual jails and
attached virtual network stacks.

The second major task was network stack teardown, a concept introduced
with the network stack virtualization. The primary goal was to
prototype a shutdown of the (virtual) network stacks from top to
bottom, which means letting interfaces go last rather than first. Work
in this area is still in progress and will have to continue to allow
long term stability and a leak and panic free shutdown.

The work on this project had been sponsored by the FreeBSD Foundation
and CK Software GmbH. Special thanks also to John Baldwin and Philip
Paeps for helping with review and suggestions.

Open tasks:

1. Merge stabilised change sets.
2. Work further down the network stack freeing all resources for a
stable, safe teardown.

Kernel Event Timers Infrastructure

Contact: Alexander Motin <mav@xxxxxxxxxxx>

Modern x86 systems include four different types of event timers: i8254,
RTC, LAPIC, and HPET. First three are already supported by FreeBSD.
Depending on hardware and loader tunables, periodic interrupts from
them are used to trigger all time-based events in kernel. That code has
a long history, that made it tangled and at the same time limited and

New kernel event timers infrastructure was started to allow different
event timer hardware to be operated in uniform way and to allow more
features to be supported. Work consists of three main parts: writing
machine-independent timer driver API and management code, updating
existing drivers and improving HPET driver to support event timers.

The new driver API provides unified support for both per-CPU
(independent for every CPU core) and global timers in periodic and
one-shot modes. Management code at this moment uses only periodic mode,
while one-shot mode use is planned by later tickless kernel work.

Different kinds of timers have different capabilities and could be
present in hardware in different combinations. In every situation the
infrastructure automatically chooses two best event timers to supply
system with hardclock(), statclock(), and profclock() events. If some
timer is not functioning -- it will be replaced. If there is no second
timer -- it will be emulated. The administrator may affect that choice
using loader tunables during boot and sysctl variables in run-time
(kern.eventtimer.*, and so on).

Most of the code was recently committed to HEAD. Now it is used by i386
and amd64 architectures.

Open tasks:

1. Troubleshoot possible hardware and software issues.
2. Port other architectures to the new infrastructure.
3. Implement tickless kernel, utilizing new features, such as per-CPU
and one-shot timers.



Contact: Gábor Páli <pgj@xxxxxxxxxxx>
Contact: Aman Jassal <aman@xxxxxxxxxxx>

This project is about creating a wrapper library to support monitoring
and management of networking with avoiding direct use of the FreeBSD
kvm(3) and sysctl(3) interfaces. This approach would allow the kernel
implementation to change and monitoring applications to be extended
without breaking applications and requiring them to be recompiled. We
decided to merge the sources from the last year's Summer of Code
project back to the FreeBSD src/ repository piece by piece, and we have
defined several phases of integration.
* Standardize the in-kernel networking statistics structures.
* Build a sysctl(3) interface, and add export routines.
* Add a library, libnetstat(3) to work with the exported information,
and to provide further functions in order to support extracting
information via kvm(3). This library implements abstractions over
the gathered data.
* Adapt sources of the existing applications, i.e. netstat(1) and
bsnmpd(1) to use the abstractions offered by the library, resulting
in a cleaner and simpler code.
* Add new applications on the top of the library, e.g. nettop(1).

The first phase has been already posted for review. Note that we are
looking for a sponsor with an src commit bit and enough time to
represent the effort towards the Project.

Open tasks:

1. Review the sources.
2. Pick a task from the list, and send patches.
3. Comment the patches, help them to improve.

Making Ports Work with Clang


Contact: Andrius Morkunas <hinokind@xxxxxxxxx>

First part of the project is mostly complete. I added support for new
PORTS_CC variable which should be used in make.conf instead of CC to
change ports compiler. This allows user to change ports compiler
easily, while still respecting USE_GCC.

Some patches were written to get ports to work with Clang, and a lot of
old patches written prior to the Google Summer of Code project were
updated. There are still a lot of broken ports, and some that cannot be
built because of Clang/LLVM bugs, but at this point, Clang can build
most ports.

Open tasks:

1. Fix broken ports that do not work with Clang.
2. Test patched ports with Clang, report Clang bugs.

meetBSD 2010 -- The BSD Conference


Contact: meetBSD Information <info@xxxxxxxxxxx>

meetBSD 2010 took place on July 2 - 3 in Krakow, Poland at the Faculty
of Mathematics and Computer Science building of the Jagiellonian

The gathering was a much successful event which brought together
developers, contributors, and users of the BSD systems from around the
world. We had many interesting presentations, of various character and
appeal for the diversified audience.

Attendees had a chance for taking the BSD Certification exam during the
conference, as well as the advantage of face to face side conversations
and discussions, which continued long during the social event on Friday

The conference presentation slides are already available for download.
Video recordings edition is being finalized, and their publication is
expected shortly.

We hope you enjoyed the event and had great time in Krakow. See you
again soon!

Namecache Improvements -- dircache


Contact: Gleb Kurtsou <gk@xxxxxxxxxxx>

I have been reimplementing VFS namecache to make it granularly locked
and supporting reliable full-path lookup without calling underlying
file system routines. I have successfully implemented directory cache
that works in idealized environment with tmpfs. I am currently working
on adding support for entries without associated vnodes and for "weak"
entries and incomplete cached path.

New System Installer -- pc-sysinstall


Contact: Kris Moore <kris@xxxxxxxxx>
Contact: M. Warner Losh <imp@xxxxxxxxxxx>

The new system installation backend, pc-sysinstall, was merged into
HEAD recently and work is already underway to make it more functional
and useful as a complete replacement to standard "sysinstall". It is
written 100% in shell, not requiring any additional tools from what is
standard to FreeBSD. The backend already supports a number of exciting
features such as:
* ZFS (Including support for raidz/mirror/multiple device pool
* Disk encryption via GELI(8).
* Auto labeling of file systems with glabel(8).
* Big disk support using GPT/EFI.
* Full Installation Logging, which is saved to disk for post-install

In addition to the features above, pc-sysinstall is unique, in that
every install ends up being a scripted install. Front-ends, be it GUI-
or text-based, simply generate the appropriate system configuration
file, and pc-sysinstall does the grunt work of the actual installation.
This is important for a couple of reasons. First, it makes the task of
front-end development much easier by not needing to worry about a
backend-driven program flow. Second it means that any front-end can be
used to generate the installation configuration file, which can then be
copied or modified to perform automated installs.

While pc-sysinstall is still relatively new, it is already in use as
the default backend for PC-BSD 8.0 and 8.1, and has been getting a very
good reception and any bugs found are fixed quickly. A text-based
front-end is already in the works which will allow installation media
to be created without X11 support.

OpenAFS Port


Contact: Benjamin Kaduk <kaduk@xxxxxxx>
Contact: Derrick Brashear <shadow@xxxxxxxxx>

AFS is a distributed network filesystem that originated from the Andrew
Project at Carnegie-Mellon University; the OpenAFS client
implementation has not been particularly useful on FreeBSD since the
4.X releases. Recent work on the OpenAFS codebase has updated it to be
consistent with current versions of FreeBSD, and the client, though
still considered experimental, is now relatively stable for light
(single-threaded) use on 9-CURRENT. The auxiliary utilities for
managing and examining the filesystem are functional, and reading and
writing files works sufficiently well to copy /usr/src into and out of
AFS. Compiling and running executables in AFS is unsuccessful, though,
as mmap() is not always reliable.

There are several known outstanding issues that are being worked on,
but detailed bug reports are welcome at port-freebsd@xxxxxxxxxxxx

Open tasks:

1. Fix the {get,put}pages vnode operations for more reliable mmap()
2. Update VFS locking to allow the use of disk-based client caches as
well as memory-based caches.
3. Track down races and deadlocks that appear under load.
4. Integrate with the kernel-module build infrastructure.

Package Management Library -- libpkg


Contact: David Forsythe <dforsyth@xxxxxxxxxxx>

The libpkg library will allow for fairly fine grained control over
package management.

Presently libpkg has complete read functionality. Info and delete tools
that have most of the current package tool features have already been
implemented, and once they are completed they can be considered
replacements for their counterparts.

Once the write and logging aspects of the library are more mature, add
and create tools can be created quickly. A new set of more maintainable
package tools that leverage libpkg will hopefully be available soon

Packet-Capturing Stack -- ringmap


Contact: Alexander Fiveg <afiveg@xxxxxxxxxxx>

The ringmap stack is a complete FreeBSD packet-capturing mplementation
specialized for very high-speed networks. Similar to the "zero-copy
BPF" implementation, the idea of ringmap is to eliminate packet copy
operations by using shared memory buffers. However, unlike the
"zero-copy BPF" model, ringmap eliminates ALL packet copies during
capturing: the network adapter's DMA buffer is mapped directly into
user-space. The ringmap stack also adapts libpcap accordingly to
provide userspace applications with access to the captured packets
without any additional overhead.

In the context of Google Summer of Code 2010:
* The ringmap software was ported to 9-CURRENT.
* Ringmap was redesigned to make it easier to port to other adapters
and to integrate it with other network drivers.
* Also ringmap was extended to be multi-threaded.

Open tasks:

1. Porting ringmap to 10GbE (integrating with ixgbe driver).
2. Porting the entire ringmap code from 9-CURRENT to -STABLE.
3. Evaluation tests.
4. Documentation.

Ports Collection


Contact: Thomas Abthorpe <portmgr-secretary@xxxxxxxxxxx>
Contact: Port Management Team <portmgr@xxxxxxxxxxx>

A significant part of quarter two was spent coordinating efforts for
inclusion of Xorg 7.5, KDE 4, GNOME 2, plus preparation of ports for
the 8.1 release process. Due to the success of enforcing Feature Safe
ports commits during 7.3-RELEASE, it was continued for the recent src/

The port count is approaching 22,000 ports. The open PR count currently
floats at about 1200 entries.

Since the last report, we added four new committers, and had two old
committers rejoin us.

The Ports Management Team is very grateful to the FreeBSD Foundation
for sponsoring two new head nodes for the ports building cluster,
pointyhat. Each of the new head nodes has a larger capacity, both with
regard to performance but also in amount of space available for the
staging areas, allowing for faster, and thus more, build cycles.
Additionally, having two head nodes will allow us to dedicate one of
them for building production-ready binary packages, adding
predicability for our users to when what types of packages are
available for installation, and dedicate the other for regression
testing of large port updates, ports infrastructure improvements, the
cluster scheduling code, and FreeBSD itself. Over the last few weeks,
Mark Linimon has been working hard to get the first of the two new
nodes online and has already completed its first package build. This
has involved a substantial rework of our custom codebase.

The Ports Management team have been running -exp runs on an ongoing
basis, verifying how base system updates may affect the ports tree, as
well as providing QA runs for major ports updates. Of note, -exp runs
were done for:
* ale: Update of math/gmp.
* delphij: Changes to Mk/
* gahr: Inclusion of USE_GL=glew.
* pgollucci: Changes to Mk/bsd.* plus updates to devel/apr
and www/apache*.
* Testing of x11/xorg, x11/gnome2, x11/kde4, and lang/mono
* A test run make fetch run.
* A test run for devel/gettext.
* mm: Inclusion of USE_XZ.
* ale: Request to switch default mysql from 5.0-EOL to 5.1-GA.

alepulver's Licensing Framework Summer of Code project has made it into
the tree and the Port Management Team is currently assessing the
fallout and it will come up with guidelines and documentation in due

Open tasks:

1. Looking for help fixing ports broken on 9-CURRENT.
2. Looking for help with Tier-2 architectures.
3. Most ports PRs are assigned, we now need to focus on testing,
committing, and closing.

Release Engineering Team


Contact: Release Engineering Team <re@xxxxxxxxxxx>

The Release Engineering Team has been working on the
FreeBSD 8.1-RELEASE. At the time of this writing the final builds have
been completed and uploaded to the master FTP site. The release
announcement should be made within the next couple of days.

Resource Containers

Contact: Edward Tomasz Napieral/a <trasz@xxxxxxxxxxx>

As of now, FreeBSD only offers very rudimentary resource controls --
resource limits for many resources (e.g. SysV IPC) are missing, and
there is no way to set resource limits for jails. As a result, users
who want to run many different workloads on a single physical machine
often have to replace jails with several FreeBSD instances running in
virtual machines.

The goal of this project is to implement resource containers and a
simple per-jail resource limits mechanism. Resource containers are also
a prerequisite for other resource management mechanisms, such as
Hierarchical Resource Limits, for "Collective Limits on Set of
Processes (aka. Jobs)" Google Summer of Code 2010 project, for
implementing mechanism similar to Linux cgroups, and might be also used
to e.g. provide precise resource usage accounting for administrative or
billing purposes.

This project is being sponsored by The FreeBSD Foundation.

The FreeBSD Foundation Status Report


Contact: Deb Goodkin <deb@xxxxxxxxxxxxxxxxxxxxx>

We were proud to be a sponsor for BSDCan in May. We also committed to
sponsoring MeetBSD 2010 Poland and California. We provided 12 travel
grants for BSDCan.

The Foundation and Core Team held a summit on BSD-licensed toolchains
at BSDCan 2010.

We officially kicked off five new projects that we are funding. They
are BSNMP Improvements by Shteryana Shopova, Userland DTrace by Rui
Paulo, FreeBSD jail-based virtualization by Bjoern Zeeb, DAHDI FreeBSD
driver port by Max Khon, and Resource Containers project by Edward
Tomasz Napieral/a.

We continued our work on infrastructure projects to beef up hardware
for package building, network testing, etc. This includes purchasing
equipment as well as managing equipment donations.

We are half way through the year and we have raised around $48,000
towards our goal of $350,000. Find out how to make a donation at

Our semi-annual newsletter will be published soon. Check out our
website to find out more!

The FreeBSD German Documentation Project


Contact: Johann Kois <jkois@xxxxxxxxxxx>
Contact: Benedict Reuschling <bcr@xxxxxxxxxxx>

A number of updates to the documentation were made since the last
status report. We are especially grateful for the contributions from
external people who sent the translations. People like Fabian Ruch, who
updated the porters-handbook to the latest version (which had been on
his to-do list for quite some time), and Benjamin Lukas, who did a
great job with the from-scratch translation of the MAC chapter of the
German handbook. We thank them both for their contributions and hope
they will continue their efforts to enhance the German documentation.

Frank Börner was released from Benedicts mentorship and is now a full
committer to the German Documentation Project. We are always looking
for fresh blood that is willing to be mentored by us as a first step in
becoming committers for the documentation project themselves.

Johann is keeping up the German website with the latest version. But we
could use more translators for sections that are not fully translated

Open tasks:

1. Read the translations and report bugs that you have found (even
small ones).
2. Translate new parts of the documentation and the website.

The FreeBSD Hungarian Documentation Project


Contact: Gábor Kövesdán <gabor@xxxxxxxxxxx>
Contact: Gábor Páli <pgj@xxxxxxxxxxx>

Thanks to Katalin Konkoly, the first few chapters of the FreeBSD
Handbook translation have been reviewed, therefore many typos and
mistranslations were spotted and fixed. Apart from this, we are still
keeping the existing documentation and web page translations up to
date, currently without plans on further work. If you are interested in
helping us, or you have any comments, or requests regarding the
translations, do not hesitate to contact the project via the email
addresses mentioned in the entry.

Open tasks:

1. Review translations and send feedback.
2. Translate release notes.
3. Add more article translations.

The FreeBSD Japanese Documentation Project


Contact: Hiroki Sato <hrs@xxxxxxxxxxx>
Contact: Ryusuke Suzuki <ryusuke@xxxxxxxxxxx>

This project focuses on updating the www/ja and doc/ja_JP.eucJP/ trees.
Since last year www/ja tree has been mostly synchronized with the
English counterpart and doc/ja_JP.eucJP has also been updated steadily.
We are now working on FreeBSD Handbook and Porter's Handbook.

Open tasks:

1. More Japanese translation of FreeBSD Handbook and contents of
2. Pre-/post-commit review of the translation.

The FreeBSD Spanish Documentation Project


Contact: Gábor Kövesdán <gabor@xxxxxxxxxxx>
Contact: Vicente Carrasco Vayá <carvay@xxxxxxxxxxx>

We need manpower. Existing documentation set has not been updated for
quite some time because of lack of volunteers. Current members are busy
with other projects and real life at the moment and we have not
received anything from outside contributors. It is a shame because
there are lots of users in Spain and Latin-America, as well. Besides,
the world's first Free Software Street has been recently inaugurated in
Spain. This obviously means that there is interest in free software but
unfortunately, this translation project is not going very well

Open tasks:

1. Review and update existing translations.

V4L Support in Linux Emulator


Contact: J.R. Oldroyd <fbsd@xxxxxxxx>

Some bug fixes were applied, and the code was also tested and made to
work with the cuse4bsd webcam driver, which supports a great many
camera chipsets.

The code is still only in 9-CURRENT. We were going to MFC it to 8.x but
ran into the code freeze for 8.1, so missed that. However, the code
does work on 8-STABLE. We will try to get it MFC'd for 8.2.



Contact: Pawel Jakub Dawidek <pjd@xxxxxxxxxxx>
Contact: Martin Matuska <mm@xxxxxxxxxxx>
Contact: Xin Li <delphij@xxxxxxxxxxx>

The ZFS file system has been updated to version 15 on HEAD and it will
be MFC'ed to 8-STABLE around September 13th, 2010. Work is in progress
on porting the recent ZFS version 26 with deduplication functionality.

Open tasks:

1. Fix bugs, unresolved issues and to-dos in Perforce.

(c) 1995-2010 The FreeBSD Project. All rights reserved.
freebsd-hackers@xxxxxxxxxxx mailing list
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"