DragonFly BSD


DragonFly Release 2.10

26 April 2011 (2.10.1)

The DragonFly 2.10 release is here!

Big-ticket items

Hardware and multiprocessor support - This release supports a much larger variety of hardware and multiprocessor systems than previous releases, thanks to updates of ACPI and APIC and ACPI interrupt routing support.

Hammer Deduplication - Hammer volumes can now deduplicate volumes overnight in a batch process and during live operation. The 'hammer dedup-simulate' command can be used to estimate space savings for existing data.

Packet Filter (pf) - Pf was updated to a version based upon OpenBSD 4.4. The previous version of pf in DragonFly was based on OpenBSD 4.2.

Compiler updates - DragonFly now uses gcc 4.4 as the default system compiler, and is the first BSD to take that step.

New bridging functionality - The bridging system has been rewritten. Multiple interfaces on a single system can be bound together transparently under a single virtual MAC address, and bandwidth aggregated to that new interface.

MP Performance - The MPLOCK (the primary lock, that when held ensures only a single cpu is operating within the kernel) has been removed from every area except the VM system. DragonFly is one of the few non-academic operating systems to use a primary sychronization mechanism that is not a blocking mutex

Overall Performance - DragonFly now offers significant performance gains over previous releases, especially for machines using AHCI or implementing swapcache(8).

ACPI Support - Major update to DragonFly's ACPI support have been made, particularly for interrupt routing.


Three release options are now available for 32-bit as well as for 64-bit. 64-bit installations are recommended if you do not need the linux emulation layer.

The release ISO images should be available on most of the mirrors. If the ISO is not available on a certain mirror, please try another one or download it from the DragonFly master site. Each image is in the "Live CD" format, meaning that it boots into a running and fully functional DragonFly system, which can be used for testing or system recovery tasks as well as installation

The GUI bootable USB image also contains the DragonFly git repo in /usr/src and the PkgSrc git repo in /usr/pkgsrc. The code can be trivially checked out using these repos and even an old repo can be incrementally updated from master sites post-install.

MD5 sums

pkgsrc packages

We offer roughly 10,000 pre-built pkgsrc packages for this release. The pkg_radd(1) utility may be used to download pre-built binary packages. The path can be overridden by setting BINPKG_BASE in /etc/pkg_radd.conf.

To get a list of all packages, let pkg_search(1) download the summary file for that release:

# pkg_search -d

We supply a Makefile in /usr to track the pkgsrc tree and we supply a Git mirror of the NetBSD pkgsrc CVS repo at git://git.dragonflybsd.org/pkgsrcv2.git. We recommend that users use it, instead of pulling from NetBSD with CVS. Our Git mirror is updated several times a day.

DragonFly 2.10 Special Installation and Upgrade Notes

Using deduplication - Hammer volumes need to be upgraded to version 5 to use deduplication. The 'hammer version-upgrade <filesystem> <version>' command will perform this in-place. To enable periodic deduplication, run 'hammer viconfig' on each PFS and add the line 'dedup 1d 5m'.

APIC_IO - The APIC_IO kernel option can now also be controlled via the hw.apic_io_enable /boot/loader.conf tunable. The kernel option simply specifies the default now.

VirtualBox, Virtual PC, and VMWare users - Unless your virtual hard disk is 50G or larger, we recommend doing a UFS install and not the default HAMMER install. We also recommend installing from the CD ISO and not the GUI IMG. A more serious installation should use HAMMER with at least a 50G disk image and can install from the GUI IMG.

Virtual PC users - Virtual PC does not supply serial numbers for the virtual disks. The system may need to be manually directed in the boot loader if the disk identifier changes. (Hit ? in the boot loader for a list of available volumes.)

Interrupt Routing Issues - If you are experiencing interrupt routing issues there are several boot options you can try. You can try booting both UP and MP kernels (both are available via the boot menu), you can try booting without ACPI, you can boot with ACPI but disable ACPI-based interrupt routing by setting debug.acpi.disabled="pcib", you can disable use of the IO APICs by setting hw.apic_io_enable=0, and you can enable an emergency interrupt polling thread by setting kern.emergency_intr_enable=1. Once you have a working system you can edit /boot/loader.conf on the USB stick to set your new defaults in stone.

Installer Crypt Options - The installer can encrypt the root volume and the swap volume. It will not work properly for other volumes despite any additional check-boxes you might see. Installer and boot-time support works but is still a bit rough around the edges. Performance will be relatively high on multi-core machines.

DragonFly 2.10 Release Notes

Release Improvements

Kernel changes

  • Update of pf from OpenBSD 4.2 to 4.4, keeping DragonFly specific additions (support for pickups and fairq).
  • mlockall(2)/munlockall(2) implemented
  • devfs chown/chmod bug fixes
  • Major overhaul of the device mapper (dm)
  • dm_target_crypt now uses mpipe for memory allocations
  • New kern.proc.cwd sysctl
  • Major overhaul of the vn(4) driver
  • Many sysctls now have a description
  • msdosfs bug fixes
  • mbuf now supports MJUMPAGESIZE
  • Fix fstatfs() and fstatvfs() when called from a null-mounted chroot()
  • Several subsystems switched from zalloc to objcache (ufs dirhash, NFS, aio, crypto)
  • Minimum UNDO storage raised to 500M by newfs_hammer.
  • Lots of code WARNS raises to improve portability.
  • ACPI interrupt routing implemented and enabled by default
  • ACPI - tons of work has gone into our ACPI support.
  • APIC_IO now acts as a default and can be changed in /boot/loader.conf
  • Overhaul LWKT and USCHED schedulers for MP performance when many cpus are present.
  • Significant HAMMER bug fixes and performance improvements.
  • HAMMER enhancements to allow swapcache to more easily cache file data via vfs.hammer.double_buffer mode.
  • HAMMER double_buffer mode's strategy code is now asynchronous.
  • CAM tag reservation code fixed for AHCI and SILI drivers.
  • CAM DA driver enhanced to separate read and write streams, allowing concurrent write completion in the face of many stalled read requests.
  • Major enhancements to the if_bridge code, adding support for bonding, weights, and other features.
  • Use blocking mbufs in TAP/TUN to avoid unnecessary packet loss.
  • Fixed a few difficult-to-reproduce bugs in the VM system
  • Major timer functionality changes, the 8254 will no longer be used unless there is no other choice.
  • Jump page support added to the mbuf API and used in several WIFI drivers.
  • Fix bugs in ktrace related to the MP work which could freeze the system.
  • LWKT thread migration code redone.
  • The FAIRQ altq has been significantly enhanced and now supports weighted expansion of bandwidths up to the interface bandwidth.
  • Lots of MP-related bug fixes to the network stack.
  • Use MONITOR/MWAIT in the idle thread as an intermediate step prior to ACPI halt.
  • Added mmap offset randomization. The randomization is controllable via the sysctl vm.randomize_mmap, which by default is 0 (off).

Hardware changes (non-networking)

  • mfi(4) RAID driver and mfiutil(8) configuration tool added.
  • arcmsr(4) updated
  • twe(4) updated
  • amr(4) updated
  • aac(4) updated
  • hptmv(4) added
  • hptiop(4) added
  • dc(4) support for the Abocom FE2500
  • tws(4) added, a driver for the LSI 3ware 9750 series SATA/SAS RAID controllers.
  • aesni(4) bug fixes
  • kqueue added to ulpt to improve CUPS support.
  • AHCI driver enhanced to better support semi-broken chipsets which do not properly mask transient phy events during training.
  • AHCI driver hotplug support improved.

Hardware changes (networking)

  • Wireless cards utilizing the following drivers are supported in this release: ath, iwi, iwn, ral, wi, wpi. (update me)
  • The following drivers have not been ported and will not yet work: acx, an, bwi, ndis, rtw, rum, ural. (update me)

New Multiprocessor Safe Work

  • BGL replaced by mp_token, mp_token replaced by per-subsystem tokens in nearly all cases
  • Most per-subsystem tokens replaced with fine-grained tokens, except for VM.
  • The lwkt_token API has been greatly simplified.
  • Numerous scheduler and memory management changes to improve MP performance.

Userland changes

  • The installer now allows you to crypt swap and root
  • libcrypt now supports sha256/512
  • The default password hash is now sha256
  • dmsetup now supports remove_all
  • utmpx and wtmpx support
  • newfs now supports volume names
  • hammer(8) now supports listing volumes
  • New library libfsid, used to determine what FS is on a given volume
  • New utility: devattr, exposes the libdevattr and kern_udev functionality
  • fstat(1) now supports devfs
  • powerd now dynamically reduces the set of cpus available and adjusts their frequencies independently when the hardware supports it.
  • GLOB_LIMIT removed from ftpd because it was getting hit by nominal pkgsrc operations. Swapcache removes most of the DOS attack potential.

x86_64-specific changes

  • 64-bit systems now can support up to 63 CPUs and 512G of RAM
  • Much faster early-kernel-boot memory test
  • More generous kernel resource limits


  • TBD

Contributed Software

  • Shipping with pkgsrc-2011Q1 built packages.
  • Code from DragonFly's participation in Google Code-In 2011
  • Updated ldns/drill to 1.6.7
  • Updated libarchive to 2.8.4
  • Updated zlib to 1.2.5
  • Updated OpenSSL to 1.0.0d
  • Updated OpenSSH to -5.8p1
  • Updated file to 5.05
  • Updated zoneinfo to tzdata2011g
  • Updated binutils to 2.21
  • Updated acpica to 20110211
  • Updated mdocml to 1.10.9
  • Updated gcc to 4.4.5
  • Imported xz-5.0.0
  • Imported binutils 2.21

Security related

  • A security issue in OpenSSL (CVE-2011-0014) was fixed.