Section Navigation

Introduction

This report covers FreeBSD-related projects between July and
September 2010. It is the third of the four reports planned for
2010. During this period, we were victims of one
of the biggest BSD events of the year — EuroBSDCon.
We hope that the ones of you who have been able to attend it
have enjoyed your stay. Another good news is that work on the
new minor versions of FreeBSD, 7.4 and 8.2, is progressing well.

This report, with 55 entries, is the longest report in
the whole history and shows a good condition of the FreeBSD
community.

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

Please note that the deadline for submissions covering the period
between October and December 2010 is January 15th, 2011.

FreeBSD-CURRENT runs on the AR9132 SoC. Minor platform-specific
tweaks are needed to use it on a given piece of hardware (eg.,
where in flash the Ethernet MAC address is stored.) The AR910x
wireless MAC/PHY is supported. The only available test platform
uses a 2.4GHz radio; 5GHz 11a mode has not been tested. As with
other Atheros chipset support in FreeBSD, 11n support is not yet
finished. The current development platform is the TP-Link
TP-WN1043ND 802.11n wireless bridge/router. It is currently being
successfully used as a 11bg access point.

Open tasks:

USB support is currently not functional.

There is currently no support for the Realtek Gigabit
switch/PHY chip. This is being worked on.

pkg_patch is a tool meant to be used with the rest of the
pkg_* utilities whose job is to create and apply binary patches
to FreeBSD package archives. The SoC project was successfully
completed but there are some open issues about the integration of
the tool in the FreeBSD system. Some changes are necessary to the
port/patch infrastructure to support the "update" mode instead of
"remove+add".

Open tasks:

Solve pending issues about the ports install/upgrade
workflow, probably within the pkg_install2
effort.

This project has two goals: pre-allocation algorithm for ext2fs
and ext4 read-only mode. Aim of the pre-allocation algorithm is
to implement a reservation window mechanism. This mechanism has
been implemented and a patch have been submitted. The aim of
ext4 read-only mode is to make it possible to read ext4 file
systems in read-only mode when the disk is formatted with
default features. Until now it can read data from ext4 file
systems with default features in read-only mode. A patch has
been submitted a patch to the freebsd-fs mailing list and there
is a new kernel module, called ext4fs, is under development for
it.

Ringmap is a complete FreeBSD packet capturing stack specialized for
very high-speed networks. The goal of this project is to develop the
software for efficient packet capturing and integrate it with the
generic network drivers and libpcap.

The BSD# Project is devoted to porting the Mono .NET framework
and applications to the FreeBSD operating system.

Mono 2.8 has been released a few days ago and is already
available in the BSD# repository. The update breaks a few ports
so the lang/mono update in the FreeBSD ports tree will be delayed
until those programs are fixed for a smoother update
experience.

Work is in progress to include some long-awaited ports such as
deskutils/gnome-do but they require a lot of testing and hacking
because they have clearly been designed to run on GNU/Linux and
portability has never been a priority (which is quite amusing if
you consider portability is the main reason to be for mono).

Open tasks:

If you have some time, test mono ports and send
feedback.

If you have more time, join the BSD# Team! There are many
ways to help out!

Currently low priority, some mono hackers who do not use
FreeBSD would be interested in a debug live-image of FreeBSD to help us
diagnose and fix bugs more effectively.

During the previous few months several additions were
developed to FreeBSD's built-in SNMP daemon — bsnmpd(1).

First a snmp_wlan(3) module was developed that allows
monitoring and configuration of wlan(4) interfaces operating in
various modes, including statistics, attached/neighboring
station information, MAC access control entries and mesh routing
information. The module's code was submitted in SVN and is now
a part of the FreeBSD base system.

Next, SNMPv3 authentication and encryption support were added
to bsnmplib(3), bsnmpd(1) and bsnmptools (which are available
via the ports system currently). The message digest and cipher
calculation calls use the implementation of the relevant
cryptographic algorithm implementation in OpenSSL's crypto(3)
library. bsnmpd(1) may still optionally be compiled without the
crypto(3) library, in which case only unauthenticated plain-text
SNMPv3 PDUs may be processed.

In addition, a snmp_usm(3) module was developed that is used to
configure SNMPv3 users parameters (name, authentication &
encryption algorithms used and relevant keys, etc.) into
bsnmpd(1) as per RFC 3414.

Finally, a snmp_vacm(3) module was developed that allows
configuration of view-based access control as per RFC 3415, and
relevant checks are made by bsnmpd(1) that allow or restrict
access to specific SNMPv1/SNMPv2 communities or SNMPv3 users to
certain MIB subtrees as per the configuration in the
snmp_vacm(3) module. If none of the SNMPv3-related modules is
loaded, bsnmpd(1) preserves its current behavior with
SNMPv1/SNMPv2c PDUs.

Capsicum is a lightweight OS capability and sandbox framework
developed at the University of Cambridge Computer Laboratory,
supported by a grant from Google. Capsicum extends the POSIX API,
providing several new OS primitives to support object-capability
security on UNIX-like operating systems: capabilities, a new
sandboxed capability mode for processes, anonymous shared memory
objects, process descriptors, and a modified C runtime able to
support distributed applications within sandboxes. Capsicum
has been prototyped on FreeBSD -CURRENT, with a 8-STABLE
backport.

Capsicum is intended to supplement existing system-centric
mandatory access control protections by providing an
application-centric protection model, which better supports
compartmentalised user programs that set up one (or many)
sandboxes to process untrustworthy data in. A number of
applications, from tcpdump to the Chromium web browser, have been
modified to use sandboxing to confine risky activities such as
the parsing of untrusted packets and HTML/JavaScript
rendering.

We plan to begin merging the core Capsicum kernel features
to FreeBSD -CURRENT in November/December 2010 once a number of
known problems have been resolved. Following a KBI analysis, we
will consider merging our 8-STABLE backport to Subversion. For
the time being, and while APIs stabilise, we plan to distribute
the Capsicum libraries via ports. However, simply having the
kernel features in place is sufficient to support sandboxing in
tcpdump and Chromium.

The Capsicum paper by Robert Watson / Jonathan Anderson
(Cambridge) and Ben Laurie / Kris Kennaway (Google) won a best
paper award at the 2010 USENIX Security Symposium!

We recently imported the 2.8 release of Clang into -CURRENT.
This release contains many new features and improvements. The
integrated assembler ships with this version, but it is not
ready for general use yet.

Since r212979, all necessary changes have been committed to be
able to build world with Clang, at least on amd64 and i386. It
can also be installed and run, and we are now starting the
process of shaking out the inevitable bugs.

Because LLVM and Clang are still being improved continuously,
we want to import new versions regularly, approximately every two
months, to gain access to new features, bug fixes and performance
improvements.

There is also an effort on behalf of the ports people, to make
as many ports as possible compile and run properly with Clang.
Most of the time, this means fixing the incorrect assumption that
gcc is the only existing compiler, but sometimes more complicated
issues pop up. Help in this area is greatly appreciated.

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

DAHDI/FreeBSD project is completed. ports/misc/dahdi now contains
the most recent DAHDI/FreeBSD version and additional stuff that is
not available in DAHDI/FreeBSD SVN repository due to licensing and
copyright restrictions (OSLEC echo canceler, experimental zaphfc
driver). Experimental sparc64 support is also implemented and is
currently being tested.

There is a pile of minor changes in queue that will be handled
soon:

Add ability to run asterisk+dahdi under non-root user
account.

Add support for bri_net_ptmp ISDN signalling to asterisk
port and drop old and outdated zaptel+asterisk-bristuff
ports.

Periodic merges from DAHDI/Linux SVN will be continued on a
regular basis with rolling out new DAHDI/FreeBSD releases (most
likely synchronized with DAHDI/Linux releases).

One problem that the project has with its push towards
embedded platforms is with the toolchain. The compilers and
linkers and such in the current FreeBSD support the architectures
generically, but often times silicon vendors produce specialized
toolchains to wring the most performance out of their silicon.
Right now, it is difficult to compile FreeBSD with these tools, as
many manual steps are required to make things 'just so'.

The external toolchain project will leverage some of the work
done by the Clang team to support Clang in the base system
(breaking the strict dependency on CC=cc (except for the broken
intel CC support)). In addition, the orchestration of the build
(make buildworld) will change to avoid bootstrapping certain
tools, or compiling the compilers at all. In addition, support
for using alternate assemblers, linkers, etc., will be added.
The work will be done in subversion in projects/xtc (for
eXternal Tool Chain).

There are three new GELI (a disk encryption GEOM class)
features available in -CURRENT:

AES-XTS encryption. XTS mode is a standard that is
recommended these days for storage encryption. This is the
default now. AES-XTS support was also added to opencrypto
framework and aesni(4) driver.

Multiple encryption keys. GELI will use one encryption key
for at most 2^20 blocks (sectors), as it is not recommended to
use the same encryption key for too much data. It generates a key
array from the master key on attach and uses it accordingly. This
is the default now.

PEFS is a kernel level stacked cryptographic file system, i.e.
it stacks on top of existing mounted filesystems. AES and
Camellia algorithms in XTS mode are supported. The project has
matured since Summer of Code 2009, most important improvements
for last few months include: switch to use XTS encryption mode,
implementation of sparse file support, fixing rename bugs
including race and livelock conditions, addition of ext2 support.
PEFS suite contains pam module facilitating user authentication
with file system key and adding keys to mounted file system on
login. PEFS passes fsx, pjdfstest, blogbench and dbench tests
running on top of UFS and ZFS.

The "tbemd" or Target Big Endian Must Die effort is nearing
completion. Most of the big sweeping changes to the tree have
been committed. The last change, actually pulling the switch, is
stalled waiting for make universe improvements. This work will
change the TARGET_ARCH from a plain 'mips' to 'mipsel' or
'mipseb' based on which endian the platform has. It introduces
the concept of multiple architectures being implemented with one
set of files, and regularizes that design pattern into the FreeBSD
build process. In the past, you had to set TARGET_BIG_ENDIAN=t to
compile for big endian, but that had a number of problems: can not
share /usr/obj between little and big endian targets, sometimes
the produced compilers will not work right unless TARGET_BIG_ENDIAN
is defined in the environment, etc.

Open tasks:

Update make universe to cope with the new architectures
when building kernels.

Userland DTrace support was a FreeBSD Foundation sponsored
project that was developed during this summer. The project aimed
to bring the userland DTracing functionality to FreeBSD as it is
available on OpenSolaris. FreeBSD now supports the pid provider and
the usdt probes. plockstat is available with a separate patch.
Dtruss, a DTrace script that works similarly to ktrace, but with
other advantages was imported into FreeBSD. The mysql-server and
postgresql-server ports also have DTrace support.

The V4L support in the Linux emulator has been merged to
8-STABLE allowing use of video in Skype calls using a camera
supported by the pwcbsd or video4bsd drivers. A known issue for
Skype is that your camera must support YUV420 mode which is what
Skype uses. Note that V4L2 support is not included in the current
work, and remains as a project for anyone interested.

The bugbusting team continue work on trying to make the contents
of the GNATS PR database cleaner, more accessible and easier for
committers to find and resolve PRs, by tagging PRs to indicate the
areas involved, and by ensuring that there is sufficient info
within each PR to resolve each issue.

July saw the addition of Alexander Best (arundel@) to this
bugbusting team, he is helping with the triaging PRs as they come
in, creating patches for problems and working with submitters to
get the solutions tested, and working through the PR backlog.

Also in July, Gavin Atkinson worked with Hans Petter Selasky on
the USB PRs, attempting to go through many of them and determine
the status of each of them. As a result, nearly 10% of the USB
PRs were determined to be closeable, with many more either being
marked as patched already or able to be committed quickly.
Several PRs that only affect the old (pre-8.0) USB stack were
also identified and marked as such. More work will take place
in this area in the future.

August saw us host another bugathon, with an aim of
investigating and getting into a committable state several of the
PRs with patches. Turnout was not as great as in the past
— mainly believed to be due to the short notice, but still
several PRs were progressed, with several commits made and
several PRs closed.

The number of PRs has held steady over the last three months,
with improvements in numbers in some categories (especially usb
and bin) being offset by slight increases in others.

Reports continue to be produced from the PR database, all of
which can be found from the links above. Committers interested
in custom reports are encouraged to discuss requirements with
bugmeister@ — we are happy to create new reports where
needs are identified.

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:

Try to find ways to get more committers helping us with
closing PRs that the team has already analyzed.

Try to get more non-committers involved with the triaging
of PRs as they come in, and generating patches to fix reported
problems.

The FreeBSD KDE team has been actively keeping pace with development cycle
as it is released by the KDE developers. Often having KDE in the
ports tree within the same week it has been released.

An integral part of maintaining KDE exists in supporting the
Qt toolchain. As Nokia releases Qt,
our team is keeping pace making it available in our development repository.

We are fortunate to have a strong contributor base that helps to
keep the process moving along. Our heartfelt thanks go out to all
that have helped with patches, maintaining ports, and responding
with help on the mailing lists.

Open tasks:

KDE 4.5.4 is due out at the end of November, with 4.6.0 to
be released early in 2011.

The FreeBSD KDE team is always looking for helpers, if you are
interested in assisting, please feel free to contact any of our
team members.

We were proud to be a sponsor for MeetBSD 2010 Poland and
KyivBSD 2010 in Kiev, Ukraine. We also committed to
sponsoring BSDDay Argentina 2010, MeetBSD California 2010, and
NYBSDCon 2010 all in November. The Foundation was also
represented at MeetBSD Poland and Ohio LinuxFest.

All outstanding patches have been committed to -CURRENT after a
lengthy review process. It is anticipated to merge all of the
project's SIFTR and reassembly queue-related patches from
-CURRENT to the stable branches in time for the upcoming 7.4 and
8.2 releases.

Work has commenced on a newly funded FreeBSD Foundation project
to bring six modular TCP congestion control (CC) algorithm
implementations (the existing NewReno and five new algorithms:
HTCP, CUBIC, Vegas, HD and CHD) to the FreeBSD kernel. See the
CAIA 5cc and NewTCP websites for more details on the
algorithms.

To support the project's primary deliverable, we will also
be incorporating the CAIA modular CC and Khelp frameworks into
the FreeBSD kernel, along with the Enhanced Round Trip Time Khelp
module.

The project will make a sizable, state-of-the-art
contribution to FreeBSD and in certain areas, add completely novel
work unavailable in any other operating system known to us.

We anticipate a number of benefits, including vastly
improved researcher friendliness, reduced work for TCP oriented
vendors of FreeBSD-based appliances, and greater choice for system
administrators who operate FreeBSD systems in atypical network
scenarios.

Keep an eye on the freebsd-net mailing list for project-related
announcements.

This work is based on OpenBSD 4.5 state of pf(4). It includes
many improvements over the code currently present in FreeBSD. The
actual new feature present in pf45 repository is support for
divert(4), which should allow tools like snort_inline to work
with pf(4) too. This work also enables pfsync(4) to be loaded as
a module as well.

Currently, this work is considered stable and a patch against
-CURRENT has been released on freebsd-pf mailing list.

The reason why this work is based off of OpenBSD 4.5 is that
after this release they have changed the syntax which is not
backwards compatible.

After importing this one the work will go on the newest
version and decisions on it will then be done.

Work on new event timers infrastructure continues. In -CURRENT
amd64, arm (Marvell), i386, mips, pc98, powerpc, sparc64, sun4v
architectures were refactored to use new timers API.

New machine-independent timers management code was written. It
can utilize both legacy periodic and new one-shot timer
operation modes.

Using one-shot mode allows to significantly reduce the number of
timer interrupts and respectively increase CPU sleep time
during idle periods. Timer interrupts on idle CPUs are now
generated only when they are needed to handle registered
time-based events. Busy CPUs unluckily still receive the full
interrupt rate for purposes of resource accounting, scheduling
and timekeeping.

With some additional tuning it is now possible to have an
8-core system, receiving only about 100 interrupts per second
and respectively have CPU idle periods up to 100ms. This
allows to effectively use any supported CPU idle states
(C-states), that reduces power consumption and increases effect
of the Intel TurboBoost technology.

New manual pages were written to document this functionality:
eventtimers(7), attimer(4), atrtc(4), hpet(4).

Open tasks:

Troubleshoot possible hardware issues.

Refactor remaining architectures (arm, ia64, XEN
PV).

Do some optimizations in different subsystems to reduce
number of time-based events. Extend callout API with terms of
precision, allowing to group close events.

Make schedulers tickless, or at least less depending on
time events to make skipping timer interrupts possible when CPUs
are busy.

Netdump provides kernel core dumping over the network, instead
of to a local disk. It implements a very minimal TCP/IPv4 stack
and uses a custom UDP protocol to transmit the dump to the
netdump server running on another host. Network interfaces
selected for dumping perform I/O in polling mode.

Netdump should find its use in diskless workstation clusters,
PXE-booted test machines, and perhaps when doing disk driver
development.

Open tasks:

General FreeBSD dumping mechanism refinements.

Implement checksum on UDP packets.

Investigate the possibility to replace the custom protocol
with tftp.

Investigate the possibility to replace the custom TCP/IPv4
stack with Contiki.

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. So far,
a generic resource usage framework has been developed, along with
limit enforcement for most resources. Work is on-going on adding
limits for remaining resources, debugging and generally improving
the implementation. This project is being sponsored by The FreeBSD
Foundation.

Kristaps' groff-replacement (only for rendering manual pages)
is already available in NetBSD and OpenBSD, and used to render the
base system manpages for the latter. This project aims to do
similar things for FreeBSD.

mandoc(1) is more strict in what it accepts as input and is still
lacking some features that are used by some selected few manpages.

Getting manual page fixes accepted by upstream vendors has been
challenging. Waiting for them to round-trip back into FreeBSD will
take even longer. Future work will therefore result in direct
commits to our contrib/ and gnu/ repository areas, in the hope
this will not impact future vendor imports too much.

The committers to the German Documentation Project were mostly
trying to keep the documents and the website translations in sync
with the ones on FreeBSD.org. Fabian Ruch was helpful in catching up
with the changes to the Porters Handbook. Benedict translated the
Solid State article into German because this is becoming a good
addition to traditional hard drive storage.

We tried to re-activate committers who did not contribute for
some time but most of them are currently unable to free up enough
time. We hope to gain fresh contributor blood as we are getting
occasional reports about bugs and grammar in the German
translation.

Open tasks:

Submit grammar, spelling or other errors you find in the
German documents and the website.

The www/ja and doc/ja_JP.eucJP/ have been updated constantly
since the last status report. We committed a big patch for
the "Installing FreeBSD" chapter of the FreeBSD Handbook which was
contributed by many people since a long time. This chapter is
still outdated and needs more work. Some progress was made in
the Porter's Handbook as well.

Open tasks:

Further translation of the FreeBSD Handbook and contents of
the www.FreeBSD.org site to
the Japanese language.

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
little 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 Management Facility (SMF), this could be an extremely
useful tool for FreeBSD systems.

Since the last status report, two bugs have been fixed and
the documentation has been updated. In the coming weeks we hope
to get more developer attention and review, perhaps even push
to commit the code into FreeBSD.

Open tasks:

The goal of the project is to allow easier extension of base
system tools by the ports system. Ideally, no files in /etc
should need to be modified by a port installation.

The man toolset was recently reimplemented as a BSDL version
instead of the old GPL version. It is also a single shell script
instead of multiple C programs. Ports can extend the man
functionality by dropping files into
/usr/local/etc/man.d/portname.conf.

Next up on the list is to finish the implementation for
newsyslog thereby allowing ports that need logs rotated to take
advantage of that tool.

Support for xz compression has been enabled in bsdtar (-CURRENT
8-STABLE) and added to pkg_create(1) and pkg_add(1) (-CURRRENT).
Packages with the .txz suffix can be created and installed.
Log file compression using xz in newsyslog(8) will be integrated
soon. Benchmarks show 15-30% better compression ratios and up to
halved decompression times when compared to bzip2. A switch from
the default package format from .tbz to .txz is to be
considered.

FreeBSD/powerpc64 now boots multi-user SMP and is self-hosting on
the Playstation 3. Booting requires a PS3 console with the
OtherOS capability (fat model console with firmware < 3.21).
The only supported hardware at present is USB and the Ethernet
controller.

All Octeon development is now ongoing in -CURRENT and most
Octeon-specific and general MIPS changes from the old Octeon
branch have been checked in. The Simple Executive from the Cavium
Octeon SDK has been checked into Subversion and most of the
Octeon port has been updated to use it where appropriate,
including moving to a port of the Linux Ethernet driver, octe.
SMP support is stable on 2-core systems and has seen some testing
on systems with up to 16 cores.

Open tasks:

Some PCI devices still do not seem to work
completely.

Host-mode USB support is incomplete and needs further
testing and debugging.

Work on an ATA-based Compact Flash driver for boards that
support DMA has begun.

A GPIO driver should be trivial using the Simple
Executive.

Performance in the Linux-derived octe Ethernet driver could
be improved. Support for some switch chipsets that are commonly
present in Octeon-based equipment is in progress.

Apart from the constant bug fixing and adaptions to
machine-independent changes that pretty much always take place,
not much has happened in the area of sparc64 since the last
status report. The only noteworthy exception are some performance
optimizations which take advantage of features of Fujitsu SPARC64
CPUs. These were a bit too risky for putting them in shortly
before FreeBSD 8.1-RELEASE but will be part of 7.4-RELEASE and
8.2-RELEASE now that they have received the necessary
testing.

Part of reasons why not much has happened in this spot was some
lack of time on my side but also due to nobody showing up with a
not yet supported sun4u machine lately and me delving in the
network land instead, which yielded some things to report about
in the next status report. On the other hand I recently got a
hold of a Sun Fire 3800, so these and other models from the same
family likely will be supported by FreeBSD at some point in the
future.

Chromium is a Webkit-based web browser that is largely BSD
licensed and was recently committed to ports. It has been working
well on FreeBSD and supports new features like HTML 5 video. Newer
builds use the Clang compiler, Clang first compiled a non-debug
build of Chromium, a very large C++ project, on FreeBSD. This
porting effort employs a new hybrid-source model: portions of the
latest FreeBSD patches are kept closed for a limited time and new
builds are made available only to paying subscribers, while older
builds are eventually spun off to ports. Further work remains to
port all of Chromium to FreeBSD, I am now porting the task manager
to use FreeBSD's libkvm and the ALSA audio backend needs to be
ported to OSS. There are other issues listed at the porting
summary, contact me if you would like to pitch in.

AFS is a distributed network file system that originated from
the Andrew Project at Carnegie-Mellon University; the OpenAFS
client implementation has not been particularly useful on FreeBSD
since the FreeBSD 4.X releases. The previous status report
brought the OpenAFS client to a useful form on -CURRENT,
though with many rough edges. Only a couple of those edges have
been smoothed out during the past few months, as developer time
was scarce. A mismatch between file size and vmobject size
tracking was resolved (allowing executables to be run from AFS),
and our system call entry has been updated on -CURRENT and 8-STABLE
to match reality. Thanks to Kostik Belusov for both of those!
The code is useful enough that we plan to submit an
openafs-devel port to the Ports Collection in the coming
cycle.

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

Open tasks:

Rework vnode locking for lookup operations to avoid an
easily-triggered deadlock between two threads when one is looking
up the parent directory.

Update VFS locking to allow the use of disk-based client
caches as well as memory-based caches.

pkg_upgrade was (to my knowledge) the first binary packages
only update tool for the FreeBSD ports. Using it does not require a
copy of the ports tree.

Currently the tool is in the final stages of a recode, that
will greatly improve support for sharing packages over NFS or
nullfs mounts (e.g. for distributing packages into jails) and
also offers improved dependency tracking and performance, more in
line with how pointyhat and Tinderbox build packages.

I recently had the opportunity to present my work at the
EuroBSDCon 2010.

The ports tree count now exceeds 22,000. With the assistance
of many people, especially Philip Gollucci, the open PR count is
below 1000 for the first time in quite a while. This is very
encouraging progress.

Since the last report, we added five new committers, and took
in two commit bits for safe keeping.

With onsite assistance from jhb@, gnn@, skreuzer@, and
pgollucci@, we now have 11 new servers at NYI. The machines still
need testing for stability and will soon be assigned for package
building.

The Ports Management team have been running -exp runs on an
on-going 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:

Given the current status of fenner's Distfiles Survey, a new
distfile checker was written in order to have an overview for the
state of each distfile in the ports tree. The distfile checker is
also able to verify WWW entries in pkg-descr files. This is an
attempt to weed out broken MASTER_SITES and outdated WWW
entries.

The current version uses a MySQL database backend and is able
to verify 432512 distfiles (30 concurrent threads) within 24
hours.

Valgrind is a tool for detecting memory management and
threading bugs, and profiling. Version 3.6.0 has recently been
released and the FreeBSD port has now been updated.

Development of the Valgrind port has moved from Perforce to
bitbucket.org, in order to make it easier for others to track
changes as we progress towards getting the port into shape to
commit upstream. The repository's Bitbucket address is at the
beginning of the report.

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 organizations, and to meet each
other in the real life. We would also like 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.
Everybody is welcome!

EuroBSDCon 2010 happened in Karlsruhe, Germany, with many
users, developers, friends, and others. We had many tutorials,
and 22 interesting presentations on various topics connected to
FreeBSD, OpenBSD, NetBSD, like the new USB stack, jail
improvements, Virtual Private Systems, SSH and PGP convergence,
ZFS, journaled Soft-Updates, BSD certification, porting to the
latest ARM processors, and pc-sysinstall. The event was opened by
a keynote speech from Poul-Henning Kamp on software tools and
their future, and it was closed by short status reports on
different BSD flavors.

EuroBSDCon is the European technical conference for users and
developers on BSD based systems. The EuroBSDCon 2011 conference
will be held in the Netherlands from Thursday 6 October 2011
to Sunday 9 October 2011, with tutorials on Thursday and Friday
and talks on Saturday and Sunday.

The EuroBSDCon conference is inviting developers and users of
BSD based systems to submit innovative and original papers not
submitted to other European conferences on BSD-related topics.

We were happy to have more than 40 FreeBSD developers and guests
attending the FreeBSD Developer Summit prior to EuroBSDCon 2010
in Karlsruhe, Germany. This workshop-style event was hosted at
Karlsruhe Institute of Technology, and included prepared
presentations in the morning, as well as group hacking and
discussion sections in the afternoon. We had various talks on
several topics, covering the USB subsystem, state of the
toolchain, the FreeBSD documentation, NanoBSD improvements, FreeBSD
port of PF, jails, Virtual Private Systems, cooperation with the
PC-BSD Project, FreeNAS, the new event timers subsystems,
bugbusting discussions and Ports Tinderbox presentations, and
many of this year's and last year's Google Summer of Code
projects. Photos, videos, and slides for most of the talks are
available on the wiki page.

We will be having a developers summit meeting at meetBSD
California 2010 on November 4th, the day before the conference.
Based on who is in attendance, we will be talking about the
status of pressing issues; working on pressing problems and
using the opportunity for face to face meetings to work out
issues that are difficult in email. This is an invitation-only
event, but any developer can invite people they think would help
drive this meeting forward. An agenda will be published closer
to the date.

Work is progressing quickly on a major re-factoring of PC-BSD
tools and the PBI format for 9.0. Our GUI tools have been
converted to compile / run within native QT without KDE now,
allowing us to begin offering support for other desktop
environments for 9.0, such as Gnome, XFCE, LXDE, KDE, etc. The
PBI format has undergone a complete evolution, and is now
entirely command-line based for all aspects of it, with only a
few dependencies upon curl & xdg-utils. This will allow us to
begin offering PBIs for traditional FreeBSD users starting with 9.0,
who will be able to install the pbi-manager from ports in the
near future.

Open tasks:

We are still busy converting / fixing all our tools to play
nicely with various DE's, but making quick progress.

The new PBI format is still undergoing extensive testing,
and bugs are being isolated and fixed.