[Ukfreebsd] [FreeBSD-Announce] FreeBSD Status Report January-March, 2010 (fwd)

Robert Watson rwatson at FreeBSD.org
Fri Apr 23 14:59:11 BST 2010

Probably many folks have seen this already, but I figured I'd send it out 
anyway since there's some interesting stuff.  It certainly doesn't cover all 
the stuff going on (after all, do you enjoy sending status reports? :-), but 
certainly a survey of some of the more interesting things.

Robert N M Watson
Computer Laboratory
University of Cambridge

---------- Forwarded message ----------
Date: Thu, 22 Apr 2010 15:48:08 +0000
From: Daniel Gerzo <danger at FreeBSD.org>
To: announce at FreeBSD.org
Subject: [FreeBSD-Announce] FreeBSD Status Report January-March, 2010

FreeBSD Quarterly Status Report


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

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

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

Google Summer of Code

      * Google Summer of Code 2010


      * Chromium web browser
      * Clang replacing GCC in the base system
      * EFI support for FreeBSD/i386
      * mfsBSD
      * Modular Congestion Control
      * NAND Flash framework for embedded FreeBSD
      * Out of Tree Toolchain
      * PC-BSD PC-SysInstall Backend
      * The tbemd branch
      * webcamd

FreeBSD Team Reports

      * FreeBSD Bugbusting Team
      * Release Engineering Team
      * The FreeBSD Foundation

Network Infrastructure

      * (Virtual) Network Stack resource cleanup
      * 802.11n support
      * Atheros AR9285 support
      * Enhancing the FreeBSD TCP Implementation
      * Experimental NFS subsystem (NFSv4)
      * ipfw and dummynet enhancements
      * net80211 rate control framework
      * TCP/UDP connection groups


      * CAM-based ATA implementation
      * Dynamic Ticks in FreeBSD
      * geom_sched
      * IPv6 without legacy IP kernel
      * Multichannel playback in HDA sound driver (snd_hda)
      * Rewrite of FreeBSD read/write path using vnode page
      * SUJ: Journaled Softupdates
      * ZFS


      * The FreeBSD German Documentation Project
      * The FreeBSD Hungarian Documentation Project

Userland Programs

      * FreeBSD port for libunwind
      * LDAP support in base system


      * FreeBSD/arm port for TI DaVinci
      * FreeBSD/ia64
      * FreeBSD/mips on D-Link DIR-320
      * FreeBSD/powerpc
      * FreeBSD/powerpc64 port
      * FreeBSD/sparc64


      * Portmaster
      * Ports Collection
      * QAT


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

(Virtual) Network Stack resource cleanup

    Contact: Bjoern A. Zeeb <bz at FreeBSD.org>

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

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

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

    This work was sponsored by ISPsystem.

Open tasks:

     1. Merge the remaining patches.
     2. Work on a better teardown model and get to the point where we can
        free UMA zones without keeping pages for type stability and timers

802.11n support

    Contact: Rui Paulo <rpaulo at FreeBSD.org>

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

    This work is being sponsored by iXsystems, inc.

Atheros AR9285 support

    Contact: Rui Paulo <rpaulo at FreeBSD.org>

    Atheros AR9285 support was added to FreeBSD HEAD and 8-STABLE. There
    are still some issues but in general it works fine.

BSDCan 2010 -- The BSD Conference

    URL: http://www.BSDCan.org/2010/
    URL: http://www.BSDCan.org/2010/schedule/

    Contact: BSDCan Information <info at BSDCan.org>

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

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

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

    Please check the conference web site for more information.

CAM-based ATA implementation

    Contact: Alexander Motin <mav at FreeBSD.org>

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

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

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

    Most of the code is present in 8-STABLE.

Open tasks:

     1. Port ataraid(4) functionality to GEOM module.
     2. Write SAS-specific transport and drivers for SAS HBAs (specs
        wanted). SAS controllers can support SATA devices and multipliers,
        so it should fit nicely into new infrastructure.

Chromium web browser

    URL: http://chromium.jaggeri.com
    URL: http://wiki.FreeBSD.org/Chromium

    Contact: sprewell <chromium at jaggeri.com>

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

Clang replacing GCC in the base system

    URL: http://wiki.FreeBSD.org/BuildingFreeBSDWithClang

    Contact: Ed Schouten <ed at FreeBSD.org>
    Contact: Roman Divacky <rdivacky at FreeBSD.org>
    Contact: Brooks Davis <brooks at FreeBSD.org>
    Contact: Pawel Worach <pawel.worach at gmail.com>

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

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

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

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

Open tasks:

     1. Runtime test ClangBSD on amd64/i386.
     2. Help with ARM/Mips/Sparc64.
     3. More testing of clang on 3rd party apps (ports).
     4. Discussion on integrating LLVM/clang into FreeBSD.

Dynamic Ticks in FreeBSD

    URL: http://github.com/oza/FreeBSD-8.0-dyntick

    Contact: Tsuyoshi Ozawa <ozawa at t-oza.net>

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

Open tasks:

     1. Run hard/stat/prof-clocks irregularly (in progress).
     2. Some timers which are added after the kernel's scheduling next
        timer interrupt may be ignored (BUG).
     3. Make callout queue have the tick when the next timer event rise up.

EFI support for FreeBSD/i386

    Contact: Rui Paulo <rpaulo at FreeBSD.org>

    Work on supporting EFI booting on FreeBSD/i386 resumed. The boot loader
    can now read an ELF file from the EFI FAT partition. We are now working
    on trying to boot a kernel.

Enhancing the FreeBSD TCP Implementation

    URL: http://caia.swin.edu.au/freebsd/etcp09/
    URL: http://caia.swin.edu.au/urp/newtcp/
    URL: http://www.FreeBSDFoundation.org/projects.shtml
    URL: http://people.FreeBSD.org/~lstewart/patches/tcp_ffcaia2008/

    Contact: Lawrence Stewart <lstewart at FreeBSD.org>

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

    With the ALQ changes in head, SIFTR can finally be imported.

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

Open tasks:

     1. Solicit external testing for and commit SIFTR.
     2. Solicit external testing for and commit reassembly queue autotuning

Experimental NFS subsystem (NFSv4)

    Contact: Rick Macklem <rmacklem at uoguelph.ca>

    Although the bare bones of the NFS Version 4 support was released in
    FreeBSD 8.0, the integration has been progressing slowly and support
    should be functional for FreeBSD 8.1 for RFC3530 (NFS Version 4.0).

    Post FreeBSD 8.1, I believe the focus will be on code cleanup and,
    under a projects area of svn, some experimental work on aggressive
    whole file caching to client disk.

Open tasks:

     1. Handling of delegations on the server w.r.t. local processes
        running on the server.
     2. Integration of recent changes to the regular NFS client, such as
        Dtrace support.

FreeBSD Bugbusting Team

    URL: http://www.FreeBSD.org/support.html#gnats
    URL: http://wiki.FreeBSD.org/BugBusting
    URL: http://people.FreeBSD.org/~linimon/studies/prs/
    URL: http://people.FreeBSD.org/~linimon/recommended_subscribers.txt
    URL: http://people.FreeBSD.org/~linimon/studies/prs/easy_prs.html
    URL: http://wiki.FreeBSD.org/AssigningPRs

    Contact: Gavin Atkinson <gavin at FreeBSD.org>
    Contact: Mark Linimon <linimon at FreeBSD.org>
    Contact: Remko Lodder <remko at FreeBSD.org>
    Contact: Volker Werth <vwe at FreeBSD.org>

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

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

    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.

    New reports were added for "PRs which are from FreeBSD vendors or
    OEMs", "PRs containing code for new device drivers", and "PRs
    referencing other BSDs". These will primarily be of interest to

    Some other bitrot on the "experimental PR reports" pages has been

    It is now possible for interested parties to be emailed a weekly,
    customized, report along the lines of the above. If you are interested
    in setting one up, contact linimon at FreeBSD.org.

    The overall PR count has recently jumped to around 6400. This may be
    due to increasing uptake of FreeBSD 8.

    Our clearance rate of PRs, especially in kern and bin, seems to be

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

    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. We will be having a bugbusting session at BSDCan. If you are
        developer who will be attending the conference, please stop by.
     2. try to find ways to get more committers helping us with closing PRs
        that the team has already analyzed.

FreeBSD port for libunwind

    URL: http://www.nongnu.org/libunwind/

    Contact: Konstantin Belousov <kib at FreeBSD.org>

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

FreeBSD/arm port for TI DaVinci

    URL: http://p4web.FreeBSD.org/@md=d&cd=//depot/user/jceel/davinci/

    Contact: Jakub Klama <jceel at semihalf.com>

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

    Current DaVinci support includes:
      * Booting from U-Boot bootloader
      * Serial console
      * Interrupt controller
      * Integrated timers
      * Power and sleep controller
      * 10/100 Ethernet controller
      * SD/MMC controller

Open tasks:

     1. Remaining built-in peripherals drivers (USB, ATA, NAND flash, I2C,
        DMA engine, sound, video input/output).
     2. Framework for communicating with DSP core.


    Contact: Mark Linimon <linimon at FreeBSD.org>

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

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

    We currently have 3 available machines that are stable enough for
    package builds.

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

Open tasks:

     1. Continue to try to understand why multiple simultaneous package
        builds bring the machines down.
     2. Upgrade the firmware on the two machines at Yahoo! to see if that
        helps the problem.
     3. Figure out why the fourth machine is not stable.
     4. Configure a fifth machine that has been made available to us.
     5. Figure out the problems with the latest gcc port.
     6. We need documentation about the SGI SAL implementation to speed up
        porting to the SGI Altix 350.
     7. The loader and kernel need to change to allow the kernel to be
        loaded at a runtime-determined physical address as well as add
        support for NUMA.

FreeBSD/mips on D-Link DIR-320

    URL: http://wiki.ddteam.net/wiki.cgi?page=DIR-320+FreeBSD

    Contact: Alexandr Rybalko <ray at dlink.ua>

    FreeBSD/mips has been ported to D-Link DIR-320, wireless router based
    on BCM5354 SoC. Project aims to providing several working images
    tailored for different purposes (profiles). So far racoon based
    router-ipsec image is available.

Open tasks:

     1. bfeswitch configuration utility.
     2. Add router profile.
     3. Add wifi-router profile.
     4. Add openvpn-router profile.

FreeBSD/mips on Octeon

    URL: http://svn.FreeBSD.org/base/user/jmallett/octeon/

    Contact: Juli Mallett <jmallett at FreeBSD.org>

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

Open tasks:

     1. An import of select pieces of the Cavium simple executive as vendor
        code is planned to make it possible to remove locally-maintained
        copies of Cavium headers and shim functions, many of which are
        vastly outdated.
     2. The Linux opencrypto port contains an opencrypto driver for the
        cryptographic coprocessor which look relatively easy to port.
     3. Support for SMP is a high-priority item that will be addressed
        after the 64-bit changes are stabilized.
     4. PCI and USB bus and device support is planned to follow the import
        of the simple executive functions and headers.
     5. The rgmx ethernet driver currently copies packets in and out of
        mbufs rather than putting pointers to mbuf storage into hardware,
        which results in bad network performance.


    Contact: Nathan Whitehorn <nwhitehorn at FreeBSD.org>

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

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

    Mark Linimon is working on getting us more XServes.

Open tasks:

     1. Start the hard work of fixing individual packages.

FreeBSD/powerpc64 port

    Contact: Nathan Whitehorn <nwhitehorn at FreeBSD.org>

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


    Contact: Marius Strobl <marius at FreeBSD.org>
      * Yet another bug causing unaligned accesses in NFS server operation
        has been found and fixed in FreeBSD 7 and 8. Unlike as announced in
        the last Status Report, no Erratum Notices regarding these problems
        have been issued as it quickly became obvious that dealing with so
        many of them is impractical, especially since the fixes unveiled
        secondary bugs.
      * Alexander Motin has fixed several bugs in netgraph(4) nodes in
        9.0-CURRENT which also caused unaligned accesses, so these should
        work now on sparc64.
      * Peter Jeremy has contributed several fixes for the sparc64 FPU
        emulation code, which now passes a test suite built around
        TestFloat. These fixes were incorporated into FreeBSD 6, 7 and 8
        but unfortunately did not quite make it into 7.3-RELEASE but will
        be present in 8.1-RELEASE and 7.4-RELEASE.
      * Support for UltraSPARC-IV and -IV+ CPUs has been added and will be
        present in 8.1-RELEASE and 7.4-RELEASE. Thus Sun Fire V890 is now
        supported and stable, though due to the lack of properly working
        test hardware, not with configurations consisting of a mix of US-IV
        and -IV+ CPUs. However, performance is not yet where it should be,
        i.e. a buildworld on a 4x1.5GHz US-IV+ Sun Fire V890 takes nearly 3
        hours while on a Sun Fire V440 with (theoretically) less powerful
        4x1.5GHz US-IIIi CPUs it takes just over 1 hour. So far it is
        unclear what is causing this, it might have to with what appears to
        be a silicon bug of US-IV+ CPUs encountered and worked around while
        adding support for these.
      * Work on getting Sun Fire V1280 supported has been continued. A
        third firmware bug has been worked around and a driver for the
        BootBus controller, which provides console and time-of-day services
        in these machines, has been written. It is now possible to netboot
        Sun Fire V1280 into multi-user mode. Unfortunately, they do not run
        stable as processes may hang when transitioning to another CPU,
        likely due to what the OpenSolaris code refers to as Cheetah+
        erratum 25, but which unfortunately is not part of the publicly
        available US-III+/++ errata document. Efforts on understanding this
        problem are still ongoing.
      * Mark Linimon is trying to find volunteers interested in helping to
        fix packages on sparc64.


    URL: http://info.iet.unipi.it/~luigi/geom_sched/

    Contact: Luigi Rizzo <luigi at FreeBSD.org>
    Contact: Fabio Checconi <fabio at FreeBSD.org>

    geom_sched is a GEOM module that supports pluggable schedulers for disk
    I/O requests. The main algorithm supported at the moment is an
    anticipatory Round Robin scheduler, which is especially effective in
    presence of workloads with highly random disk accesses. Other
    schedulers are available on the geom_sched page.

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

    To use the module, say on disk ad4, all you need to do is:

    kldload geom_sched
    geom sched insert ad4

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

Google Summer of Code 2010

    URL: http://socghop.appspot.com/org/home/google/gsoc2010/freebsd

    Contact: Brooks Davis <brooks at FreeBSD.org>
    Contact: Robert Watson <rwatson at FreeBSD.org>

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

ipfw and dummynet enhancements

    URL: http://info.iet.unipi.it/~luigi/dummynet/
    URL: http://www.youtube.com/watch?v=r8vBmybeKlE
    URL: http://info.iet.unipi.it/~luigi/qfq/

    Contact: Luigi Rizzo <luigi at FreeBSD.org>

    We have recently completed a massive revision of ipfw and dummynet, and
    the result has been committed to HEAD and stable/8. The main features
    introduced with this work are:
      * ipfw now has much faster skipto instructions, including table-based
        ones. The complexity for rule lookups is now O(1) or O(log N) as
        opposed to the O(N) that we had before. People using "skipto
        tablearg" or "pipe tablearg" with large numbers of rules or pipes
        should see a significant performance improvement;
      * Expensive operations in response to userland reconfigurations now
        do not interfere with kernel filtering for more than the time
        required to swap a pointer;
      * You can now use ports and the "tos" field as lookup argument for
        tables. This might allow some simplifications in rulesets which in
        turn result in faster execution time;
      * ipfw can now send packets matching rules with a 'log' attribute to
        the "ipfw0" pseudo interface, where you can run tcpdump to
        implement additional filtering, logging etc.;
      * dummynet now supports many different scheduler types, to adapt to
        different needs people may have in terms of performance and service
        guarantees. Existing schedulers now include FIFO, WF2Q+, Deficit
        Round Robin, Priority, and QFQ. More schedulers can be implemented
        as loadable kernel modules.;
      * The kernel side has a backward-compatible interface so you can use
        a RELENG_7 or RELENG_8 version of /sbin/ipfw to configure the
        firewall and dummynet.

Open tasks:

     1. There is ongoing work on optimizing the deletion of idle entries in
        dummynet. This should be completed shortly.
     2. A longer term goal is to parallelize operation in presence of ipfw
        dynamic rules, which currently require exclusive lock on a hash
        table containing dynamic rules.

IPv6 without legacy IP kernel


    Contact: Bjoern A. Zeeb <bz at FreeBSD.org>

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

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

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

LDAP support in base system

    Contact: Xin ZHAO <quakelee at geekcn.org>
    Contact: Xin LI <delphij at FreeBSD.org>

    FreeBSD is currently lacking support of LDAP based authentication and
    user identity.

    We have integrated a stripped down OpenLDAP library (renamed to avoid
    conflict with ports OpenLDAP libraries), as well as some changes to
    OpenSSH as well as plugins for PAM, NSS and can support.

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

Open tasks:

     1. Further code review.
     2. Make the changes less intrusive.
     3. Fix issues found in production deployment.

meetBSD 2010 -- The BSD Conference

    URL: http://www.meetbsd.org

    Contact: meetBSD Information <info at meetbsd.org>

    meetBSD is an annual event gathering users and developers of the BSD
    operating systems family, mostly FreeBSD, NetBSD and OpenBSD. Afer the
    special California edition, meetBSD Wintercamp in Livigno, this year we
    are back to Krakow, Poland.

    meetBSD 2010 will be held on 2-3 July at Jagiellonian University.

    See the conference main web site for more details.


    URL: http://mfsbsd.vx.sk

    Contact: Martin Matuska <mm at FreeBSD.org>

    mfsBSD is a set of scripts that generate a bootable image (e.g. an ISO
    file) that creates a working minimal installation of FreeBSD that is
    completely loaded into memory (mfs).

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

    A new feature is a script called "zfsinstall" that automates a ZFS-only
    install of FreeBSD from a mfsbsd ISO (script works with 8-STABLE and
    9-CURRENT, sample ISO images can be downloaded from the project web

Open tasks:

     1. Bundle distribution installation files (target: 8.1-RELEASE).
     2. Make zfsinstall 7.3 compatible (mostly gpart syntax).
     3. Enable zfsinstall combination with sysinstall (zfsinstall prepares
        drives, sysinstall installs distribution).
     4. Integrate toolset into FreeBSD source (tools?).

Modular Congestion Control

    URL: http://caia.swin.edu.au/urp/newtcp/
    URL: http://svn.FreeBSD.org/viewvc/base/projects/tcp_cc_head/

    Contact: Lawrence Stewart <lstewart at FreeBSD.org>

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

Open tasks:

     1. Solicit external testing.
     2. Commit to head.

Multichannel playback in HDA sound driver (snd_hda)

    Contact: Alexander Motin <mav at FreeBSD.org>

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

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

Open tasks:

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

NAND Flash framework for embedded FreeBSD


    Contact: Grzegorz Bernacki <gjb at semihalf.com>
    Contact: Rafal Jaworowski <raj at semihalf.com>

    The purpose of this project is to provide embedded FreeBSD with a
    generic and flexible scheme to support NAND Flash devices. The
    framework provides a set of KOBJ interfaces inside the kernel, which
    allow for uniform and flexible management of the NAND devices:
      * NAND Flash Controller (NFC) layer, into which back-end drivers for
        individual controllers plug in (implementing low-level routines
        specific to a given NAND controller)
      * Generic (common) NAND layer which provides means to perform
        operations on the flash devices in an abstract way (read, program,
        erase, get status etc.)
      * NAND character device, which exports chip device as a standard
        character device and allows to read/write directly to a device, as
        well as perform other specific operations by using ioctl.
      * GEOM NAND class for basic access through GEOM.

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

    Current state highlights:
      * The framework is considered functionally complete (including
      * Framework compliant back-end drivers are available for the
        following NAND Flash controller (NFC) chips:

      * Freescale MPC8572 (PowerPC)
      * Marvell MV-78100 (ARM)
      * Samsung S3C24X0 (ARM)

Open tasks:

     1. Extend interface with features / options suggested by early
        adopters of the code.
     2. Complete, clean up, merge with HEAD.

net80211 rate control framework

    URL: http://people.FreeBSD.org/~rpaulo/ratectl.diff

    Contact: Rui Paulo <rpaulo at FreeBSD.org>

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

    If you are doing rate control algorithm or research on rate control
    algorithms for wireless networks, FreeBSD is now an ideal candidate for
    testing your project!

Out of Tree Toolchain

    Contact: Warner Losh <imp at bsdimp.com>

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

Open tasks:

     1. Create ports for latest binutils. This work is nearly complete, and
        is waiting for integration of two branches that are collapsing soon
        (the 'tbemd' branch from Warner and the mips collapse from Juli
     2. Create ports for gcc. This work has been started. Native builds are
        straight forward, but cross builds have a buildworld dependency at
        the moment. These dependencies are being worked out, as well as
        some gcc library dependencies.
     3. Documentation needs to be written for how to use all of this.

PC-BSD PC-SysInstall Backend

    URL: http://www.pcbsd.org
    URL: http://trac.pcbsd.org/browser/pcbsd/trunk/pc-sysinstall

    Contact: Kris Moore <kmoore at FreeBSD.org>

    We are currently doing a lot of code cleanup in the new System
    Installer backend for PC-BSD, pc-sysinstall, which can be used to
    install regular FreeBSD as well. Some new features have already been
    implemented, such as:
      * Improved ZFS support, raidz, mirroring, multiple mount-points
        per-pool, etc.
      * Support for GPT/EFI on "Full" installations, allowing us to go
        beyond the 2TB barrier.
      * MBR Slice/Partition manager.
      * geli passphrase support.

Open tasks:

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


    URL: http://dougbarton.us/portmaster-proposal.html

    Contact: Doug Barton <dougb at FreeBSD.org>

    Portmaster version 2.22 is now in the ports tree and has full support
    for the following new features:
      * Using the INDEX file to show that an installed port needs updating.
      * Support for installation of packages in 'try packages first,'
        --packages-only, --packages-if-newer, and --packages-build modes.
      * A new --delete-build-only option to delete ports/packages that are
        not needed at run time.
      * Updating of the terminal title bar to show what is being worked on,
        and how much more is left to do.
      * Support for custom definitions of the packages repository and INDEX
      * The ability to operate without any local ports tree at all with the
        --index-only and --packages-only options.
      * A new dialog to confirm the list of ports to be installed.

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

Open tasks:

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

Ports Collection

    URL: http://www.FreeBSD.org/ports/
    URL: http://portsmon.FreeBSD.org/index.html
    URL: http://www.FreeBSD.org/portmgr/index.html
    URL: http://tinderbox.marcuscom.com/

    Contact: Thomas Abthorpe <portmgr-secretary at FreeBSD.org>
    Contact: Port Management Team <portmgr at FreeBSD.org>

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

    The ports count now exceeds 21,500 ports, and counting. The open PR
    count currently is over 1000. With the release of FreeBSD 7.3, it is
    hoped this count will drop drastically.

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

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

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

Open tasks:

     1. Looking for help fixing ports broken on 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.
     4. Major commits expected soon include the latest Xorg, KDE4, and
        Gnome updates.


    Contact: Ion-Mihai Tetcu <itetcu at FreeBSD.org>
    Contact: Josh Paetzel <jpaetzel at FreeBSD.org>

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

Open tasks:

     1. Bring VMware server online and provision VMs.
     2. Refactor QAT code to handle concurrent builds.
     3. Migrate the existing QAT to the new setup.

Release Engineering Team

    URL: http://www.FreeBSD.org/releng/

    Contact: Release Engineering Team <re at FreeBSD.org>

    The Release Engineering Team announced FreeBSD-7.3 on March 23rd, 2010.
    The schedule has been set for FreeBSD-8.1 with the release date planned
    for mid July 2010.

Rewrite of FreeBSD read/write path using vnode page

    URL: http://svn.freebsd.org/viewvc/base/user/kib/vm6/
    URL: http://wiki.FreeBSD.org/VM6

    Contact: Konstantin Belousov <kib at FreeBSD.org>
    Contact: Peter Holm <pho at FreeBSD.org>

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

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

Open tasks:

     1. We need wider testing and reviews.

SUJ: Journaled Softupdates

    URL: http://jeffr_tech.livejournal.com/

    Contact: Jeff Roberson <jeff at FreeBSD.org>

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

TCP/UDP connection groups

    Contact: Robert Watson <rwatson at FreeBSD.org>
    Contact: FreeBSD network mailing list <freebsd-net at FreeBSD.org>

    This on-going project is to reduce tcbinfo/udbinfo lock and cache line
    contention; this global lock protects access to connection lists, and
    while it is a read-write lock, it is acquired for every in-bound packet
    (briefly) to look up the connection. This project adds a new connection
    group table, which assigns connections to groups, each of which has CPU
    affinity and aligns with RSS-selected queues in high-end 1gbps and most
    10gbps implementations. The following tasks have been completed:
      * Teach libkvm to handle dynamic per-cpu storage (DPCPU) to improve
        crashdump analysis of per-CPU data.
      * Teach netstat to monitor netisr DPCPU queues for live kernels and
      * Create a new inpcbgroup abstraction, used for UDP and TCP.
      * Distribute UDP and TCP connections (inpcbs) over groups based on
        4-tuple bindings.
      * Replicate membership across all groups for wildcard socket
      * Write new TCP/UDP connection and binding regression tests.

    The following tasks remain:
      * Migrate from naive work assignment algorithm to RSS assignment.
      * Modify device driver KPI to allow consistent initialization and
        configuration between stack and hardware.
      * Complete migration to dynamic, per-CPU network statistics in TCP,
        UDP, and IP.
      * Add socket options to query effective CPU affinity of connections
        from userspace.
      * On supporting hardware, allow affinity for a specific connection to
        be explicitly migrated using a socket option.
      * Detailed performance evaluation and optimization.

    This work is being performed in the FreeBSD Perforce repository, and is
    sponsored by Juniper Networks. Connection groups and related features
    are slated for inclusion in FreeBSD 9.0 (with possible backports to
    8-STABLE of some features).

The FreeBSD Foundation

    URL: http://www.FreeBSDFoundation.org

    Contact: Deb Goodkin <deb at FreeBSDFoundation.org>

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

    We funded a project by Murray Stokely to provide Closed Captioning of
    FreeBSD Technical Videos in the BSD Conferences YouTube Channel. We
    were very pleased that the foundation funded HAST project completed.

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

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

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

    Follow us on Twitter now!

    We are fund-raising for 2010 now! Find out more at

The FreeBSD German Documentation Project

    URL: http://doc.bsdgroup.de

    Contact: Johann Kois <jkois at FreeBSD.org>
    Contact: Benedict Reuschling <bcr at FreeBSD.org>

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

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

    FreeBSD users with German language skills are always welcome to join
    our efforts in translating the documentation and/or fixing bugs.

Open tasks:

     1. Translate more parts of the documentation and the German website.
     2. Keep the current documentation up to date.
     3. Report bugs to de-bsd-translators at de.FreeBSD.org.

The FreeBSD Hungarian Documentation Project

    URL: http://www.FreeBSD.org/hu/
    URL: http://www.FreeBSD.org/doc/hu/
    URL: http://wiki.FreeBSD.org/HungarianDocumentationProject

    Contact: Gábor Kövesdán <gabor at FreeBSD.org>
    Contact: Gábor Páli <pgj at FreeBSD.org>

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

Open tasks:

     1. Translate release notes.
     2. Translate articles.
     3. Translate web pages.
     4. Read translations, send feedback.

The tbemd branch

    Contact: Warner Losh <imp at bsdimp.com>

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

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

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

Open tasks:

     1. Finish migrating to bsd.arch.inc.mk.
     2. Reduce diffs between the branch and the mainline before the
     3. Documentation needs to be written for how to use all of this.


    URL: http://www.selasky.org/hans_petter/video4bsd/

    Contact: Hans Petter Selasky <hselasky at FreeBSD.org>

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

    If you like this project or want me to spend more time on it, you can
    support it by transferring money to hselasky at c2i.net via paypal.

Open tasks:

     1. Testing and bugfixes.
     2. Add support for more device drivers.


    URL: http://hub.opensolaris.org/bin/view/Community+Group+zfs/WebHome

    Contact: Pawel Jakub Dawidek <pjd at FreeBSD.org>
    Contact: Martin Matuska <mm at FreeBSD.org>
    Contact: Xin LI <delphij at FreeBSD.org>

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

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

Open tasks:

     1. Bring ZFS v15 changes to svn -HEAD and MFC.
     2. Further polish the code in perforce and test for functionality,

    (c) 2010 The FreeBSD Project. All rights reserved.
freebsd-announce at freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-announce-unsubscribe at freebsd.org"

More information about the Ukfreebsd mailing list