# DragonFly BSD 6.4 # **** THIS IS A DRAFT **** . * Version 6.4.0 released 2022 12 23 DragonFly version 6.4 is the next step in the 6.x release series. This version has hardware support for type-2 hypervisors with NVMM, an amdgpu driver, the experimental ability to remote-mount HAMMER2 volumes, and many other changes. The details of all commits between the 6.2 and 6.4 releases are available in the associated commit messages for [6.4.0](https://lists.dragonflybsd.org/pipermail/commits/2022-June/820953.html). To see all the bugtracker issues that were closed for this release, please check [here](/releases/changelog/64). ## Big-ticket items ## Details ### Checksums MD5 (dfly-x86_64-6.4.0_REL.img) = MD5 (dfly-x86_64-6.4.0_REL.iso) = MD5 (dfly-x86_64-6.4.0_REL.img.bz2) = MD5 (dfly-x86_64-6.4.0_REL.iso.bz2) = ### Upgrading If you have an existing 5.x or 6.0 system and are running a generic kernel, the normal upgrade process, described below, will work. Change your local `/usr/src` to 6.4: cd /usr/src git fetch origin git branch DragonFly_RELEASE_6_4 origin/DragonFly_RELEASE_6_4 git checkout DragonFly_RELEASE_6_4 git pull And then rebuild: (in `/usr/src`) make build-all make install-all (reboot your system) make initrd `make initrd` is optional for systems with unencrypted disks. See the [initrd(7)](https://leaf.dragonflybsd.org/cgi/web-man?command=initrd§ion=ANY) man page for details. Don't forget to upgrade your existing packages. 6.4 packages have already been built and are immediately available. pkg update pkg upgrade If you get a lua error when upgrading pkg, copy over a new config file: cp /usr/local/etc/pkg/repos/df-latest.conf.sample /usr/local/etc/pkg/repos/df-latest.conf ## All other changes since prior release ### Security Issues * Recommend updating all systems, a locally-exploitable kernel vulnerability was fixed for this release. ### Kernel * Fix execvPe()s environment passing. * Fix ktrace's handling of 'long' system call return values. * Fix a sysv semaphore panic related to an exit race. * Fix a namecache bloating issue related to dead entries that could slow systems down over time. * Fix several namecache eviction issues which were interfering with nlookup*() operation. * Fix a namecache issues that evicted too many resolved entries, causing unnecessary re-lookups. * Critical section count mismatch panics are more verbose. * Fix multiple issues with vnode recyclement which could result in a long-running system slowing down. Generally speaking, there were leaks in vnode state counts which could prevent vnlru from either running or from finding recycleable vnodes. * Implement mlockall()'s MCL_CURRENT feature and generally match with linux-like expectations. * Fix a lock order reversal and deadlock in cache_resolve_mp() which can get hit when concurrent path lookups cross mount boundaries. * Add the gtaskqueue API from FreeBSD. * nlookup*() now retries lookups on elements which only undergo modification races, and does not retry lookups on elements which are merely locked for access and then unlocked. Improves performance. * KERN_PROC - Change behavior for process list retrievals to not include pure kernel threads by default. * Do not panic if an IP packet with a non-atomic header in the first mbuf makes it to ip*_input(). ### Filesystems * hammer2 - Fix run-away kernel memory allocations during bulkfree when operating on deep trees. * hammer2 - Fix chain allocation tracking counter calculation. * hammer2 - Fix panic related to USB stick pull of mounted H2 filesystem. * hammer2 - Report critical bulkfree transitions that are not supposed to happen. * hammer2 - Fix CHECK FAIL paths that might mangle an inode in-memory. * hammer2 - Validate that inode number on-media against the inode number being looked up. * hammer2 - FIX CRITICAL BULKFREE BUG when multiple PFSs are mounted that could corrupt a H2 filesystem. * hammer2 - FIX ISSUE WHERE DELETED FILES SOMETIMES LINGER UNTIL UNMOUNT, which can leak dead inodes (leave them on the media), slowly filling up the filesystem under certain circumstances. * hammer2 - Lots of syntax cleanups. * hammer2 - Properly set the read-only flag for read-only mounts of PFSs. * hammer2 - Fail the mount if the root volume is not specified. * hammer2 - Fix a panic related to a PFS not being found on-mount. * tmpfs - Fix heavily threaded readdir() races against deletions. * tmpfs - Improve the performance if cookie seeks during directory scans. O(n) to n log n. * msdosfs - Fix a case where a non-dot lookup returns the current directory during a path lookup. * msdosfs - Generate an error instead of a panic when inusemap is inconsistent. * msdosfs - Sanity-check sector count from BPB. * msdosfs - Fix mounting when the device sector size is larger than 512 bytes. * msdosfs - Add /dev prefix if necessary when looking up mount device. * ext2fs - Do a more accurate check for the root inode and for directory entries. ### Networking * ipfw - Fix broken mixed network and host IP specifications in ip tables. The network prefix was improperly inherited from prior entries. * pf - Fix 'set skip on' for interface groups. * pf - Make ":0" (noalias) also ignore link-local IPV6 addresses. * IPV6_V6ONLY now silently accepts any value for this socketopt, fixing certain bits of third-party code. * if_bridge - Fix a broadcast issues that could sometimes cause ARPs to be lost. * if_bridge - Distinguish between interfaces that are part of the same bonded set to allow explicit priorities to be set for backup interfaces. Round-robin operation may not be desired on all interfaces in the bonding set. See the manual page. * urtwn - Add support for the Edimax EW-7811Un V2 (N150) * jail - sysctl net_raw_sockets renamed to allow_raw_sockets. ### Graphics * drm - Retry page fault handler on buffer data in-transit, fixing an Xorg crash on certain monitor connect/disconnect events. * evdev - Make adjustments for better compatibility with the latest X server code. ### Driver updates ### Userland * date - Add the -I flag for ISO 8601 formatted output. * lpr - Fix the '-i' option to allow an optional argument. * last - Fix a seg-fault when time_t is out of range. * man pages - Fix numerous bugs * newfs_hammer2 - Fix "-V 1" option (not that anyone should ever use it). * makefs - Add HAMMER2 support. * makefs - Allocate extra inodes when leaving free space in UFS images. * makefs - Fix the calculation of file sizes. * makefs - Do not assume that daddr_t is 64 bits, cast to 64 bits prior to intermediate multiplications. * /bin/sh - now supports writes to non-blocking descriptors instead of erroring out. In particular, this fixes issues related to writes to non-blocking pipes when the pipe buffer becomes temporarily full. /bin/sh does not necessarily have any control over whether its stdout and/or stderr descriptor is set to non-blocking. Previously, /bin/sh scripts run indirectly during a dsynth would sometimes fail if the dsynth front-end did not drain the pipe quickly enough. * fetch - Fix the "-T timeout" option for additional cases that were not previously being timed-out. * fetch - Fix alarm() races. ### Libraries * libc - Fix environment passing for posix_spawnp(). * libc - Increase the silly small opendir/readdir buffer from 4K to 16K. * libc - Add strerror_l(). * libc - getopt() now recognizes 'option::' for optional argument (gnu extension) * libc - printf() and scanf(), Make "ll" and "L" length modifiers equivalent (GCC). * libc - Protect the dbm_*() API with a mutex, making the functions thread-safe * libc - Make dbm_delete() and dbm_store() signal-safe (use sigblockall() / sigunblockall() for maximum performance). * libc - Multiple minor cleanups to base64.c * libc - Fix b64_pton() for some exact-sized buffer. * libc - gmtime() and other time functions - properly set EOVERFLOW when an overflow occurs. * libc - Fix bug in malloc_usable_size() support. * libc - Correct the handling of non-hex sequences in strtol*() and related functions. * libc_rtld - Reduce the amoutn of libc code compiled into libc_rtld. * libkern - Import timingsafe_bcmp() from FreeBSD. ### Miscellaneous * pciconf updated from April 16 2022 snapshot. * zoneinfo updated to tzdata2022a. * Change the "@" symlink to 'dragonfly' in the build Makefiles to improve readability. * nrelease - Copy /etc/ssl/cert.pem into ISOROOT, fixing the 'binpkg' build target. * build - Fix buildworld bootstrapping from older systems. * Bump CSTD to gnu11 for world and kernel. ### DSynth work * dsynth - Default meta-data version now 2. * dsynth - Add the "fetch-only" directive. * dsynth - Fix DBM race by protecting dbm_store() calls. * dsynth - Increase the width of various fields from 5 to 6 digits due to the TR's performance. * dsynth - Better error reporting for dependency parsing. * dsynth - Add the "list-system" directive. * dsynth - Add the 'Check_plist' configuration file option as an alternative to using -P. * dsynth - Add the 'add' directive, allowing additional ports to be added to the build (causing another build pass) after the current pass ends. This way the developer can go to bed without interrupt the running dsynth with last-minute additions. * dsynth - Do a better job preventing host-installed ports from interfering with dsynth builds. ### Various tools have been upgraded in the base system: * vendor/awk - Upgrade to 20220912 * vendor/bmake - Upgrade to 20220928 * vendor/byacc - Upgrade to 20221106 * vendor/dialog - Upgrade to 1.3-20220728 * vendor/expat - Upgrade to 2.5.0 * vendor/file - Upgrade to 5.43 * vendor/ldns - Upgrade to 1.8.3 * vendor/less - Upgrade to 608 * vendor/libarchive - Upgrade to 3.6.1 * vendor/libedit - Upgrade to 2022-10-30 * vendor/libpcap - Update to 1.10.1 * vendor/TCPDUMP - Update to 4.99.1 * vendor/LIBRESSL - Update to 3.6.1 + local modifications * vendor/OPENSSH - Upgrade to 9.1p1 * vendor/TCSH - Upgrade to 6.24.02 * vendor/TNFTP - Upgrade to 20210827 * libarchive - 3.6.1 import + adjustments * xargs - Sync with FreeBSD ### Compiler status * Currently using GCC 8 by default, with GCC 4.7 built but not used as fallback. * Unchanged from 6.2. ### Package updates * A full set of new binary packages has been built for 6.4, available through the `pkg(8)` tool.