DragonFly - End of Year Summary for 2003

End of Year Summary for 2003

DragonFly BSD was announced in July of this year, with Matt Dillon the originator and main weightlifter of this project. Development has been proceeding at a good clip, with a first release expected in 2004.

Statistics: Here's some data on the amount of activity in the DragonFly source, as of the end of December 2003.

Number of commitsCommitter
48288dillon
1212rob
997asmodai
913eirikn
636drhodus
390hmp
149daver
53joerg
3justin

ACPI

The newer power system, imported by David Rhodus. It is not on by default.

AGP

A number of improvements to AGP support from FreeBSD 5 were added by Craig Dooley.

AMD64 port

(Matt Dillon, Hiten Pandya, David Rhodus) AMD's new 64-bit processors are nearly supported, with FreeBSD-5's boot code brought in to DragonFly. GCC 3.3 support and some code changes are needed first. As a side effect of this work, some hooks for PAE support now exist. Matt Dillon and David Rhodus has AMD64 hardware to test on. This work has included the merge of boot code from FreeBSD-5 along with Peter Wemm's linker changes. (See GCC3 listing)

ATAng

ATAng is 'next generation' ATA disk access, which works more efficiently in a multithreaded environment. David Rhodus is merging in newer ATA code from the FreeBSD-4x tree and is trying to "work through the abuse of M_NOWAIT inside the ATA raid card controllers".

Bugzilla

Jeroen Ruigrok has set up a Bugzilla database, and imported a large number (over 6,000) of bug reports and feature requests from FreeBSD-4 that may still apply to DragonFly. This database is not yet available.

Checkpointing

(Kip Macy) It is possible to 'freeze' (^E) a copy of a program in its current state, and then later 'thaw' (/usr/bin/checkpt) it, restoring the state of the program. Among more exotic applications, long-running processes can be saved and restored across reboots. This is mostly complete, and can be loaded with the checkpoint.ko module.

Cleanup

Eirik Nygaard and Craig Dooley have been cleaning up the old K&R-style functions into ANSI code, along with removal of the __P() macro use from the userland. Robert Garrett removed the __P() macro inside the kernel source. Jeroen Ruigrok has been working on the removal of perl from the kernel build process. David Rhodus and Hiten Pandya have been fixing other various long running problems inside the kernel. David Rhodus has updated Sendmail (8.12.10), BIND(8.3.7), and also updated other applications like OpenSSL and OpenSSH.

GCC3

Craig Dooley has submitted many patches to enable DragonFly building under GCC3. David Rhodus has GCC-3.3.3 working in a test tree at the moment, for AMD64 support.(In progress)

dfports

Matt Dillon created a local override of the existing FreeBSD ports system, to allow port installation until a DragonFly-native solution is created.

libcaps

libcaps has been created. This is a library that allows userland threading, similar to the existing LWKT. This is being worked on by Galen Sampson and Matt Dillon.

Live CD

DragonFly CDs can now be built as 'live', meaning that a computer can be booted using the CD as the boot disk, and then tools like cpdup can be used to install to hard disk. This is not yet fully documented; i.e. you will have to run programs like disklabel manually. /usr/src/nrelease contains the code, and also some instructions.

LWKT

Added by Matt Dillon. LWKT stands for Light-Weight Kernel Threads. LWKT gives each CPU in the system its own scheduler, and threads are locked to that CPU. This removes any need for mutexes to handle interrupts. More information is available at the DragonFly website. Galen Sampson has been working on a port to userland.

Logging

Justin Sherrill has been keeping a running news report of DragonFly activity at http://www.shiningsilence.com/dbsdlog/.

MPIPE

Quoted from the committ log: "This subsystem is used for 'pipelining' fixed-size allocations. Pipelining is used to avoid lack-of-resource deadlocks by still allowing resource allocations to 'block' by guaranteeing that an already in-progress operation will soon free memory that will be immediately used to satisfy the blocked resource." Added by Matt Dillon.

Make release

Jeroen Ruigrok has been working on make release. Since the size of the DragonFly kernel is in flux, it can exceed the available floppy space. (incomplete)

Mirrors

Germany - Simon 'corecode' Schubert
http://chlamydia.fs.ei.tum.de/
Ireland - David Burke
http://ftp.esat.net/mirrors/chlamydia.fs.ei.tum.de/pub/DragonFly/
ftp://ftp.esat.net/mirrors/chlamydia.fs.ei.tum.de/pub/DragonFly/
Japan - Hiroki Sato
http://pub.allbsd.org/DragonFly/snapshots/i386/
ftp://ftp.allbsd.org/pub/DragonFly/snapshots/i386/
rsync://rsync.allbsd.org/dragonfly-snapshots/

Namecache

Matt Dillon completed this work in September; a writeup of the two stages of the work are available here, and here.

Network interface aliasing (if_xname)

Max Laier is bringing in code used in the other BSDs to allow if_xname, if_dname, and if_dunit.

Network stack

Jeffrey Hsu has been moving the network stack to a multithreaded model; he also has been making networking match certain RFCs, such as Protocol Independent Multicast.

NEWCARD support

Joerg Sonnenberger has been working on NEWCARD (PCMCIA card support) from FreeBSD 5.

NVIDIA binary video card driver

Emiel Kollof got this working in October; a dfports override is available.

NFS

David Rhodus and Hiten Pandya have been working on speeding up NFS performance. It is now possible to max out a GigE connection via NFSv3 TCP, on DragonFly. More tuning to come.

PFIL_HOOKS, pf, ALTQ, and CARP

Max Laier is working on bringing in OpenBSD's pf, along with ALTQ and CARP.

Prelinking

Prelinking capability was added to DragonFly by Simon 'corecode' Schubert, which allows faster loading of applications that use a large number of dynamic libraries while running, like Qt/KDE. It is not currently hooked into the system or any port building process.

RAID support at install

David Rhodus added the pst driver for Promise cards to the GENERIC kernel, so installation to RAID drives using a Promise controller should be possible.

RCNG

RCNG is a new version of the rc configuration system, taken from NetBSD. More information is available at the NetBSD site. Robert Garrett merged this in. Matt Dillon updated RCNG. You can now check the status of, or start, stop, etc. different system services using appropriate single commands like rcstart, rcstop, rcrestart, and so on. varsym -sa will list service status.

Sun Grid Engine

Joshua Coombs is working on the sge - more information at: http://gridengine.sunsource.net/.

Slab allocator

Matt Dillon added this new kernel memory allocator, which does not require any mutexes or blocks for memory assignment. More information on how a slab allocator work is at Bonwick94, Bonwick2001, and linux/mm/slab.c in the Linux kernel. This project is complete.

Stack Protection

Ryan Dooley patched libc giving stack-smashing protection.

Syscall separation

David P. Reese has been separating system calls into kernel and userland versions. He has also removed stackgap allocations for Linux.

Tinderbox

David Rhodus (hardware) and Hiten Pandya (setup) has set up repeated builds of the DragonFly system; failures are sent to the bugs@dragonflybsd.org mailing list.

Variant Symlinks

(Matt Dillon) Variant Symlinks allow links to have variables used as part of the path the link points to. This allows per-user and per-environment settings. This project is complete. (man varsym for info)

Website

In October, the DragonFly website received a facelift from Justin Sherrill and Hiten Pandya. It also now has a Team page, and this report.