DragonFly BSD Changelog

What's new in DragonFly BSD 5.6.1

Jun 21, 2019
  • This release fixes a misconfiguration in sshd and a lockup in ttm.

New in DragonFly BSD 5.6.0 (Jun 19, 2019)

  • Improved VM:
  • Informal test results showing the changes from 5.4 to 5.6 are available.
  • Reduce stalls in the kernel vm_page_alloc() code (vm_page_list_find()).
  • Improve page allocation algorithm to avoid re-iterating the same queues as the search is widened.
  • Add a vm_page_hash*() API that allows the kernel to do heuristical lockless lookups of VM pages.
  • Change vm_hold() and vm_unhold() semantics to not require any spin-locks.
  • Change vm_page_wakeup() to not require any spin-locks.
  • Change wiring vm_page's no longer manipulates the queue the page is on, saving a lot of overhead. Instead, the page will be removed from its queue only if the pageout demon encounters it. This allows pages to enter and leave the buffer cache quickly.
  • Refactor the handling of fictitious pages.
  • Remove m->md.pv_list entirely. VM pages in mappings no longer allocate pv_entry's, saving an enormous amount of memory when multiple processes utilize large shared memory maps (e.g. postgres database cache).
  • Refactor vm_object shadowing, disconnecting the backing linkages from the vm_object itself and instead organizing the linkages in a new structure called vm_map_backing which hangs off the vm_map_entry.
  • pmap operations now iterate vm_map_backing structures (rather than spin-locked page lists based on the vm_page and pv_entry's), and will test/match operations against the PTE found in the pmap at the requisite location. This doubles VM fault performance on shared pages and reduces the locking overhead for fault and pmap operations.
  • Simplify the collapse code, removing most of the original code and replacing it with simpler per-vm_map_entry optimizations to limit the shadow depth.
  • DRM:
  • Major updates to the radeon and ttm (amd support code) drivers. We have not quite gotten the AMD support up to the more modern cards or Ryzen APUs yet, however.
  • Improve UEFI framebuffer support.
  • A major deadlock has been fixed in the radeon/ttm code.
  • Refactor the startup delay designed to avoid conflicts between the i915 driver initialization and X startup.
  • Add DRM_IOCTL_GET_PCIINFO to improve mesa/libdrm support.
  • Fix excessive wired memory build-ups.
  • Fix Linux/DragonFly PAGE_MASK confusion in the DRM code.
  • Fix idr_*() API bugs.
  • HAMMER2:
  • The filesystem sync code has been rewritten to significantly improve performance.
  • Sequential write performance also improved.
  • Add simple dependency tracking to prevent directory/file splits during create/rename/remove operations, for better consistency after a crash.
  • Refactor the snapshot code to reduce flush latency and to ensure a consistent snapshot.
  • Attempt to pipeline the flush code against the frontend, improving flush vs frontend write concurrency.
  • Improve umount operation.
  • Fix an allocator race that could lead to corruption.
  • Numerous other bugs fixed.
  • Improve verbosity of CHECK (CRC error) console messages.

New in DragonFly BSD 5.4.3 (May 21, 2019)

  • This release includes a fix for an Intel floating-point bug.

New in DragonFly BSD 5.4.2 (Apr 23, 2019)

  • This release includes an important fix for HAMMER2 filesystems.

New in DragonFly BSD 5.4.0 (Dec 5, 2018)

  • Big-ticket items:
  • Much better support for asymmetric NUMA (Non-Uniform Memory Access) configurations. In particular, both the memory subsystem and the scheduler now understand the Threadripper 2990WX's architecture. The scheduler will prioritize CPU nodes with direct-attached memory and the memory subsystem will normalize memory queues for CPU nodes without direct-attached memory (which improves cache locality on those CPUs).
  • Incremental performance work. DragonFly as a whole is very SMP friendly. The type of performance work we are doing now mostly revolves around improving fairness for shared-vs-exclusive lock clashes, reducing cache ping-ponging due to non-contending SMP locks (i.e. massive use of shared locks on shared resources), and so forth.
  • Major updates to dports brings us to within a week or two of FreeBSD's ports as of this writing, in particular major updates to chromium, and making the whole mess work with gcc-8.
  • Major rewriting of the tty clist code and the tty locking code, significantly improving concurrency across multiple ttys and ptys.
  • GCC 8:
  • DragonFly now ships with GCC 8.0, and runs as the default compiler. It is also now used for building dports.
  • GCC 4.7.4 and GCC 5.4.1 are still installed. 4.7.4 is our backup compiler, and 5.4.1 is still there to ensure a smooth transition, but should generally not be used. buildworld builds all three by default to ensure maximum compatibility.
  • Many passes through world sources were made to address various warnings and errors the new GCC brought with it.
  • HAMMER2:
  • HAMMER2 is recommended as the default root filesystem in non-clustered mode.
  • Clustered support is not yet available.
  • Increased bulkfree cache to reduce the number of iterations required.
  • Fixed numerous bugs.
  • Improved support on low-memory machines.
  • Significant pre-work on the XOP API to help support future networked operations.

New in DragonFly BSD 5.2.1 (May 21, 2018)

  • DragonFly version 5.2.1 has been released, with Meltdown/Spectre mitigation, many improvements to HAMMER2, ipfw, and accelerated video, plus (in the 5.2.1 update) fix for CVE-2018-8897.

New in DragonFly BSD 5.2.0 (Apr 10, 2018)

  • Meltdown and Spectre mitigation support:
  • Meltdown isolation and spectre mitigation support added. Meltdown mitigation is automatically enabled for all Intel cpus. Spectre mitigation must be enabled manually via sysctl if desired, using sysctls machdep.spectre_mitigation and machdep.meltdown_mitigation.
  • HAMMER2:
  • H2 has received a very large number of bug fixes and performance improvements. We can now recommend H2 as the default root filesystem in non-clustered mode.
  • Clustered support is not yet available.
  • ipfw Updates:
  • Implement state based "redirect", i.e. without using libalias.
  • ipfw now supports all possible ICMP types.
  • Fix ICMP_MAXTYPE assumptions (now 40 as of this release).
  • Improved graphics support:
  • The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs
  • Add 24-bit pixel format support to the EFI frame buffer code.
  • Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU.
  • Partly implement the FBIO_BLANK ioctl for display powersaving.
  • Syscons waits for drm modesetting at appropriate places, avoiding races.

New in DragonFly BSD 5.0.2 (Dec 6, 2017)

  • Christian Groessler (1):
  • telnetd: print system information (OS and architecture) before login prompt.
  • Matthew Dillon (7):
  • hammer2 - Fix divide by 0 race
  • kernel - selective MFC of kernel umtx work from master
  • kernel - Update umtx documentation
  • libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
  • hammer2 - Fix rename race
  • hammer2 - optimize hammer2_pfs_memory_wakeup()
  • hammer2 - Fix indefinite dirty chains due to rename
  • Sascha Wildner (5):
  • hammer2.8: Fix typo.
  • Say 'hammer2' instead of 'hammer' in various places.
  • mtree: Fix owner for several directories in /usr/share.
  • libc/nls: Use current locale (set by thread).
  • libarchive: Revert commit that was not meant to be pushed.

New in DragonFly BSD 5.0.1 (Nov 12, 2017)

  • This is a bugfix release, adding HAMMER2 support in initrd, among other cleanup commits.

New in DragonFly BSD 5.0 (Oct 16, 2017)

  • Kernel
  • if_sl, if_ppp, and if_faith are now built as modules and can be removed from kernel configs.
  • NX (no-execute) pmap support has been added.
  • Use 64-bit serials for poll/select's kevent.udata. This fixes an issue where serial cycling could cause spurious events to be reported.
  • Fix several issues for encrypted installations.
  • Fix a blocked-lock issue in procfs
  • Fix a serious permissions bug for sticky directories
  • Fix event preset bug
  • Fix an ACPI initialization ordering issue
  • Fix a CAM shutdown ordering issue
  • NX support added to kernel, but does not work with some interpreted or JIT languages so disabled by default.
  • Fix a crypto subsystem stall.
  • Ryzen CPUs can lockup when the instruction pre-fetcher (which can be speculative) transitions from a canonical to a non-canonical address. This can happen if the top of the user stack is mapped. Unmap the top of the user stack, and the top of the user stack is no longer considered to be part of userspace.
  • Longer stir in arc4random(), make arc4random per-cpu to reduce contention.
  • Fix a zget() panic which can occur during heavy paging
  • Fix clustering inefficiencies
  • tmpfs and vn can't handle certain swapoff situations. Be sure to fail a swapoff attempt under such conditions so not corruption occurs.
  • Fix a gcc code reordering problem related to td_critcount operations. This fixes a lockmgr() race.
  • Significantly reduce tsleep()/wakeup() queue collisions.
  • Do many more NUMA-localized allocations for per-cpu structures.
  • Add better AMD topology detection.
  • Restrict kill(-1, ...) to the current reaper group. This fixes issues during bulk builds via synth where third-party programs erroneously signal process -1 after a fork() failure.
  • Fix broken cpu rotator in lwkt_alloc_thread().
  • Fix a rare allproc scan vs p_ucred race
  • Fix unnecessary ucred duplication which led to potentially as many ucred allocations as vnodes.
  • Fix a memory ordering race in the shared lock mutex code.
  • Fix an ordering issue with coincident systimer interrupts. This improves user/sys/idle percentage reporting.
  • Change our MBR partition type from 0xA5 (which we shared with FreeBSD) to 0x6C
  • Fix a callout_stop()/callout_reset() rearming race
  • Improve flushing during low-memory situations
  • Add an emergency pager. The normal pager can pageout vnode-backed pages, but the complexity of the filesystem VFS can cause low-memory deadlocks during such flushes. The emergency pager only pages out anonymous memory and can recover these situations.
  • Fix the panic() code for AMD cpus that assumed mwait hinting support when there might not be any.
  • Improve TSC handling.
  • Fix a SMP tsleep_interlock() vs wakeup() race.
  • Validate the kernel up to 1 million processes (since PIDs are restricted to 6 digits, this is the max). Fix numerous issues that crop up under high-process-count conditions. Yes, it actually does work.
  • Increase the default posix-lock limit.
  • Remove a performance bottleneck related to large numbers of pipe() close() operations.
  • Scale tsleep() performance to hundreds of thousands of processes.
  • Refactor the maxproc calculation, allowing maxproc to be higher without improperly scaling maxvnodes and other resources to insane levels.
  • Refactor the load calculation code to not stall cpu 0 when a large number of processes are present (aka a million procsses).
  • Fix excessive call stack depth for stuck interrupts.
  • Refactor IPI vector assignments and reformulate INVLTLB IPIs
  • Networking
  • Direct input support for polling, on by default for ix(4).
  • Allow up to 64 TX and RX rings for X550 chipsets
  • Do not pad if_re chips which do not require explicit padding. This fixes UDP checksum generation on these chipsets.
  • Limit the number of accepted sockets that kevent() reports. Defaults to 32. Does not effect accept() calls. This deconfuses some third party applications.
  • Bring in vmx (VMWare virtual network driver, aka vmxnet3).
  • Add Kabylake support (add Kabylake PCI IDs)
  • Improve syncache performance.
  • Add an interface network filter to IPFW.
  • Add an ipfrag filter to IPFW.
  • Rework IPFW's states and tracks.
  • Reduce unnecessary IPIs by using sendmsg_oncpu() when possible.
  • Improve ipflow code.
  • Improve polling code.
  • Fix issue with accelerated IPv4/IPv6 fragment draining.
  • Randomize the local port.
  • MSI enabled by default for if_em devices which support it.
  • Other drivers
  • virtio_scsi(4) added
  • ig4(4) devices are now recognized.
  • internal updates to the isp(4) SCSI adapter driver.
  • ADMA2 mode is now supported for SD card data transfer.
  • UHS1 SD card disk format is now supported.
  • Properly delete /dev/dsp and /dev/mixer on sound module unload.
  • NVMe now handles devices without MSI-X support (aka virtualized NVMe).
  • vtnet and virtio_blk improvements.
  • Userland
  • HAMMER1 now is at an internal version of 7, reflecting a new, faster checksum operation.
  • kcollect(8) has been added for automatic data gathering on a running DragonFly system.
  • sshlockout(8) will now lock out based on number of attempts.
  • Fix a static buffer overflow in mfiutil
  • Fix a graphics compatibility enable test in 'window'
  • Fix several sscanf bugs in userland
  • usched now allows a process to change its own cpu affinity
  • Fix a bug in ceill()
  • Fix a seg-fault on crypt failure.
  • Many namespace cleanups to improve dports compatibility.
  • OpenSSH updated to 7.6p1

New in DragonFly BSD 4.8.0 (Mar 27, 2017)

  • Kernel:
  • Refactor buffer cache code to remove dynamic KVA reservations. Instead, all KVA is reserved at boot time. Saves us from unnecessary IPIs and allows significant simplification of the buffer cache code.
  • Add vfs.repurpose_enable (under test, disabled by default). This feature can be enabled to significantly reduce the IPI and VM management load on a machine which is doing huge amounts of file I/O, for example from a NVMe SSD, by bypassing normal VM page recycling mechanism. When enabled, the feature only triggers under high I/O loads. It works by repurposing the VM pages underlying a buffer in-place (when possible) so as not to have to kremove/kenter the pages in the buffer's KVA. Normal VM page recycling (which would otherwise be overwhelmed by the I/O load) is bypassed as well.
  • Change how the IPIQ is processed, in particular create an independent Xinterrupt vector mechanism for page invalidations that ignore (will operate) even if a critical section is held. Implement machdep.optimized_invltlb (disabled by default, under test) which avoids sending tlb invalidation IPIs to idle cpus.
  • Fix numerous races that could occur under extreme loads. Most use cases would never trigger these but our build boxes did occasionally. For example, there was a two instruction race where the cpu bit for a pmap would be cleared (for two instructions) and cause a TLB IPI occuring at the same time on another cpu for the same pmap to not realize that cpu was using the pmap. The fix is to disable the CR3 reload optimization for the LWP->LWP (same proc) switch case.
  • Fix a HAMMER bug which could result in a DATA CRC error being improperly reported.
  • Fix a double-write triggered by the way HAMMER uses cluster_write(). This significantly improves HAMMER's write performance.
  • Numerous other HAMMER cleanups and fixes also went in.
  • Fix a hard lock that could occur in getpbuf*() due to a misinterpretation of the return value of an atomic op.
  • Fix a stacking interrupt that can occur in a 10-instruction window, potentially (but not found in the wild) running the kernel stack out.
  • Cut pmap related IPIs in half for certain buffer-cache operations by not bothering to invalidate the TLB, and on the flip-side always invalidating the TLB when entering a new PTE even if the prior contents was invalid. This improves performance and also makes debugging easier by removing a problematic optimization.
  • Fix a number of difficult-to-trigger SMP races, in particular one related to doing simultaneous umounts of different mount points which the bulk build could trigger. Also fix a mountctl vs umount race.
  • Reduce the number of atomic ops in the switch path.
  • Fix a namecache race/panic which could occur under extreme loads coupled with a lot of mount/umount activity.
  • Restrict %rip sampling to root.
  • Fix a getpid() issue in vfork() when threaded. In particular, concurrent vfork()s in a threaded program could cause the wrong PID to be returned by getpid() in the child prior to the exec.
  • Fix a rare tsleep/callout race when the callout timer triggers before the tsleep() is completely done setting up.
  • Cleanup namecache stall messages on the console. In particular, report the proper elapsed time and the td_comm of the thread involved.
  • Further reduce memory testing and early-boot zeroing to improve boot times on systems with large amounts of ram.
  • Remove the idle page-zeroing code entirely. Zeroing a page on a modern cpu on-demand is better for many reasons, and may actually be faster when combined with the consumer accessing data in the page, due to cache effects. Remove PG_ZERO, because it is no longer needed. Removing PG_ZERO also makes the kernel more debuggable by removing another possible source of cross-contamination.
  • Refactor and finish implementing CPU localization for kernel memory allocations. Combine with NUMA awareness. This works for cpu-localized or short-lived kernel data structures. The two are combined together in our PQ_L2_SIZE abstraction that used to be the VM page coloring code. This code now also handles CPU localization and NUMA awareness.
  • Fix many vkernel issues and significantly improve vkernel performance.
  • Update kern.proc.pathname, a sysctl used by programs to find the path of the running program. This sysctl was originally implemented before we stored sufficient data to return a full, proper path.
  • Sync ACPICA from Intel (this is a regular occurrence).
  • Fix the memcpy() assembly ABI. The assembly was not returning the original (dst) argument. Doesn't fix any known issues but closes a hole when GCC sometimes decides to call memcpy while generating code.
  • Many commits to clean up -O2 warnings and errors. The kernel is now compiled -O2 by default.
  • Add a workaround for an improper yield in the ACPI path (aka buggy ACPI code).
  • Fix a STOP/CONT race that could be triggered by a pending signal at just the wrong time.
  • Threaded coredump fixes and fix a lockup related to same when multiple threads of the same process seg-fault at the same time.
  • Fix a CAM/VM deadlock that could occur due to a bug in uiomove_nofault(). This could cause an 'indefinite wait buffer' during heavy paging/swapping.
  • Add code to detect and deal with lost IPIs. This is primarily for vkernels where some virtual hosts can lose IPIs. Real CPUs are not supposed lose IPIs.
  • Various fixes to clock_gettime().
  • Remove more vestiges of the MPLOCK. All critical paths have long since divested from this lock, but there are still a few non-critical places left that use it.
  • Rework the low-memory process killing code and fix a number of races that could prevent the feature from working.
  • Fix a system lockup with VMM and refactor the VMX code.
  • Fix a deadlock when numvnodes reaches maxvnodes, which can occur under heavy loads. Also fix a minor kernel memory leak when 'df' or filesystem sync races a umount. Also reduce the maxvnodes calculation modestly. For example, a machine with 8GB of ram will now set maxvnodes to 478483 instead of 598103.
  • Fix a rare panic which can be triggered by vm_object_page_remove() when user_yield() is improperly called while holding a spinlock, and then decides to deschedule.
  • Reduce the size of some dynamically allocated kernel structures. In particular, excessively-sized inode hash table allocations are now smaller. Primarily affects UFS (which DragonFlyBSD doesn't use much).
  • Add workaround for AMD erratum 793.
  • Fix a deadlock which can occur in stacked cluster_*() I/O calls.
  • Fix a bug where recursive module loading could deadlock.
  • Fix a silly bug in the NFS sillyrename code (server side NFS) which could cause the NFS server's sillyrename code to never remove the silly-renamed file. How silly!
  • Do a better job accommodating high-ncpu + low-memory configurations.
  • Refactor shared spinlocks to reduce the amount of spinning which can occur when multiple cpus acquire a shared spinlock at the same time.
  • Overhaul namecache operations to reduce SMP contention even further. This improves simultaneous non-conflicting single-component performance at least 25x on systems with many cores, and significantly reduces vnode and mount structure ref and unref operations.
  • Overhaul numerous other kernel structures to improve cache locality and reduce cache line bouncing.
  • Fix a bug in SMBFS's file rename code.
  • Implement RLIMIT_RSS, a per-process RSS limiter which will force localized paging on a per-process basis. This feature can be used to prevent one process from turning the rest of the machine into a hard case.
  • Increase the maximum supported swap space. The maximum is now limited primarily by ram and will be in the tens of terabytes (if you have enough ram for the supporting management structures). Also increase the kernel's KVM from 128G to 511G.
  • Implement dynamic pmap deletion (disabled by default). This directs the pmap code to delete intermediate page table pages and PDs from the pmap on the fly. It can be useful if memory is at a premium, but note that, if enabled, it will slow execution of programs which allocate and deallocate memory at a high rate.
  • Refactor how user 'nice' levels work, making the selected nice values more significant than they used to be.
  • Add a high performance native NVME driver to DragonFly, written by Matt Dillon. This driver will use MSI-X vectors and all available queues supported by the device, per-cpu localization with no locking or minimal locking (no SMP conflicts in most cases), and is capable of insane IOPS and throughput.
  • Graphics:
  • Stabilizes Broadwell and Skylake, bring us up to the Linux 4.6 equivalent DRM.
  • Implement the Linux i2c API to make porting easier.
  • Fix a few old bugs, including a lock order reversal, which could stall-out video playback (and the rest of X).
  • Fix a kernel drm thread priority mistake that allowed user processes to have a higher priority than the drm helper thread. This fixes most temporary video stalls reported on browsers.
  • Handle EFI framebuffer passing into DRM, improve syscons VT switching and fix a related deadlock. Also have the kernel try to switch back to the console VT from X when a panic occurs.
  • Networking:
  • Many improvements across the board.
  • iwm - Fixes an issue caused by inverted logic. Numerous other improvements that significantly improve performance.
  • wlan - Support for asynchronous bg scan and other features added.
  • Other drivers:
  • nvme - Added to default kernel build, plus fixes and performance improvements.
  • mmcsd - Significant eMMC support added to DragonFly.
  • ahci - Some compatibility adjustments and more quirks added to support broken chipsets, in particular port multipliers. Also implement FBS (FIS-Based-Switching) when supported by the chipset.
  • Trackpoint and Elantech support added.
  • Userland:
  • systat enhanced to collapse multiple interrupts belonging to the same driver, as there are often too many to list now.
  • systat -vm 1 significantly enhanced and revamped to report more useful information and to unpack fields so they don't run into each other. And add 'nvme' to the block device match. Also adjust the extended vmstats display and change how ozfod and nzfod is reported.
  • 'vmstat 1' output refactored. All the fields were running into each other due to the high performance of a modern machine verses what existed 30 years ago.
  • Change mount/mountd signalling to reduce unnecessary mountlist scans and commands from mount_null and mount_tmpfs operations. Only really matters under heavy concurrent use of mount/umount, but the bulk build actually creates that situation.
  • Fix numerous fork/exec*() leaks that libc can trigger due to not using O_CLOEXEC in an atomic fashion. Add various O_CLOEXEC features to functions like popen() and mk*stemp*() (add mkostemp() and mkostemps()). Fix a file descriptor leak in popen() when running in a threaded environment.
  • Be nicer to pthreads in vfork() by giving the new sub-process's lwp the same TID as the one that called vfork(). This allows pthread support functions to execute in the child during the vfork without imploding pthreads.
  • Lots of compatibility fixes to headers to improve dports bulk builds.
  • Several OpenSSL imports for security fixes.
  • Resync OpenSSH to make it easier to keep it uptodate.
  • Separate out kernel C flags by having the kernel build use KCFLAGS instead of CFLAGS.
  • Remove numerous old ISA drivers from the tree entirely. As DragonFlyBSD is now 64-bit only, we can begin to remove old drivers that do not exist on 64-bit platforms.
  • Introduce WORLD_CFLAGS and WORLD_CCOPTLEVEL, defaulting to -O. This makes it easier to compile your world -O2 or whatever (e.g. WORLD_CCOPTLEVEL=2). However, we discourage use of 3 or higher. Valid values are 0, 1, 2, 3, s, g, and 'fast'.
  • Adjust STATUS formatting for ps to make it more readable and to remove ancient flags that are no longer applicable and just create clutter.
  • Fix malloc() alignment for small allocations. The minimum alignment is now 16 for allocations in the 16-128 byte range instead of 8. Note that power-of-2 allocations have always been naturally aligned, but some programs use multiples of (e.g.) 16, like '48', and assume 16-byte alignment.
  • Fortunes refactored, added.
  • powerd - Add temperature-based management to powerd with a new -H lotemp:hightemp option. This feature is extremely useful on laptops with poor cooling and whos BIOSes intentionally throttle at too-high a temperature. Powerd now also detects power state changes (which can change the list of available frequencies) and properly transitions the service when a power state change occurs.
  • Lots of libthread_xu / pthreads fixes and adjustments to improve dports compatibility.
  • Add copy-on-write features to the vkernel. For example, allows multiple vkernels to use a single disk image by having each one COW modifications internally to ram.
  • /usr/src/secure rewired, conflicts removed from libmd, libcrypt.
  • Various tools have been upgraded in the base system:
  • Compiler updated to GCC 5.4.1.
  • We now have a gold linker with LTO.
  • binutils 2.25
  • less 481.
  • OpenSSL / LibRESSL completely revamped. Base now uses libressl.
  • Multiple timezone updates.
  • Hammer Status:
  • Miscellaneous improvements. One thing that didn't make it into the release was a version bump to use a faster CRC algorithm with a different polynomial. This work will be MFC'd to -release once testing is complete. However, users should not worry about it too much because the most serious performance fix IS in the release (a fix to the cluster_write() code for filesystem writes).
  • Hammer2 Status:
  • Development continues but no word yet on a first release.
  • Clang status:
  • A starting framework has been added for using clang as the alternate base compiler in DragonFly, to replace gcc 4.7. It's not yet complete. Clang can of course be added as a package.
  • 64-bit status:
  • Note that DragonFly is a 64-bit-only operating system as of 4.6, and will not run on 32-bit hardware.
  • AMD Ryzen support is in the release and further work will be brought in as new Ryzen developments occur. There are some cpu-reported-topology issues that will be fixed and MFC'd. There are some stability issues currently waiting on an AMD microcode update to resolve/retest. Ryzen users can be assured that we are staying on top of it!

New in DragonFly BSD 4.4.3 (Apr 20, 2016)

  • mmcsd(4): Fix typo in disk_create() args. Allows accessing >1 SD-/MMC-card.
  • Add unzip(1). If you can't beat 'em, join 'em
  • Restore ability for master world to build Release 4.4
  • buildworld - Allow -release to be built on master
  • etc/rc.d - diskless adjustments
  • kernel - Add kqueue support to NFS (fix firefox issues w/nfs)
  • Import OpenSSL 1.0.1s.
  • Local adjustments for OpenSSL 1.0.1s.
  • Sync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases
  • zic(8)/zdump(8): Don't warn about abbreviations like '-05'.
  • zic(8): Remove a 'register' that crept in in the last commit.
  • kernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.
  • em.4: Mention i219 support.
  • ig_hal/em/emx: Add I219 (Skylake) support
  • sys/vfs/hammer: Fix bug on erasing volume header
  • sbin/hammer: Don't access beyond 16KB of HAMMER userspace buffer
  • sbin/hammer: Add obfuscate option to hammer show
  • sys/vfs/hammer: Temporary fix for kernel panic on volume-del

New in DragonFly BSD 4.4.2 (Feb 16, 2016)

  • virtio_blk: Use contigmalloc/contigfree for vtblk_request allocations.
  • drm/radeon: We need the physical address of the dummy page, not the virtual
  • if_iwm: Apply some changes from OpenBSD, if_iwm.c rev 1.39 -> 1.42
  • if_iwm: Just store the struct firmware pointer, like if_iwn does.
  • if_iwm: Remove comments referring to Linux iwlwifi source filenames.
  • if_iwm: Fix IEEE80211_ADDR_COPY() usage.
  • if_iwm: Fix up the rate control setup code.
  • etc/rc.d: Update rtsold
  • i915 - Add delay after attach to avoid console/X races
  • kernel - Reduce lwp_signotify() latency
  • devfs - Fix panic on extra devfs mounts when rules are present
  • ssh - Remove undocumented roaming support CVE-2016-0777 CVE-2016-0778
  • kernel - Add quirks for xhci (usb)
  • hammer - remove debugging kprintf
  • libc/stdtime: Fix two cases where a NULL pointer could have been free()'d.
  • kernel/vga: Remove wrong lwkt_reltoken(). It's not taken at this point.
  • libc/nls: Sync str{error,signal}() messages with .
  • w(1): inet_addr() returns INADDR_NONE upon failure.
  • ee(1): Fix an uninitialized variable.
  • kernel: Fix the kern.dumpdev sysctl.
  • Import OpenSSL 1.0.1r.
  • Local adjustments for OpenSSL 1.0.1r.
  • gcc50/libconv_supc: cp-demangle.c needs HAVE_CONFIG_H.
  • Sync zoneinfo database with tzdata2016a from ftp://ftp.iana.org/tz/releases
  • make upgrade: Add an obsolete time zone.
  • igb: Fix DMACR settings
  • ifconfig: Fix inet6 address deletion

New in DragonFly BSD 4.4.0 (Dec 7, 2015)

  • Kernel:
  • Improved CPU power saving settings
  • Reduced file allocation/free contention
  • Reduce kqueue contention
  • Implemented lwp_setname(2) system call
  • Fixed dsp(4) nonblocking operation support
  • Add aperf(4) driver to display effective CPU frequency
  • Numerous cleanups and fixes to HAMMER
  • Sync ACPICA to 20151124
  • Mostly finished removing i386 (32-bit) bits
  • Adjust boot loader heap to handle larger MD images
  • Cleanup pass on dead kernel code (syslink remains, etc)
  • dsched removed (issues with bugs and doesn't work well with SSDs)
  • Recode pager algorithms for low-memory and out-of-memory pkill
  • Graphics:
  • drm/i915 and drm/radeon drivers now match Linux kernel 3.18
  • i915 supports ValleyView/Baytrail and Cherryview Atom SOCs
  • Broadwell GPUs are now fully accelerated
  • Preparatory work for Skylake support
  • The system console now supports drm graphics by default; virtual terminals don't just show a black screen anymore once Xorg has been started and one of the kms kernel modules loaded.
  • Improved power management. Panel Self Refresh available on i915 hardware
  • Temperature sensors now supported on Radeon hardware
  • Networking:
  • Realtek 8168H support in re(4)
  • iwm(4) driver added
  • rtadvd updated, rtadvctl added
  • Asynchronous UDP connections, for handling much greater load
  • New larger TCP starting window, for high-latency connections
  • Kernel nmbcluster values are live-adjustable, for extreme traffic Networking:
  • Stabilize UNIX domain socket
  • New GC code for fd-passing over unix domain sockets
  • Misc IPv6 sync with FreeBSD
  • Improved socket(2) performance for TCP and UDP
  • Improved TCP connect(2) local port selection
  • Added accept(4) system call
  • Added support for SOCK_CLOEXEC and SOCK_NONBLOCK socket(2) and accept4(2) flags
  • Make HW flow control features available to ifconfig
  • Add tunables to allow NFSROOT iosize and readahead to be set
  • Bring in expanded ipfw from FreeBSD (called ipfw3 in DFly)
  • Other drivers:
  • MIDI support has been readded
  • Many bugfixes for the device mapper
  • dm-delay and dm-flakey have been added to the device mapper
  • USB modems work better (or at least don't panic the kernel)
  • Improved access to ram ECC features and status
  • wlan updated from FreeBSD (to just prior to the split-device removal)
  • Userland:
  • the regex library has been replaced with the multi-byte and generally much more capable TRE regex library. It matches OSX in features. (DF is the first BSD to move to TRE after MacOS)
  • libm replaced with OpenBSD version (this is a collaborative work in progress)
  • libc now features symbol versioning which can enable binaries created on Release 4.4 to execute on DragonFly for years into the future.
  • Complete overhaul and update of locales, including the implementation of collation.
  • malloc.h removed (DragonFly is the first BSD to remove this header)
  • gcc50 libstdc++ modified to enable full usage of C99 functions on clang
  • As a consequence of locales update, the output of ls(1) long format and -T format has changed when named locales are in use. Notably, the long format months are always abbreviated in English (using the POSIX definitions thus guaranteed to be both fast and three letters wide) and the year, hour and second information is always displayed. Under the C/POSIX locale there is no change in ls(1) output other than future timestamp handling was corrected to match the POSIX standard requirements.
  • If WPA Supplicant from base is used, there will be a 10-second delay during boot as a message is displayed that strongly recommends that the DPorts version (security/wpa_supplicant) be used instead.
  • Improved powerd(8)
  • Improved top(1) and ps(1) output for LWPs and kernel threads
  • Fixed the support for pthread_set_name_np(3)
  • Ported tcpdrop(8)
  • Addition of many new locales including six Arabic locales (UAE, Saudi Arabia, Egypt, Jordan, Morocco, Qatar), additional Spanish locales (Mexico, Argentina, Costa Rica), additional English locales (Phillipines, Singapore, Hong Kong), corrected Norwegian locales (nb and nn only), extended Swedish (Finland), Sami (Finland, Norway), Serbian presented in both Cyrillic and Latin forms now. ('locale -a' provides a complete list.)
  • rtadvc imported from FreeBSD
  • Various tools have been upgraded in the base system:
  • nvi2 updated to version 2.1.3
  • libexecinfo added (synced from FreeBSD)
  • iconv synchronized with FreeBSD
  • openssl updated to 1.0.1q
  • xz updated to 5.2.2
  • libedit updated to version 2015-03-25
  • binutils updated to 2.25.1
  • grep updated to 2.22
  • tcsh updated to 6.19.00
  • libdialog updated to v1.2-20150920
  • (tn)ftp updated to '10 OCT 2015'
  • gcc updated to 5.2
  • acpica updated to 20150717
  • sort(1), which had come from NetBSD, was replaced by FreeBSD version
  • localedef(1), internal tool with origins on Illumos
  • cldr2def, internal tool with origins in abandoned FreeBSD project, but extended for DF
  • Removed from the base system:
  • hostapd (latest version available via dports: net/hostapd)
  • mklocale (replaced by localedef)
  • colldef (replaced by localedef)
  • HAMMER improvements:
  • Many, many cleanups and fixes to Hammer1, thanks to Tomohiro Kusumi
  • Other improvements:
  • DPorts count hovering around 22,800 ports. Many previously broken ports have been fixed by regular users due to contributions offered through GitHub's Pull Request mechanism. (Thanks!)
  • Six "official" sets of DragonFly wallpaper is available at x11-themes/dragonfly-wallpapers (pkg install dragonfly-wallpapers). These are automatically installed and preselected for KDE users, and automatically installed for XFCE4 users but the wallpapers still have be manually selected with that desktop (at least for now). They get installed at share/wallpapers which is symlinked to share/backgrounds/dragonfly.

New in DragonFly BSD 4.2.0 (Jun 29, 2015)

  • Kernel:
  • Fix an exec() optimization race that could deadlock processes.
  • Add reapctl() system call for reaper and sub-process management.
  • Improve slab cleanup performance.
  • Increase default MAXTSIZ from 128M to 256M.
  • Add lock cancelation features.
  • Implement a new callout*() core.
  • Fix callout deadlocks in u4b.
  • Fix a panic on upmap/kpmap access from procfs.
  • Fix a pmap panic in vkernel64.
  • Implement kqueue write filtering for U4B, required by some apps.
  • Fix a major pagetable memory leak that could fill up swap.
  • Swapcache cleaning is allowed to proceed even if swapcache is disabled.
  • pxeboot - workaround some BIOS breakage.
  • usb-u4b - synchronize from FreeBSD as-of March 2015.
  • Refactor kernel message buffer (dmesg) code to fix lost text.
  • Fix panic in situations where a chroot is broken.
  • Fix O_CLOEXEC race in open() and fhopen().
  • Add pipe2() system call.
  • Add chflagsat() system call.
  • Refactor bdirty() handling to fix possible fsync races.
  • Add cpu C-state ACPI parsing and settings.
  • Ext2fs code cleanup.
  • Tmpfs code cleanup.
  • Add utimensat(2) and futimens(2).
  • Graphics:
  • Significant progress continues in the drm (graphics) subsystem, with full acceleration (2D, 3D) supported on most Intel and some AMD GPUs.
  • The kernel drm code has been partially updated to Linux 3.14 in order to follow the evolution of the i915 and radeon drivers.
  • Many Linux programming interfaces and data structures have been implemented in order to make the drm code and its drivers run with as few modifications as possible. From the point of view of the graphics subsystem, the DragonFly kernel can thus be considered a BSD-licensed implementation of Linux.
  • DragonFly now has an experimental KMS (frame buffer) console. Putting 'kern.kms_console=1' in /boot/loader.conf and either starting X or just loading the i915kms or radeonkms module enables support.
  • Backlight control is also generally available for i915 and radeon, useful for laptops.
  • i915
  • The drm/i915 driver has been updated to the Linux 3.14 version, bringing among other things support for Broadwell GPUs (but without acceleration for now).
  • Most GEM code paths are now similar to the Linux ones, increasing stability and performance. This change has been greatly helped by the study of the OpenBSD code.
  • Many bug fixes. The driver is now more robust and handles GPU hangs better.
  • Power savings and framebuffer compression are now enabled by default, depending on the GPU family used.
  • Power management has generally been greatly improved
  • HDMI 4K monitors are now supported, as well as 3D/stereo displays
  • 10-bit color displays should now work out of the box
  • Monitor hot-plugging support has been improved and should now be more robust
  • 2D, 3D acceleration up through the Haswell chipsets now stable.
  • New members of the Haswell GPU family are now supported
  • Initial support for Broadwell GPUs (without acceleration)
  • Frequency changes and overclocking greatly improved on Sandy-Bridge to Haswell
  • The giant 128MB cache is now enabled when available on Haswell GPUs
  • The VECS engine is now enabled on Haswell GPUs and can be used by libva for video post-treatment tasks.
  • radeon:
  • The drm/radeon driver has been updated to the Linux 3.11 version. The most important things this change brings are:
  • Richland APUs support
  • Oland, Hainan and CIK chip family support
  • hdmi sound support (still experimental)
  • power savings improvements
  • It is also now possible to read temperature sensor information.
  • Audio stack:
  • The sound subsystem has been updated to the audio stack of FreeBSD 11 (development version) from January 2015.
  • This change brings improved hardware support as well as enhanced sound quality, the new stack using high-fidelity conversion and resampling algorithms.
  • Newer desktop and laptop audio chipsets since the Ivy-Bridge CPU generation are now supported and it has become possible to send audio data on Display-Port and HDMI links.
  • Many drivers with restrictive licenses or requiring the use of binary blobs have been removed. A new driver has also been added to manage the sound devices of the Acer Chromebook C720 laptop family. This driver is not present in FreeBSD.
  • From a random user point of view, the immediate benefit from these changes is that HTML5 videos can now been played without any special manipulation.
  • Networking:
  • The SCTP protocol (an alternative to TCP and UDP) has been removed. Its code was originally written at the beginning of the 2000s and having never been updated since then, it was starting to become a problem for the general evolution of the network stack.
  • Not having had any known user in 15 years, its removal was an obvious choice.
  • IPv4 support on IPv6 sockets has been removed. This change has helped to greatly simplify the network stack and remove many potential problems.
  • OpenBSD had refused to support IPV4-mapped IPv6 addresses a long time ago, mostly on security grounds. An IETF draft also already recommended to avoid IPv4-mapped IPv6 addresses 12 years ago.
  • The ICMP code is now able to work asynchronously and process data in parallel on many CPUs.
  • Other changes:
  • TCP path MTU discovery now enabled by default
  • Numerous ipv6 fixes and features.
  • Work has been started to make the IPv6 and ALTQ code multi-processor friendly
  • e1000 (em, emx, ig_hal) - sync w/intel em-7.4.2.
  • if_bridge improvements.
  • mountd now properly supports IPV6.
  • Packet Filter (pf):
  • ipfw3 - Ported from FreeBSD (called ipfw2 in FreeBSD)
  • if_lagg improvements.
  • Mobile devices:
  • Synchronize 80211 infrastructure with FreeBSD.
  • RAS features:
  • ECC and temperature sensors
  • The dimm(4), ecc(4), coretemp(4) and memtemp(4) drivers have been created or updated in order to manage hardware sensor information from CPU cores and memory modules.
  • Temperature and ECC error rate data is tagged with hardware topology information in order to quickly identify problematic components.
  • An acceptable error rate can be specified for the ecc(4) driver. If the effective error rate is more important, a sysadmin-visible error is generated via the devctl(4) reporting mechanism.
  • Sensor information is visible directly under the hw.sensors and hw.dimminfo sysctl trees:
  • hw.sensors.cpu5.temp0: 44.00 degC (node0 core1 temp), OK
  • hw.sensors.dimm0.ecc0: 0 (node0 chan0 DIMM0 ecc), OK
  • $ sysctl hw.dimminfo
  • hw.dimminfo.dimm0.node: 0
  • hw.dimminfo.dimm0.chan: 0
  • hw.dimminfo.dimm0.slot: 0
  • hw.dimminfo.dimm0.ecc_thresh: 10
  • hw.dimminfo.dimm1.node: 0
  • hw.dimminfo.dimm1.chan: 1
  • hw.dimminfo.dimm1.slot: 0
  • hw.dimminfo.dimm1.ecc_thresh: 10
  • The ecc(4) and memtemp(4) driver support the memory controllers from Intel Xeon E3, Xeon E3v2, Xeon E3v3, Xeon E5v2, Xeon E5v3 as well as Intel Haswell core i3/i5/i7 processors.
  • Watchdogs:
  • The ichwd(4) driver has been updated and now supports the Intel Coleto Creek (Xeon EP Ivy-Bridge), Lynx Point and Wilcat Point chipsets.
  • A new ipmi(4) driver has been added; it supports the watchdog hardware present in the various IPMI 2.0 systems.
  • Userland:
  • Many manual page cleanups.
  • date -R (RFC 2822 date and time output format).
  • patch - add dry-run alias.
  • sed - add unbuffered output option (-u).
  • camcontrol -b for camcontrol devlist op.
  • netstat -h for human-readable counters
  • rcrun status and its shortcut rcstatus to show the status of a rc script.
  • blacklist support removed from ssh (EOL for that old Debian bug).
  • A simple in-base-system sshlockout, now uses PF table instead of IPFW.
  • tail -q (quiet mode removes filename headers).
  • Add 'idle', 'standby' and 'sleep' directives.
  • Fix seg-fault in jls.
  • Add 'ifconsole' option to /etc/ttys to enable serial ports only if designated as the console.
  • rtld-elf - Save/restore fp scratch regs for dynamic linker.
  • rtld-elf - minor bug fixes, synced with FreeBSD
  • powerd enhanced.
  • Major version updates for many dports.
  • Fix a resource leak in libc/db and a memory leak in libc/regex.
  • Ssh now correctly sets xauth's path.
  • libm augmented by FreeBSD (6 functions) and NetBSD (16 complex functions)
  • No more GNU Info pages provided on system
  • symbol versioning activated on 7 libaries: z, ncurses, lzma, edit, archive, md, bz2
  • Various tools have been upgraded in the base system:
  • openssh 6.7p1.
  • file 5.22.
  • ftp 1.205 from netbsd.
  • sh - sync to FreeBSD d038ee76 (mostly fixes that effect poudriere).
  • mdocml 1.13.1.
  • byacc 2014-10-06
  • less 471
  • mpc 1.0.3 (internal)
  • bmake 2014-11-11
  • binutils 2.25 (primary)
  • GCC 5.1.1
  • OpenSSL 1.0.1o
  • Removed from the base system:
  • GCC 4.4
  • Sendmail 8.14
  • Binutils 2.21
  • texinfo 4.13
  • HAMMER improvements:
  • extensive code and documentation cleanups
  • huge number of minor fixes
  • most issues fixed were only visible on dedicated file servers under high loads
  • new "hammer abort-cleanup" command added
  • NFS export of slave filesystems is now possible
  • Other improvements:
  • Boot menu refreshed - color by default - new Blue Fred logo added and displayed by default
  • Building mechanism improved (more parallelism - world and kernel, avoid rebuilding major libraries by changing dependency requirements, add missing start/completion messages on buildworld, buildkernel, make stage4 use recently built rpcgen instead of host rpcgen, don't build unused linker in ctools stage)
  • GCC50 base compiler embedded DT_RUNPATH rather than DT_RPATH (as has been done previously) in built executables. The dynamic linker reacts differently when DT_RUNPATH is present; it will check LD_LIBRARY_PATH before the rpath in that case.
  • Hammer2 Status:
  • Hammer2 is not ready for release but progress continues apace. The core non-clustered code is about 95% operational for single-image operation. This includes all standard frontend operations, snapshots, compression, and the bulk free scan.
  • [In the words of Matthew Dillon]:
  • Work is progressing on the clustering piece. Since the clustering is really the whole point, I am not going to release HAMMER2 until it is operational.
  • Recent developments are as follows:
  • I buckled under and bumped the blockref descriptor from 64 bytes to 128 bytes. This was needed to properly support per-directory quota and inode/data-use statistics but it also has the fringe benefit of allowing up to 512-bit check codes to be used. The quota management is an extremely powerful tool in HAMMER2 so I deemed it worth doing despite the added bloat. I could not implement the fields in the inode due to the presence of indirect blocks without significantly adding to the complexity of the software which is why it had to go into the blockref.
  • The use of very large check codes makes non-verified de-duplication for non-critical data possible. (Non-verified dedup is de-duplication based only on the check code, without validating the actual data content, so collisions are possible where the data does not match. However, it also means the de-duplication can be done several orders of magnitude more quickly needing only a meta-data scan with no data I/O). This is the only sort of dedup that really works well on insanely huge filesystems.
  • The 1KB H2 inode is able to embed 512 bytes of direct data. Once file data exceeds 512 bytes, that area in the inode is able to embed up to 4 blockrefs (it used to be 8), representing up to 4 x 64KB = 256KB of file data. Since HAMMER2 uses 64KB logical blocks (actual physical blocks can be smaller, down to 64 bytes), the blockref overhead is at worst 128 bytes per 64KB or 0.2% of storage. Hammer2 itself implements a radix tree for the block table. Larger block sizes are possible but not convenient due to buffer-cache buffer limitations and the need to calculate and test check codes.
  • My original attempt to implement the clustering mechanic was to use the calling context and both asynchronous locks and asynchronous I/O all in-context acting on all cluster nodes to prevent stalls due to dead or dying nodes. It had the advantage of being very parallel (concurrency scales with process threads). But this quickly became too complex algorithmically and I've given up on that approach. The new approach is to replicate the request from the user thread to multiple kernel threads, one per cluster node, which then execute the operation on each node synchronously (much easier), independent of the user process, and then aggregate/consolidate the results back to the user process. The user process will be able to detach the operation and return the instant it gets a definitive result. This means that stalled or dying nodes will not slow down or stall the frontend VOP. The kernel node threads themselves can be multiplied out for additional concurrency.
  • It should be noted that frontend operations which operate on cached data will be able to complete in-context and will not have to issue replicated requests to these kernel threads. This includes core inode meta-data and, most especially, read or write operations for data already cached in the VM page cache / buffer cache.

New in DragonFly BSD 4.0.3 (Jan 24, 2015)

  • Updates OpenSSL to 1.0.1l

New in DragonFly BSD 4.0.1 (Nov 26, 2014)

  • Version 4 of DragonFly brings Haswell graphics support, 3D acceleration, and improved performance in extremely high-traffic networks. DragonFly now supports up to 256 CPUs, Haswell graphics (i915), concurrent pf operation, and a variety of other devices.

New in DragonFly BSD 3.8.0 (Jun 5, 2014)

  • Dynamic binaries in the root filesystem:
  • DragonFly binaries in /bin and /sbin are now dynamic, which makes it possible to use current identification and authentication technologies such as PAM and NSS to manage user accounts.
  • Some libraries have been moved to /lib to support this.
  • New USB:
  • USB4BSD is now default in DragonFly. USB3 devices are supported, though some network devices may not be recognized.
  • Graphics drivers:
  • The drm/i915 driver had originally been ported from FreeBSD. An ongoing synchronization work with the version present in the Linux 3.8 branch is now going on. The mid-term goal is to be able to use GPUs included in Haswell and ValleyView/Bay Trail processors.
  • Supported GPUs are currently limited to HD4000 from the Ivy Bridge processor generation.
  • Even if this goal has not been reached yet, the partial synchronization with the drm/i915 implementation from Linux 3.8.x has already allowed many bugs to be fixed and general driver stability to be improved.
  • The drm/ttm memory manager used by the drm/radeon driver has been partially synchronized with the version present in Linux 3.9, improving its stability. Howewer, many issues remain and thus Xorg still doesn't use the drm/radeon driver by default.
  • Last 32-bit release:
  • A 32-bit address space is now a significant limitation in the high-performance world where DragonFly lives.
  • This is the last DragonFly release planned to work on i386. Please plan to upgrade to 64-bit when possible. Note that prebuilt packages for this release will only exist for 64-bit systems; 32-bit users will have to build by hand.
  • Kernel changes:
  • Various netmap updates (still not functional).
  • ohci, uhci, and xhci synced with FreeBSD.
  • USB4BSD is now default
  • Add native C-state support for Intel CPUs
  • Fix and extend mwait C-state support
  • Add Intel performance-energy hint support
  • Overhaul Intel software controlled clock modulation support
  • Userland changes:
  • DragonFly now uses dynamic binaries in the root filesystem
  • PAM and NSS will work with DragonFly.
  • tcplay has been updated to version 2.0.
  • pfi now supports authorized_keys
  • tools/hammer-backup.sh, a simple Hammer backup script, added
  • Updates/syncs for units(1), sed(1), cmp(1), and newgrp(1).
  • fetch, patch, install, and daemon updated.
  • GSoC project 'SysV IPC in userspace' committed
  • Hardware changes:
  • drm/ttm/i915 updated significantly to match Linux 3.8's DRM implementation
  • Updates to bwn(4)
  • Updates to vtnet(4)
  • cyapa(4) support added (Chromebook touchpads)
  • arcmsr(4) updated
  • Network changes:
  • Possible panics fixed in gif, pf, ip, and in.
  • iwn(4) updated
  • ath(4) updated
  • Unnecessary network stack IPIs reduced
  • ix updated to 2.5.15, with a drop in processing requirements
  • TCP port token split for better TCP connect(2) performance
  • IPv4 multicast support fixed
  • HAMMER2:
  • HAMMER2 is in the system but not ready for use. Development of HAMMER2 is ongoing in DragonFly 3.9.
  • Removals:
  • Last bits of Xerox NS support removed
  • ATM protocol support removed
  • IPX and NCP protocols support removed
  • NWFS filesystem removed
  • Contributed Software:
  • bmake updated to bmake-20131001.
  • mdocml updated to mdocml-1.12.3
  • binutils updated to 2.24
  • dma updated to version 0.9
  • libpcap updated to 1.4.0
  • file updated to 5.18
  • OpenSSL updated to 1.0.1g
  • ee updated to 1.5.2
  • tzdata updated to tzdata2014c
  • ACPICA updated to 20140424
  • Security related:
  • CVE-2014-3879 has been patched as of the 3.8.0 release.

New in DragonFly BSD 3.6.1 (Feb 22, 2014)

  • hammer - Ignore privilege check for HAMMERIOC_PFS_ITERATE.
  • Fix indentation from the previous commit.
  • hammer - Really fix VFS_STATFS() when operating volumes.
  • sed(1): Implement the 'i' flag.
  • drm: Convert idr spinlocks to lockmgr locks
  • idr: fix sizeof in kmalloc calls
  • idr: access nodes array with token held
  • idr: fix bounds checks
  • install(1): Fix 2.5 y/o verbose bug, use static functions
  • idr : Fix logic error in binary tree allocation
  • jails/netinet6: Only select jailed ips for outgoing
  • jails/netinet6: unbreak source selection after cfd7912
  • idr: Fix an infinite loop issue
  • swapcache - Fix token leak
  • sys: platform: pc64: vmm: vmx.c: bug-fix in PROCBASED2 detection
  • : #if 0 some prototypes of syscalls which we don't (yet) have.
  • kernel: Fix two typos, _KERNRL -> _KERNEL and ALTQ_unLOCK -> ALTQ_UNLOCK.
  • mail(1): Fix an over 9 years old typo/bug.
  • acpi utilities: Raise WARNS to 2, bump CSTD to gnu99, fix warnings.
  • Sync zoneinfo database with tzdata2013i from ftp://ftp.iana.org/tz/releases
  • acpi_sony(4): Free the sysctl_ctx upon detaching.
  • hammer2(8): Fix wrong sizeof.
  • kernel/dm_target_striped: Plug a memory leak.
  • kernel/ppc: Fix a tsleep with NULL ident.
  • rcrun(8): Read /etc/rc.conf too for overrides of $local_startup.
  • rcrun(8): Rename $i, $j and $k to (more) meaningful names.
  • rcrun(8): Properly handle scripts that provide more than one keyword.
  • kernel/nataraid: Fix nVidia MediaShield metadata kprintfs for unsigned.
  • kernel/nataraid: Fix a bug for array sizes >2TB.
  • kernel/nataraid: Fix a panic upon booting with a degraded Intel RAID.
  • bnx: Only 5718 chip family use PCI_BAR4 as MSI-X table; rest use PCI_BAR2
  • callout: Fix callout_terminate() if the callout_reset() is never called
  • altq: Byte counter is not compat w/ RED or RIO AQM

New in DragonFly BSD 3.6.0 (Nov 25, 2013)

  • Kernel changes:
  • Drivers have been made to behave when using a bigger than 128KB maximum IO transfer size
  • CLOCK_PROCESS_CPUTIME_ID support added
  • Support for memory page attributes added
  • Cache invalidation functions enhanced
  • Various advanced memory management functions implemented in the x86_64/amd64 64-bit kernel
  • drm code updated, initially based on the FreeBSD drm2 code from 2012 and later enhanced with OpenBSD and Linux imports
  • GEM and TTM memory managers added
  • Many fixes and performance improvements in the network stack
  • socket: Extend SO_REUSEPORT to distribute workload to available sockets
  • vkernels can now use hardware nested page tables on Intel CPUs
  • Hardware changes:
  • Special support for Cyrix CPUs removed
  • i915/kms support up to Ivy Bridge chips (Xeon E3v2 / Core i 3000)
  • radeon/kms support (very new and still buggy, Xorg driver not enabled by default)
  • drm/kms is only expected to work on 64-bit x86_64/amd64 systems
  • 32-bit i386 systems use an old xorg-server 1.7 based graphic stack by default, better suited to 10-year old machines
  • Many issues fixed and new drivers added in the usb4bsd stack
  • A driver for the Emulex OneConnect 10Gb NICs has been added, oce(4)
  • I/O performance regression seen in VMware ESXi fixed
  • Support for nvidia MCP79 AHCI controllers added
  • 10Ge TSO performance improved
  • bnx driver: multiple RX/TX rings and MSI-X support for 5718/57785
  • cputimer: Allow MP synchronized TSC to become cputimer
  • em, igb drivers enhanced. Support for i217 and i218 Intel 1Gb adapters added
  • re(4) driver updated, support added for various new chip variants
  • ecc(4): Support for E3-1200 v2 and E3-1200 V3 memory controllers added
  • Many improvements in the mxge(4) driver for Myricom Myri10GE 10 Gigabit Ethernet adapters Hardware support:
  • Add multiple TX queue and RX queue support in bnx(4)
  • Add I217 and I218 support in em(4) and emx(4)
  • Add I354 support in igb(4)
  • Add 8411/8168G/8168EP/8168GU/8411B and 8401/8402/8106 support in re(4)
  • Add Ivy Bridge and Haswell support in ecc(4)
  • Add multiple TX queue, RX queue, multiple vector MSI-X and polling(4) support for mxge(4)
  • Use TSC as cputimer if TSC is MP synchronized
  • Add AMD CPUs family > 10h support in ACPI P-State
  • Network changes:
  • Add new semantic to SO_REUSEPORT, so this socket option is useful for TCP listen sockets and unicast UDP sockets. This greatly improves TCP accept(2) performance, overall receiving and sending performance. An nginx patch is integrated into dports to support SO_REUSEPORT.
  • Greatly improve both blocking and non-blocking connect(4) performance for TCP sockets.
  • Improve TSO performance by using 4KB cluster whenever possible on TCP sending path.
  • Add byte based limit to IFQ to reduce buffer-bloat on IFQ for TSO.
  • IFQ is now by default two level priority queue, improving dual side TCP sending performance.
  • HAMMER2:
  • HAMMER2 is in the system but not ready for use. Development of HAMMER2 is ongoing in DragonFly 3.7.
  • Removals:
  • Default pkgsrc installation
  • Contributed Software:
  • mdocml updated to 1.12.2.
  • libexpat (libbsdxml) updated to 2.1.0.
  • grep updated to 2.14.
  • diffutils updated to 3.3.
  • libmpfr updated to 3.1.2.
  • gcc47 updated to 4.7.3.
  • zlib updated to 1.2.8.
  • awk updated to 20121220.
  • tcsh updated to 6.18.01.
  • libedit updated to 2012-12-13.
  • less updated to 458.
  • nvi updated to 2.1.1.
  • GDB updated to 7.6.1.
  • ldns updated to 1.6.16.
  • tnftp updated to 20121224.

New in DragonFly BSD 3.2.2 (Dec 18, 2012)

  • Performance improvements under database load:
  • Significant work has gone into the scheduler to improve performance, using postgres benchmarking as a measure. See the PDF of graphed results to see the improvements. DragonFly should be now one of the best selections for Postgres and other databases.
  • New USB stack:
  • USB4BSD has been incorporated into this release. More USB devices are compatible with DragonFly, and xhci (USB 3.0) users may be able to take full advantage of their newer hardware. Since this is a new feature, it is available in 3.2 but not built by default. See the original announcement for how to do so.

New in DragonFly BSD 3.2.1 (Nov 3, 2012)

  • Kernel changes:
  • Many bug fixes, greatly improving stability. More robust pcb_onfault handling, fixed issues in the namecache module, VM system, etc.
  • Removed several arbitrary bounds on kernel caches (such as the buffer cache) for x86-64.
  • Improved control over BREAK_TO_DEBUGGER by adding run-time sysctls.
  • Removed sio console baud switching when console & getty/login is running on the same serial port.
  • mmap() now segment-aligns mappings when reasonable to do so.
  • KTR logging is now frozen on entry to panic.
  • Removed size cap for tmpfs. This created problems when mounting tmpfs partitions from fstab prior to swap being turned on.
  • Numerous buffer cache clustering performance improvements.
  • Numerous vkernel related fixes.
  • Implicit 64KB I/O request size limitations have been removed. All block devices can now cluster I/O requests up to MAXPHYS (currently 128KB) if they support it.
  • A new filesystem-independent quota subsystem has been added. See vquota(8)
  • Fixed floating point rounding for long double in x86_64 platform
  • Implemented RFC1405 and SACK rescue retransmission
  • Several Google Summer of Code projects added for PUFFS support, scheduler changes.
  • tmpfs filesystems can be exported over NFS
  • Make carp(4) lockless MPSAFE
  • More RFC3390 conforming
  • RFC6298 conforming
  • RFC6633 conforming
  • Improve RFC4015 support
  • Implement RFC6675
  • Implement RFC4653
  • Fix several SACK related bugs
  • Optimize SACK scoreboard allocation
  • Implement "Rescue Retransmission for SACK-based Loss Recovery Algorithm"
  • Support memory-mapped PCIe configuration space access
  • Make PAWS robust against segement reordering
  • Asynchronize TCP's pru_rcvd; improve performance.
  • ACPICA update (submitted by Magliano Andrea)
  • Added O_DIRECTORY and O_CLOEXEC support to open(2)
  • Hardware changes:
  • A driver for the new Ivy Bridge random number generator has been added
  • Our ACPI reference implementation has been updated
  • Smart Battery System support has been added
  • Many ACPI and interrupt routing improvements, as well as bug fixes and workarounds for broken hardware
  • Watchdog drivers for Intel and AMD chipsets have been imported from FreeBSD. See ichwd(4) and amdsbwd(4).
  • A ixgbe(4) driver for Intel 10Gb/s ethernet adapters has been added.
  • Many drivers for hardware RAID adapters have been updated
  • A hpt27xx(4) driver for HighPoint RocketRAID 27xx SAS controllers has been added
  • A hptrr(4) driver for HighPoint RocketRAID 17xx, 22xx, 23xx and 25xx has been added
  • Update igb(4) to 2.2.3, add MSI-X support and various improvements
  • Update bge(4) support from FreeBSD
  • Add Broadcom 5718 and 57785 chip-family support (bnx(4))
  • Add TSO support for IPv4 TCP
  • Add TSO support in em(4), emx(4), bce(4), bge(4), bnx(4), igb(4), jme(4)
  • Stabilize alc(4) support
  • Update em(4)/emx(4) to 7.2.4, fix bugs mentioned in errata
  • Improve jme(4) multiple reception queue and MSI-X support
  • New Multiprocessor-safe Work:
  • Introduced a new cpu topology aware scheduler, usched_dfly, and made it the default. This scheduler implements several weighted algorithms and will first try to schedule threads to different sockets (to make best use of on-chip caches). As the load increases threads are then scheduled to real cores, and finally will be scheduled to hyper-threads. Threads with similar load characteristics tend to get spread out more. The scheduler also implements wait/wakeup pairing detection and tries to move related threads closer together to reduce inter-socket cache coherency bandwidth and share L3 caches.
  • Greatly reduced SMP bottlenecks in the unix domain socket code.
  • Implemented shared tokens to reduce unnecessary bottlenecks in the VM system, particularly for forked and threaded processes.
  • Introduced a major pmap optimization for x86-64 which allows page table pages to be shared between UNRELATED processes (so it works for process's separately exec'd or forked), in situations where those processes are mmap()ing the same thing. This feature works extremely well for both sysv shared memory and mmap()-based shared memory. In tests with postgres and a 6GB shared memory block the prior memory consumption from forking is now gone. This page table sharing works even better than the original shm_use_phys sysctl. Also observed significantly faster X application startup.
  • Removed bottlenecks from the SYSV semaphore module and fixed numerous timing races.
  • Added ability to bypass hardware timer read for gettimeofday(), added additional CLOCK_* defines for clock_gettime() and friends.
  • Userland changes:
  • mount(8) now sniffs the label for hints on what type of filesystem is being mounted, when not otherwise specified. UFS is only assumed if no information can be garnered from the sniffing.
  • Added support for DT_GNU_HASH elf sections (RTLD). Essentially DT_GNU_HASH is a GNU extension to the ELF format that allows symbol searches much faster than the System V ABI standard hash does. For very large programs written in languages such as C++ that tend to link in many libraries with many symbols, the reduction in start-time can be dramatic. Base compilers were updated to generate both SysV and GNU hashes for every dynamic binary and the GNU hash will be used preferentially by the dynamic linker.
  • Dynamic linker (RTLD) Added support for preinit, init, and fini arrays, DT_RUNPATH, -z nodefaultlib flag, and dflopen. Updated ELF filter implementation and added two new directives to libmap.conf, along with general bug fixes from FreeBSD
  • Support exception handling on statically linked binaries
  • Imported terminfo(5) and deprecated termcap. DragonFly is the only BSD using terminfo for its terminal database. Termcap is still installed, but terminfo has a higher priority and is accessed first.
  • LDVER support added. If the environment variable LDVER is set as "ld.gold" then the gold linker will be used over the default ld.bfd linker, similar to compiler-focused CCVER. Invalid values are ignored.
  • cut(1) - synced with FreeBSD
  • realpath(1) - missing posix functionality added (From FreeBSD)
  • TUI mode added to kgdb, fixed on gdb
  • boot2 loader reworked for more efficient code so gcc4.6, gcc4.7, and clang will be able to build it within the size limit
  • dragonfly.pool.ntp.org now exists and is used by default for network time
  • LVM stripe support in rconfig
  • Removals:
  • kzip
  • Contributed Software:
  • Shipping with pkgsrc-2012Q3 built packages.
  • Removed gcc 4.1
  • Added libedit 2012-03-11 from NetBSD
  • Added libmpc 1.0.1
  • Added gcc 4.7.2
  • Updated gcc 4.4 to 4.4.7
  • Updated grep to 2.12
  • Updated gdb to 7.4.1
  • Updated zlib to 1.2.7
  • Updated ncurses to 5.9
  • Updated libgmp to 5.0.5
  • Updated OpenSSL to 1.01c
  • Updated tzdata to tzdata2012f
  • Updated sh from FreeBSD
  • Updated libpcap to 1.3.0
  • Updated dhclient from OpenBSD
  • Updated OpenPAM to 'Micrampelis'
  • Updated xz to 5.0.4
  • Updated tnftp to newest NetBSD version
  • Updated libarchive to 3.0.4
  • Updated tcpdump to 4.3.0
  • Updated file to 5.11
  • Security related:
  • No specific security-related updates in this release.

New in DragonFly BSD 3.0.1 (Feb 23, 2012)

  • Kernel changes:
  • crypto(4) now supports the AES-GCM, Twofish, Serpent, Twofish-XTS and Serpent-XTS ciphers.
  • Fixed dm(4)'s remove_all so that it works correctly when the volumes are interdependent.
  • Improved dm(4) performance by reducing serialization in the I/O path.
  • dm_target_crypt now supports plain64 IV generator.
  • dm_target_crypt now supports Serpent and Twofish XTS modes.
  • dm_target_crypt now uses per-volume mpipes. This fixes a major issue with stacked volumes.
  • devfs(4) has been changed to track related devices explicitly by cdev pointer instead of by (sub)name. The devfs subname* API has been completely replaced by the related* API.
  • Fixed some potential deadlocks in dsched(4) and dsched_fq.
  • bfq(4), an experimental, work-in-progress budget fair queuing dsched(4) policy has been added.
  • mps(4) driver has been updated and now supports RAID.
  • pf(4) has been converted to use kmalloc instead of zalloc.
  • Substantial update to the kernel's ELF handling.
  • The refcount API has been overhauled.
  • A netgraph MP race has been fixed.
  • A bug in the kernel smb code relating to directory scanning has been fixed.
  • NFS server updates were pulled in from FreeBSD; read and write clustering behavior is improved.
  • MSI (Managed System Interrupt) and MSI-X support has been greatly expanded.
  • Soft tokens can now be taken in shared mode in addition to the classical exclusive mode.
  • Virtual file system accounting support has been added and will serve as a basis for future file-system independent quota work.
  • Appletalk support removed.
  • tmpfs filesystems can now be exported via NFS.
  • libm has been updated with multiple math functions brought in from NetBSD/FreeBSD.
  • Position-Independent Executables (PIE) support added.
  • TRIM support added.
  • PCI MMC/SD drivers are included in the GENERIC kernel.
  • Hardware changes (non-networking):
  • padlock(4) now supports the built-in random number generator and feeds entropy into the kernel's entropy pool.
  • ubsec(4) has now been fixed to be compatible with the new crypto(4) framework.
  • mfi(4) updated to LSI's version 3.981.
  • hptiop(4) updated.
  • safe(4) added.
  • mps(4) driver updated
  • ecc(4) now supports more hardware.
  • coretemp(4) updated.
  • Hardware changes (networking):
  • bge(4) now supports the 5761, 5784, and 57780 chipsets.
  • ndis(4) updated.
  • msk(4) updated.
  • re(4) updated.
  • lgue(4) added.
  • bce(4) updated.
  • em(4)/emx(4) updated.
  • New Multiprocessor-safe Work:
  • VM: vm_objects now use per-object tokens and a hold/release based-lock protocol, rather than the global VM token.
  • VM: VM page queues locking is now fine-grained
  • VM: x86-64 PMAP has been rewritten to synchronise at the page/object level rather than using the vm_token.
  • kqueue: kqueue uses per-kq and per-list token rather than a global page queue token
  • signals: Move some signal processing unto LWP rather than process tokens
  • Userland changes:
  • The C library slab allocator (nmalloc) has been replaced with a considerably more scalable, faster design on x86-64 (dmalloc).
  • proplib(3) has been updated
  • libdm, a simple BSD-licensed device mapper library that is API-compatible with libdevicemapper has been added.
  • tcplay(8), a simple BSD-licensed tool that allows creation, managing and mapping of TrueCrypt volumes has been added. It is fully integrated with initrd and cryptdisks and 100% compatible with TrueCrypt.
  • tcplay(3), a library based on tcplay(8) that allows access to TrueCrypt volumes, has been added.
  • POSIX 2008 fmemopen(3) and open_memstream(3) routines have been added to libc
  • Bug in socket timeouts has been fixed, allowing Varnish to run w/ default configuration.
  • The jail rc.d script can now automatically mount a devfs inside the jails.
  • Minor fix in hammer(8) for snapshot count in the info directive.
  • Major update to rtld-elf.
  • Major update and bugfixes to sh(1).
  • 'hammer dedup' can run in fixed memory by running multiple passes.
  • buildworld can now be run in parallel for faster results.
  • dfregress, a regression testing framework, added.
  • Support for exception handling on statically-linked binaries.
  • libhammer, a library for HAMMER functions, has been added.
  • tuxload, a tool for stressing the VM system's free memory, has been added.
  • Patches for use with Coccinelle and DragonFly are now included.
  • x86_64-specific changes:
  • A bug in the initial stack pointer alignment has been fixed.
  • File-descriptor passing via sendmsg has been fixed on x86_64
  • MTRR support added to x86_64 kernel
  • dmalloc added (see Userland Changes)
  • Removals:
  • The following ISA only drivers have been removed along with a couple of associated userland tools: aha(4), asc(4), sasc(1), ctx, dgb(4), el(4), gpib, gsc(4), sgsc(1), ie(4), labpc(4), le(4), mse(4), rc(4), rdp(4), spigot, tw(4) & xten(1) & xtend(8), wl(4), wlconfig(8), wt(4).
  • Contributed Software:
  • Shipping with pkgsrc-2011Q4 built packages.
  • binutils 2.20 removed
  • libgnuregex removed
  • BSD gprof replaced with GNU gprof
  • GNU sort replaced by NetBSD sort
  • xchat removed from GUI build
  • awk updated to 20110810
  • binutils updated to 2.22 (2.21 is the default)
  • dma updated to 0.7
  • diffutils updated to 3.2
  • file updated to 5.10
  • ftp updated to match NetBSD's tnftp as of 2012/01/08
  • gcc44 updated to 4.4.7
  • gdb (and kdgb) updated to 7.3
  • gdtoa 20110321 added
  • grep updated to 2.9
  • ldns/drill updated to 1.6.11
  • less updated to 444
  • libarchive updated to 3.0.3
  • libgmp updated to 5.0.2
  • libmpfr updated to 3.1
  • libpcap updated to 1.2.1
  • mdocml updated to 1.11.3
  • OpenPAM updated to 'Lycopsida'
  • OpenSSH updated to 5.9p1
  • OpenSSL updated to 1.0.0g
  • sendmail updated to v8.14.15
  • tcpdump updated to 4.2.1
  • texinfo updated to 4.13
  • xz updated to 5.0.3
  • zoneinfo database updated to tzdata2011n
  • Security related:
  • CVE-2011-4862, telnetd, fixed.
  • CVE-2011-3581, CVE-2011-3207, CVE-2011-3210, CVE-2010-3864 CVE-2010-2939 fixed through contrib software updates.
  • crypt(3) changed to use the Linux implementation of SHA256/512. SHA512 is the new default.

New in DragonFly BSD 2.10.1 (Apr 27, 2011)

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

New in DragonFly BSD 2.6.1 (Apr 7, 2010)

  • Kernel changes:
  • Ported tmpfs (efficient memory filesystem) from NetBSD
  • Added support for minidumps
  • Added swapcache support for SSDs
  • Ported POSIX Message Queues from NetBSD (Google Summer of Code Project).
  • Updated Linuxulator (now runs java, flash,...) for i386
  • fixed vinum root mounts
  • Added watchdog framework (compatible with watchdogd(8))
  • Added gpio framework
  • Ported minidumps from FreeBSD (enabled by default)
  • Added vkernel64 (64-bit vkernels - experimental)
  • Added hotplug pseudo-device
  • Removed msfbufs and reimplemented sfbufs as a consumer of the newly added lwbufs (lightweight buffers)
  • fixed checkpointing
  • Updated opencrypto from FreeBSD-current
  • Updated ACPI from FreeBSD 7.2
  • Updated CPU initialization code From FreeBSD
  • Serious reduction in KVM use for i386
  • KVM expanded to 8GB for x86_64
  • Major performance fixes for random I/O
  • HAMMER changes:
  • Updated to HAMMER version 4
  • snapshot settings and snapstops moved out of /snapshots and into meta-data
  • REDO generation and recovery added to support fast fsync
  • Extended 'hammer snapls' output to print mountpoints and snapshot notes.
  • 'hammer viconfig' takes editor preference into account now
  • Numerous low-memory deadlocks fixed
  • Hardware changes (non-networking):
  • uchcom(4): The driver for WinChipHead CH341/CH340 is now working stable
  • glxsb(4): The driver has been imported from FreeBSD
  • hifn(4): The driver has been fixed to work with updated opencrypto
  • cs5536: Added support for watchdog and gpio on this chip
  • nsclpcsio(4): The driver has been imported from OpenBSD
  • Geode LX: Enable identification and features of this CPU
  • New aibs(4) driver for ASUSTeK AI Booster ACPI ATK0110 voltage, temperature and fan sensors
  • New kate(4) and km(4) drivers for AMD Family 0Fh, 10h and 11h AMD64 temperature sensors
  • New aps(4) driver for ThinkPad Active Protection System accelerometer
  • New wbsio(4) driver for Winbond LPC Super I/O attachment of lm(4) on any ISA port
  • Hardware changes (networking):
  • Imported the alc(4) driver for Atheros AR8131/AR8132 NICs
  • Imported the e1000(4) driver from FreeBSD for Intel Pro/1000 NICs
  • Userland changes:
  • null mounts now accept -o update
  • awk(1): increased input field separator width to handle extended regexps.
  • cpdup(1): added -VV option to verify file's contents and ignore mtime entirely.
  • mount_nfs(8): rdirplus is now the default
  • periodic(8) security now also reports pkgsrc vulnerabilities
  • watchdogd: import from OpenBSD
  • hotplugd(8): import from OpenBSD
  • amd64 related changes:
  • amd64 has been renamed to x86_64
  • 64-bit vkernels now work on 64-bit boxes
  • Removals:
  • The T/TCP extension is no longer supported
  • Contributed Software:
  • Updated BIND to 9.5.2-P3 incl. DNSSEC support available by default
  • Updated SENDMAIL to 8.14.4
  • Updated wpa_supplicant to 0.6.10
  • Updated hostapd to 0.6.10
  • Updated groff to 1.20.1
  • Updated file to 5.04
  • Updated ncurses to 5.7
  • Updated top to 3.8beta1 including DragonFly specific patches
  • Updated less to 436
  • Updated openssh to 5.3p1 (with HPN patch)
  • Updated gcc 4.4 to 4.4.2
  • Added binutils 2.20
  • Added cryptodev support to OpenSSL
  • Security related:
  • ssh server: change defaults for new installations to disallow plain text passwords and allow root login via public key

New in DragonFly BSD 2.4 (Sep 17, 2009)

  • Kernel changes:
  • acpi(4): Import acpica-unix-20090521.
  • acpi(4): Improved power & frequency management for cpus.
  • acpi(4): Significantly improved APIC support.
  • buf/bio: New read-prioritizing bioq sort algorithm. The new algorithm does a much better job prioritizing reads over writes and also contains features to avoid starving-out writes. It works best with CAM based drivers but NATA uses some of its functionality too.
  • buf/bio: Make biowait(), getpbuf(), and most other buf/bio functions MPSAFE.
  • buffer-cache: Improved pipe-lining for writes.
  • bpf(4): Add autocloning support
  • devfs(5): Replaced the static /dev directory with a dynamic device file system written by Alex Hornung during the Google Summer of Code 2009.
  • ddb(4): Fix an IPI messaging lockup which can occur while in ddb(4).
  • disklabel64(5): Add UFS + HAMMER boot support (was previously just HAMMER boot support).
  • drm(4): Sync code with latest from FreeBSD.
  • ext2fs: Support variable inode size (from FreeBSD).
  • mountctl/mount -v: New infrastructure for reporting mount flags.
  • NFS improvements
  • msdos(5): Fixed a number of bugs.
  • pci(4): Sync code with FreeBSD 7.2.
  • Bring iscsi_initiator(4) from FreeBSD.
  • pipe(2): Pipes are now 100% MPSAFE.
  • Add new cred/privilege infrastructure for jail and general use.
  • Consolidate VOP access tests in vop_helper_access().
  • usched_set: Add USCHED_CPU_GET for retrieving the current CPU.
  • revoke(2): Reimplemented the revoke code.
  • pty: Add Unix98 ptys (/dev/ptmx and /dev/pts/*).
  • sound: add autocloning support for dsp devices.
  • tcp: Fixed a reestablishment bug for TCP connections if one side reboots without closing the connection. A port pair could wind up becoming unusable for upwards of an hour or longer.
  • tcp: Improve performance by implementing an automatic high-water mark when it is not otherwise specified, allowing hysteresis between the kernel and the tcp protocol stack.
  • tsleep: New tsleep interlock mechanics implemented to fix races.
  • vkernel(7) improvements
  • vn(4): Add autocloning support
  • Fixed permissions check for utimes() - owner can call even if u-w.
  • Replace the old BSD malloc code with a port of our slab allocator.
  • Fix various clang compile issues
  • Add HPET cputimer.
  • Add lapic timer and enable it by default.
  • Add kernel-layer support for chflags checks, remove (most) from the VFS layer.
  • HAMMER changes:
  • Return shorter-form softlinks "@@-1:d" when appropriate.
  • Add a B-Tree rebalancing feature (hammer rebalance).
  • Fixed improper cred checks for utimes().
  • Fixed edge case in mirroring code.
  • Fixed nohistory mounts and a rare lost inode issue.
  • Fixed sticky bit directory handling for deletions.
  • Break-up initial mirroring batch so restarts do not start from scratch.
  • Better CRC handling, bad-file handling.
  • Refactor merged search function to try to avoid missed entries.
  • Limit recursion for long directory chains, update mtime/ctime.
  • Improve performance for large write loads.
  • Improve directory layout (in-place upgrade to version 2).
  • Allow hammer -b to specify bytes per second if no suffix is supplied.
  • Extract PFS null mounts from anywhere in the filesystem, instead of just from the /pfs subdirectory.
  • Add hammer info directive which prints useful info about a hammer filesystem.
  • Hardware changes (non-networking):
  • ath(4): Add open source HAL code (from FreeBSD) and make it possible to build it into the kernel.
  • cxm(4): Add new driver for Hauppauge PVR-250/350 video capture cards (from FreeBSD).
  • kbdmux(4): Add multiple keyboards on the console via keyboard multiplexer (from FreeBSD).
  • mpi(4): Sync the driver with the latest version from FreeBSD.
  • mpt(4): Sync the driver with the latest version from FreeBSD.
  • ahci(4): Implement a native AHCI driver with full hot-plug and port multiplier support. Also implement ATA pass-through. Uses CAM.
  • sili(4): Implement a native Silicon Image 3132 driver with full hot-plug and port multiplier support. Also implement ATA pass-through. Uses CAM.
  • Hardware changes (networking)
  • ae(4): Add driver for Attansic/Atheros L2 FastEthernet (from FreeBSD).
  • em(4): Synced with Intel's em-6.9.6 (from FreeBSD).
  • emx(4): Copy of em(4) which supports only 8257{1,2,3} parts.
  • iwi(4): Upgrade to use 3.0 firmware and use firmware(9) API to load firmware.
  • mxge(4): Add driver for mxge 10GigE (from FreeBSD + minor adjustments)
  • tap(4): Add ifclone support and autoclone support.
  • vke(4): Convert from kqueue API to cothread API.
  • Turn on adaptive MPSAFE for network threads, and MPSAFE for IP and ARP.
  • RSS: Add Toeplitz hash function.
  • Split ifnet serializer.
  • Add ifpoll, which support hardware TX/RX queues based polling.
  • Userland changes:
  • Fixed a huge number of compiler warnings for various userland utilities.
  • battd(8): Fix some errors and improve the man page
  • compilers.conf(5): This file allows to configure ''external'' compilers (e.g. LLVM/clang) for usage with the DragonFly build(7) system.
  • cpdup(1): Allow uid/gid/flags changes to fail if running as user.
  • env(1): unbreak build of 2.2 release branch under HEAD.
  • expr(1): Add support for -- as required by POSIX.
  • fetch(1): Synced with FreeBSD.
  • devtab: As devfs(5) support access to devices via serial numbers, /etc/devtab can be used to map serial number to human readable labels.
  • devfsctl(1): New utility to add/remove/control devfs(5) rules.
  • dma(1): The DragonFly Mail Agent is now more robust and reliable.
  • ifconfig(8): Add static ARP support.
  • installer: Fix the bug when used from console with the LiveDVD.
  • installer: Fixed various bugs and cleaned the code.
  • iscontrol(8): Brought from FreeBSD.
  • libc updates
  • libfetch(3): Synced with FreeBSD.
  • libiconv: Add support for static binaries.
  • libm improvements
  • magic(3): Fix program name extraction from core dumps.
  • mount_msdos(8): Add UTF8 support.
  • mount_ntfs(8): Add UTF8 support.
  • ncal(1): Highlight current day (from FreeBSD).
  • pax(1): Add a -O option: force one volume (from NetBSD).
  • pkgsrc: pkgsrc GIT repo now shipped instead of CVS repo.
  • telnetd(8): Apply FreeBSD-SA-09:05.telnet - fix environment based code execution vulnerability.
  • window(1): Synced with NetBSD.
  • vknetd(8): Add features, allow IP address to be set in unsecure mode, allow address 0.
  • smbfs(8): Add UTF8 support.
  • syslogd(8): Sync with FreeBSD.
  • telnet(1): Autologin is now disabled by default.
  • undo(1) improvements
  • vinum(8): Support for geometries larger than 2 TB was added.
  • A pkgsrc git repo is now available on the CD. You can copy it to /usr/pkgsrc and then use standard GIT commands to do an incremental update to the latest pkgsrc.
  • amd64 related changes
  • From Jordan Gordeev's Google Summer of Code 2009 project.
  • Kernel can now map 512G if KVA space.
  • Kernel now supports the entire user VM space.
  • Signal stacks, handlers, dynamic binaries, compiler warnings, etc.
  • Misc fixes for cross-building amd64.
  • Add a build system for amd64 build/test environments.
  • Both cross-build and native world/kernel builds work.
  • Pkgsrc builds are ramping up.
  • Load testing using parallel pkgsrc bulk builds succeeded!
  • SMP now works!
  • Removals:
  • GNU cpio(1) was removed. The BSD licensed rewrite based on libarchive(3) is now default.
  • GNU GCC 3.4 was removed. GCC 4.1.2 and 4.4.1 remain in base.
  • Kerberos/heimdal was removed. Use the version from pkgsrc (security/heimdal).
  • iwicontrol(8) was removed. The iwi(4) firmware is now loaded automatically.
  • Contributed Software:
  • Update file to version 5.03.
  • GCC 4.4.1 was added to base, but is not enabled by default.
  • Update less to version 429.
  • Update OpenSSH to version 5.2p1.
  • Update OpenSSL to version 0.9.8k.
  • Sync zoneinfo database with tzdata2009l.

New in DragonFly BSD 2.2.1 (Apr 30, 2009)

  • Kernel changes:
  • Fixes for libthread_xu: MAP_STACK and an errno leak.
  • Hardware changes:
  • Bug fixes for sppp(4), and i4b(4).
  • Fixed recursive lock in detached close of /dev/tty.
  • HAMMER changes:
  • HAMMER VFS: Added missing hammer_rel_volume() call in deadlock/retry case.
  • Networking changes:
  • Allowed the IP_MINTTL socket option to be set to zero.
  • Release improvements:
  • Fixed an installworld failure due to kernel fixes and a libthread_xu issue.
  • Installer now works correctly in the console, and properly creates device files if they don't exist.
  • Userland changes:
  • Updates for msdosfs, pax(1), and magic(3)
  • Allowed uid/gid/flags changes to fail if running cpdup as a user
  • Contributed software:
  • Synced zoneinfo database with tzdata2009f from elsie.
  • Security updates:
  • FreeBSD-SA-09:05.telnet - fix environment based code execution vulnerability

New in DragonFly BSD 2.2 (Feb 18, 2009)

  • The HAMMER filesystem is considered production-ready in this release; it was first released in July 2008. The 2.2 release represents major stability improvements across the board, new drivers, much better pkgsrc support and integration, and a brand new release infrastructure with multiple target options. Three release options are now available - our bare-bones CD ISO, a DVD ISO which includes a fully operational X environment, and a bare-bones bootable USB disk-key image (less than 512M). We offer over 7,300 pre-built pkgsrc packages for this release. The pkg_radd(1) utility may be used to download pre-built binary packages. By default, this script will query the main package site for a random redirect to one of our mirrors.