Skip site navigation (1) Skip section navigation (2)

Introduction

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 reading.

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


Google Summer of Code

Projects

FreeBSD Team Reports

Network Infrastructure

Kernel

Documentation

Userland Programs

Architectures

Ports

Miscellaneous



Google Summer of Code


Binary Package Patch Infrastructure — pkg_patch

Links
Wiki page URL: http://wiki.FreeBSD.org/IvanVoras/pkg_patch

Contact: Ivan Voras <ivoras@FreeBSD.org>

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 Ports 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.

Collective Resource Limits (aka. Jobs)

Links
Project page on the wiki URL: http://wiki.FreeBSD.org/G%C3%A1borSoC2010
Sources in Perforce URL: http://p4db.FreeBSD.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2010/gabor_jobs/irix_jobs

Contact: G�bor K�vesd�n <gabor@FreeBSD.org>

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 enforcement.
  2. Implement limit enforcements for all of the limits supported by IRIX.
  3. Add support for userland facilities and make utilities jobs-aware, like showing jobs in ps(1), etc.

ExtFS Status Report

Links
URL: http://wiki.FreeBSD.org/SOC2010ZhengLiu

Contact: Zheng Liu <gnehzuil@gmail.com>

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

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@gmail.com>

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.

Google Summer of Code 2010

Links
Summer of Code 2010 Projects URL: http://wiki.FreeBSD.org/SummerOfCode2010Projects

Contact: Brooks Davis <brooks@FreeBSD.org>
Contact: Tim Kientzle <kientzle@FreeBSD.org>
Contact: Robert Watson <rwatson@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 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.


Making Ports Work with Clang

Links
URL: http://wiki.FreeBSD.org/SOC2010AndriusMorkunas
URL: http://wiki.FreeBSD.org/PortsAndClang
GSoC2010 patches URL: http://rainbow-runner.nl/~andrius/soc/
All patches for ports URL: http://rainbow-runner.nl/clang/patches/

Contact: Andrius Morkunas <hinokind@gmail.com>

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.

Namecache Improvements — dircache

Links
URL: http://wiki.FreeBSD.org/SOC2010GlebKurtsov

Contact: Gleb Kurtsou <gk@FreeBSD.org>

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.


Package Management Library — libpkg

Links
Wiki page URL: http://wiki.FreeBSD.org/SOC2010DavidForsythe
Main project page URL: http://code.google.com/p/libpkg

Contact: David Forsythe <dforsyth@FreeBSD.org>

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 after.


Packet-Capturing Stack — ringmap

Links
Project-Page on Google Code URL: http://code.google.com/p/ringmap/
Slides URL: http://ringmap.googlecode.com/files/ringmap_slides.pdf

Contact: Alexander Fiveg <afiveg@FreeBSD.org>

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.


Projects


Clang Replacing GCC in the Base System

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

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

In the past quarter we imported Clang into FreeBSD and it is being built by default on i386/amd64/powerpc. We have not yet committed 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.

DAHDI/FreeBSD Project

Links
URL: http://www.asterisk.org/dahdi/
Project Status URL: https://spreadsheets.google.com/pub?key=0Arw6eRL10yIwdGhLdGJWUHF4b3ExQzBsd3BGd2tublE&hl=en&single=true&gid=0&output=html

Contact: Max Khon <fjoe@samodelkin.net>

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

Links
Perforce repository URL: http://p4web.freebsd.org/@md=d&cd=//&c=wHa@//depot/projects/soc2010/disaudit/?ac=83
Project Wiki URL: http://wiki.FreeBSD.org/SOC2010SergioLigregni

Contact: Sergio Ligregni <ligregni@FreeBSD.org>

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.

General-Purpose DMA Framework

Links
Project description on FreeBSD wiki URL: http://wiki.FreeBSD.org/SOC2010JakubKlama
Project branch on Perforce URL: http://p4web.FreeBSD.org/@md=d&cd=//&c=eCv@//depot/projects/soc2010/jceel_dma/?ac=83

Contact: Jakub Klama <jceel@FreeBSD.org>

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

Links
Code snapshot URL: http://acm.poly.edu/~spawk/geom_pseudoraid-20100715.tbz

Contact: Boris Kochergin <spawk@acm.poly.edu>

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.

GPIO Framework

Links
URL: http://wiki.FreeBSD.org/GPIO

Contact: Luiz Otavio O Souza <loos.br@gmail.com>
Contact: Oleksandr Tymoshenko <gonzo@FreeBSD.org>

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 RouterBoard.


New System Installer — pc-sysinstall

Links
Initial commit message URL: http://lists.FreeBSD.org/pipermail/svn-src-all/2010-June/025660.html
BSDCan slides URL: http://www.BSDCan.org/2010/schedule/attachments/142_pc-sysinstall-kris-moore-2010.pdf

Contact: Kris Moore <kris@pcbsd.org>
Contact: M. Warner Losh <imp@FreeBSD.org>

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 setups).
  • 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 inspection.

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

Links
OpenAFS home page URL: http://openafs.org
FreeBSD port for the OpenAFS 1.5.75 release URL: http://web.mit.edu/freebsd/openafs/openafs.shar

Contact: Benjamin Kaduk <kaduk@mit.edu>
Contact: Derrick Brashear <shadow@gmail.com>

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@openafs.org.

Open tasks:

  1. Fix the {get,put}pages vnode operations for more reliable mmap() operation.
  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 bsd.kmod.mk kernel-module build infrastructure.

Resource Containers

Contact: Edward Tomasz Napierała <trasz@FreeBSD.org>

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.


V4L Support in Linux Emulator

Links
URL: http://opal.com/freebsd/sys/compat/linux/

Contact: J.R. Oldroyd <fbsd@opal.com>

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.



FreeBSD Team Reports


FreeBSD Bugbusting Team

Links
FreeBSD Support page URL: http://www.FreeBSD.org/support.html#gnats
Resources and documentation available for Bugbusting URL: http://wiki.FreeBSD.org/BugBusting
Information on Bugathons URL: http://wiki.FreeBSD.org/Bugathons
Links to all of the auto-generated PR reports URL: http://people.FreeBSD.org/~linimon/studies/prs/
PRs recommended for committer evaluation by the bugbusting team URL: http://people.FreeBSD.org/~linimon/studies/prs/recommended_prs.html
PRs considered easy by the bugbusting team URL: http://people.FreeBSD.org/~linimon/studies/prs/easy_prs.html
Summary Chart of FreeBSD PRs URL: http://people.FreeBSD.org/~linimon/studies/prs/prs_for_all_groups.html

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

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 PRs.

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@FreeBSD.org.

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@FreeBSD.org>

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) years.

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

Release Engineering Team

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

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

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.


The FreeBSD Foundation Status Report

Links
URL: http://www.FreeBSDFoundation.org

Contact: Deb Goodkin <deb@FreeBSDFoundation.org>

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 Napierał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 http://www.FreeBSDFoundation.org/donate/.

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



Network Infrastructure


Enhancing the FreeBSD TCP Implementation

Links
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@FreeBSD.org>

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.

libnetstat(3)

Links
Wiki Page URL: http://wiki.FreeBSD.org/LibNetstat
Patches URL: http://people.FreeBSD.org/~pgj/libnetstat/
Perforce Depot (SoC 2009) URL: http://p4web.freebsd.org/@md=d&cd=//depot/projects/soc2009/&c=mGl@//depot/projects/soc2009/pgj_libstat/?ac=83

Contact: G�bor P�li <pgj@FreeBSD.org>
Contact: Aman Jassal <aman@FreeBSD.org>

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.


Kernel


Interrupt Threads

Contact: John Baldwin <jhb@FreeBSD.org>

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

Links
FreeBSD Foundation Announcement URL: http://www.FreeBSDFoundation.org/project%20announcements.shtml#Bjoern
Perforce Workspace URL: http://p4web.FreeBSD.org/@md=d&cd=//&c=Z8Q@//depot/user/bz/vimage/src/?ac=83

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

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@FreeBSD.org>

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 hard-coded.

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.

ZFS

Links
FreeBSD ZFS Wiki URL: http://wiki.FreeBSD.org/ZFS
Latest FreeBSD ZFS development tree URL: http://perforce.FreeBSD.org/depotTreeBrowser.cgi?FSPC=//depot/user/pjd/zfs

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

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.


Documentation


The FreeBSD German Documentation Project

Links
Website of the FreeBSD German Documentation Project URL: http://doc.bsdgroup.de
Mailing lists for the coordination of our work and the place where you can report bugs back to us URL: http://www.FreeBSD.de/mailinglists.html

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

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 yet.

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

Links
Hungarian FreeBSD web pages URL: http://www.FreeBSD.org/hu/
Hungarian FreeBSD documentation URL: http://www.FreeBSD.org/doc/hu/
The FreeBSD Hungarian Documentation Project's Wiki Page URL: http://wiki.FreeBSD.org/HungarianDocumentationProject
Perforce Deport for the FreeBSD Hungarian Documentation Project URL: http://p4web.FreeBSD.org/@md=d&cd=//depot/projects/docproj_hu/&c=aXw@//depot/projects/docproj_hu/?ac=83

Contact: G�bor K�vesd�n <gabor@FreeBSD.org>
Contact: G�bor P�li <pgj@FreeBSD.org>

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

Links
Japanese FreeBSD Web Pages URL: http://www.FreeBSD.org/ja/
The FreeBSD Japanese Documentation Project's Web Page URL: http://www.jp.FreeBSD.org/doc-jp/

Contact: Hiroki Sato <hrs@FreeBSD.org>
Contact: Ryusuke Suzuki <ryusuke@FreeBSD.org>

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 www.FreeBSD.org.
  2. Pre-/post-commit review of the translation.

The FreeBSD Spanish Documentation Project

Links
Primer for translators URL: http://www.FreeBSD.org/doc/es/articles/fdp-es/

Contact: G�bor K�vesd�n <gabor@FreeBSD.org>
Contact: Vicente Carrasco Vay� <carvay@FreeBSD.org>

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 nowadays.

Open tasks:

  1. Review and update existing translations.


Userland Programs


BSD-Licensed grep in Base System

Links
Sources in Perforce URL: http://p4db.FreeBSD.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2008/gabor_textproc/grep

Contact: G�bor K�vesd�n <gabor@FreeBSD.org>

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

Links
The latest patch for the base system URL: http://kovesdan.org/patches/iconv-20100708.diff

Contact: G�bor K�vesd�n <gabor@FreeBSD.org>

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.

FreeBSD Services Control — fsc

Links
URL: http://people.FreeBSD.org/~trhodes/fsc/

Contact: Tom Rhodes <trhodes@FreeBSD.org>

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.


Architectures


Flattened Device Tree for Embedded FreeBSD

Links
Project wiki pages URL: http://wiki.FreeBSD.org/FlattenedDeviceTree

Contact: Rafal Jaworowski <raj@semihalf.com>

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 resources.

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 approach.

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 approach.

FreeBSD on the Sony Playstation 3

Links
Playstation 3 SVN repository URL: http://svn.FreeBSD.org/viewvc/base/user/nwhitehorn/ps3/

Contact: Nathan Whitehorn <nwhitehorn@FreeBSD.org>

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/avr32

Links
URL: http://wiki.FreeBSD.org/FreeBSD/avr32

Contact: Oleksandr Tymoshenko <gonzo@FreeBSD.org>

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.


FreeBSD/powerpc64

Links
Install CDs for powerpc64 URL: http://people.FreeBSD.org/~nwhitehorn/FreeBSD-9.0-20100715-SNAP-powerpc64/

Contact: Nathan Whitehorn <nwhitehorn@FreeBSD.org>

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

FreeBSD/sparc64

Contact: Marius Strobl <marius@FreeBSD.org>

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 well.

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.


Ports


Chromium Web Browser

Links
Main chromium site URL: http://chromium.hybridsource.org
PR for chromium port URL: http://www.FreeBSD.org/cgi/query-pr.cgi?pr=146302

Contact: Ruben <chromium@hybridsource.org>

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.


FreeBSD Haskell

Links
Wiki Page of the Project URL: http://wiki.FreeBSD.org/Haskell
FreeBSD Haskell Ports URL: http://www.FreeBSD.org/ports/haskell.html
The freebsd-haskell Mailing List URL: http://www.haskell.org/mailman/listinfo/freebsd-haskell

Contact: G�bor P�li <pgj@FreeBSD.org>
Contact: Giuseppe Pilichi <jacula@FreeBSD.org>
Contact: Ashish Shukla <ashish@FreeBSD.org>

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.

Ports Collection

Links
URL: http://www.FreeBSD.org/ports/
URL: http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributing-ports/
URL: http://portsmon.FreeBSD.org/index.html
URL: http://www.FreeBSD.org/portmgr/index.html
URL: http://blogs.FreeBSDish.org/portmgr/
URL: http://www.twitter.com/freebsd_portmgr/
URL: http://www.facebook.com/group.php?gid=135441496471197
URL: http://tinderbox.marcuscom.com/

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

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/ freeze.

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/bsd.ldap.mk.
  • gahr: Inclusion of USE_GL=glew.
  • pgollucci: Changes to Mk/bsd.*apache.mk 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 Ports Management Team is currently assessing the fallout and it will come up with guidelines and documentation in due time.

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.


Miscellaneous


BSD-Day@2010

Links
URL: http://wiki.freebsd.org/BSDDay_2010

Contact: G�bor P�li <pgj@FreeBSD.org>

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 area.

BSDCan

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

Contact: Dan Langille <dvl@FreeBSD.org>

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.

meetBSD 2010 — The BSD Conference

Links
URL: http://www.meetbsd.org
URL: http://picasaweb.google.com/meetbsd/MeetBSD2010Day1#
URL: http://picasaweb.google.com/meetbsd/MeetBSD2010Day2#
URL: http://picasaweb.google.com/meetbsd/MeetBSD2010SocialEvent#

Contact: meetBSD Information <info@meetbsd.org>

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

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

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!


News Home | Status Home