FreeBSD Status Report April-June, 2010

Daniel Gerzo danger at
Thu Jul 22 14:28:55 UTC 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
     * ZFS


     * 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 at 2010
     * BSDCan
     * meetBSD 2010 -- The BSD Conference

Binary Package Patch Infrastructure -- pkg_patch


   Contact: Ivan Voras <ivoras at>

   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.

BSD-Day at 2010


   Contact: Gábor Páli <pgj at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: Roman Divacky <rdivacky at>
   Contact: Brooks Davis <brooks at>
   Contact: Pawel Worach <pawel.worach at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: Mark Linimon <linimon at>
   Contact: Remko Lodder <remko at>
   Contact: Volker Werth <vwe at>

   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 at

   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 at>

   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 at>
   Contact: Giuseppe Pilichi <jacula at>
   Contact: Ashish Shukla <ashish at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: Tim Kientzle <kientzle at>
   Contact: Robert Watson <rwatson at>

   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 < at>
   Contact: Oleksandr Tymoshenko <gonzo at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: Aman Jassal <aman at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: M. Warner Losh <imp at>

   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 at>
   Contact: Derrick Brashear <shadow at>

   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 at

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 at>

   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 at>

   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 at>
   Contact: Port Management Team <portmgr at>

   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 at>

   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 at>

   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 at>

   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 at>
   Contact: Benedict Reuschling <bcr at>

   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 at>
   Contact: Gábor Páli <pgj at>

   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 at>
   Contact: Ryusuke Suzuki <ryusuke at>

   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 at>
   Contact: Vicente Carrasco Vayá <carvay at>

   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 at>

   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 at>
   Contact: Martin Matuska <mm at>
   Contact: Xin Li <delphij at>

   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.

More information about the freebsd-current mailing list