This section describes the most user-visible new or changed features in FreeBSD since 8.3-RELEASE.

Typical release note items document recent security advisories issued after 8.3-RELEASE, new drivers or hardware support, new commands or options, major bug fixes, or contributed software upgrades. They may also list changes to major ports/packages or release engineering practices. Clearly the release notes cannot list every single change made to FreeBSD between releases; this document focuses primarily on security advisories, user-visible changes, and major architectural improvements.

Problems described in the following security advisories have been fixed. For more information, consult the individual advisories available from http://security.FreeBSD.org/ .

A bug which could cause a kernel thread to have a wrong CPU affinity configuration has been fixed.[r232757]

loader(8) environment variables comconsole_port and comconsole_pcidev have been added. The former allows to set the base address of the serial console I/O port. The later takes the string of the format bus : device : function : [bar] as a value and uses the serial port attached as PCI device at the specified location for console. Both variants pass hw.uart.console variable to the uart(4) driver to properly hand-over the kernel console.[r245847]

A new loader(8) tunable hw.broken_txfifo has been added to enable workaround for old version of QEMU and Xen which have a buggy emulated UART.[r246626]

The F_DUPFD_CLOEXEC command for fcntl(2) has been implemented. This is standardized in IEEE Std 1003.1-2008 (POSIX, Single UNIX Specification Version 4). In addition to this, F_DUP2FD_CLOEXEC has been implemented in analogy with F_DUP2FD .[r239860, r239861]

The filemon(4) pseudo-device has been added. This allows a process to collect file operations data of its children.[r240707]

A bug in VIMAGE jail(8) which could make the network subsystem run on an wrong vnet context has been fixed.[r233584]

debug.kdb.break_to_debugger and debug.kdb.alt_break_to_debugger have been added as sysctl(8) variables and loader tunables. These are disabled by default and BREAK_TO_DEBUGGER and ALT_BREAK_TO_DEBUGGER kernel options now set them enabled. These changes allow GENERIC kernel to support break-to-debugger capability.[r235121]

The FreeBSD sched_ule(4) scheduler has been improved in CPU selection on systems which support SMT (Symmetric MultiThreading, also known as HyperThreading on Intel CPUs). It now prefers a logical CPU when the the other logical CPUs on the physical one are idle, and an idle CPU in an SMT CPU group always has lower priority. The CPU load calculation for load balancing has also been improved to consider highest and lowest CPU load in comparison to differentiate load in CPU groups. This change gives 10-15% performance improvement in SMT CPUs such as Core i7.[r241246]

The shm_map(9) and shm_unmap(9) functions have been added to allow in-kernel code to map portions of shared memory objects created by shm_open(2) into the kernel's address space.[r236684]

A new sysctl(8) variable kern.stop_scheduler_on_panic has been added. When set to 1 , only one thread runs uninterruptedly after a system panic and the other CPUs are stopped. The default value is 0 .[r235502]

The loader(8) tunables kern.maxtsiz , kern.dfldsiz , kern.maxdsiz , kern.dflssiz , kern.maxssiz , and kern.sgrowsiz are now writable sysctl(8) variables.[r240502]

A bug that changes to a mapped file with the mmap(2) system call were not flushed properly under certain circumstances has been fixed. If a process has an NFS-backed file and adds changes to it, normally the changes are written into the backing store automatically. However, the NFS client recognized the modified parts are written successfully even when the write operation was failed for some reason such as permission denied.[r233765, r234094, r236150]

2.2.1 Boot Loader Changes [amd64, i386, pc98] A bug in FreeBSD boot block has been fixed. A pathname of the third stage loader (or kernel) in the boot.config(5) configuration file could not be recognized.[r233377, r234563] A bug in loader(8) which could prevents a UFS1 filesystem on big endian platforms from booting.[r232963] [sparc64] FreeBSD loader(8) now supports heap to show the heap usage.[r235998] The gptboot boot block now reads the backup GPT header from the last LBA only when the primary GPT header and tables are invalid. This mitigates interoperability issues with some geom(4) providers like MIRROR which use the last LBA for the metadata.[r234694] [sparc64] FreeBSD/sparc64 now supports booting from ZFS via the zfsboot boot block and zfsloader .[r236077] A bug in the zfsboot boot block which could prevent -q option from working has been fixed.[r234680] The zfsboot boot block and zfsloader support filesystems within a ZFS storage pool. In zfsloader , the ZFS device name format is now zfs:pool/fs and the fully qualified file path format is zfs:pool/fs:/path/to/file . The zfsboot boot block accepts the kernel/loader name in the format pool:fs:path/to/file or, as before, pool:path/to/file . In the latter case a default filesystem is used (the pool root or a filesystem with the bootfs property). The zfsboot boot block passes the GUIDs of the selected storage pool and dataset to zfsloader to be used as its defaults.[r237765]

2.2.3 Network Protocols Locking performance of the bpf(4) Berkeley Packet Filter has been improved.[r247732] The if_bridge(4) pseudo network interface driver now supports multiple bridges in the same STP domain. It used the same MAC address as the bridge ID for all bridges on the system before.[r236056] The if_bridge(4) now supports link state change notification and works with carp(4) protocol.[r236058] The net.link.bridge sysctl(8) variables can now be set in loader(8) and/or loader.conf(5).[r236072] The default number of the bridge forwarding cache entries of the if_bridge(4) pseudo network interface driver has been increased from 100 to 2000 .[r233085] The table argument in the ipfw(4) packet filter rule syntax now supports IP address, interface name, port number, and jail ID. The following syntax is valid: skipto tablearg ip from any to any via table(42) in A new sysctl(8) variable net.inet.ip.fw.tables_max has been added to specify the maximum number of tables. The default value is 128 .[r234637] IP_RECVTOS socket option to receive for received UDP/IPv4 packets a cmsg of type IP_RECVTOS which contains the TOS byte has been implemented. This allows access to the ECN bits in a protocol on top of UDP.[r247944] A bug in FreeBSD IPv6 stack has been fixed. It could cause a vlan(4) pseudo network interface to get the EUI64 part in an autoconfigured IPv6 address from an unrelated Ethernet interface on the system.[r233112] FreeBSD IPv6 stack now supports multiple FIBs. One can use setfib(1) to select a different routing table for IPv6.[r232552] A bug in reference counting of IPv6 interface routes has been fixed.[r236609, r236611, r236827] FreeBSD IPv6 stack now handles fragment packets which are not actually fragments but have Fragment Header with both the Fragment Offset and the M bit set to 0 as a regular (non-fragment) packet. For more detail, see Internet Draft draft-gont-6man-ipv6-atomic-fragments .[r238495] A bug which could cause a system panic in the multicast routing in kernel with VIMAGE kernel option has been fixed. This option is disabled in GENERIC kernel.[r233605] The lagg(4) pseudo network driver now allows the configuration of which layers are used for the load balance hash calculation. It can be set in ifconfig lagghash option in a comma-separated list. The default value is lagghash l2,l3,l4 . For more detail, see ifconfig(8) manual page.[r236057] A bug in the lagg(4) pseudo network interface driver which could cause an unexpected removal of a member interface upon interface renaming has been fixed.[r238048] The ng_netflow(4) netgraph(4) node and flowctl(8) utility now supports NetFlow version 9. A new export9 hook has been added for NetFlow v9 data. Note that data export can be done simultaneously in both version 5 and version 9.[r238619, r238620] A bug in the ng_patch(4) netgraph(4) node which could cause a system panic has been fixed.[r234682] FreeBSD routing table handling has been improved. It can now perform packet forwarding even while a user application is reading the whole routing table via sysctl(8).[r235056] A loader tunable net.fibs now supports specifying the number of routing tables. The ROUTETABLES kernel option can still be used to set the default number of routing tables.[r235104] FreeBSD SCTP stack now supports ng_iface(4) and stf(4) interfaces.[r233245, r233246] FreeBSD SCTP stack now supports net.inet.udp.checksum sysctl(8) variable for SCTP over UDP over IPv4 encapsulation.[r234805] SO_PROTOCOL and SO_PROTOTYPE socket option have been added. These are socket level options to get the protocol number found in Linux or Solaris. For more detail, see setsockopt(2) manual page.[r232819] An issue in FreeBSD tcp(4) host cache has been fixed. It could cause extra ICMP message exchanges when an ICMP unreach is received but allocation of the corresponding TCP host cache fails.[r235053] A sysctl(8) variable net.inet.tcp.rexmit_drop_options has been added to not drop options from the third retransmitted SYN. The default value is set to 1 for backward compatibility.[r247499]

2.2.4 Disks and Storage The ahci(4) driver now supports Marvell 88SE9220/9230/9235 PCIe 2.0 x2 6Gbps SATA controllers.[r237114] The arcmsr(4) driver has been updated to version 1.20.00.26 and now supports ARC-1214 and ARC-1224.[r244923, r247827] A bug in the amr(4) driver which could cause data corruption has been fixed.[r236319] The ata(4) driver now supports Intel 8 Series chipsets (Lynx Point).[r247099] The ata(4) driver now creates symbolic links for backward compatibility when ATA_CAM kernel option is enabled. In a kernel with ATA_CAM , an ATA/SATA disk is recognized as a device node with a name ada0 instead of ad0 . A symbolic link /dev/ad0 is automatically generated for /dev/ada0 to keep backward compatibility. This symbolic link generation can be controlled by a kern.cam.ada.legacy_aliases (enabled by default when ATA_CAM is set).[r234912] The ata(4) driver now has loader(8) tunables to set initial SATA revision for the specific device. The tunable name is hint.ata. busnum .dev devnum .sata_rev for a device devnum on a bus busnum , or hint.ata. busnum .sata_rev for all devices on a bus busnum . The valid values are 1 , 2 , and 3 , which correspond to 1.5 Gbps, 3 Gbps, and 6 Gbps.[r243124] A new sysctl(8) kern.features.ata_cam has been added. This shows whether ATA_CAM kernel option is enabled or not. This option is disabled in GENERIC kernel.[r233714] A new sysctl(8) variable kern.cam.pmp.hide_special has been added. This controls whether special PMP ports such as PMP (Port MultiPlier) configuration or SEMB (SATA Enclosure Management Bridge) will be exposed or hidden. The default value is 1 (hidden).[r236766] The cam(4) driver now uses READ CAPACITY(16) SCSI command to get device information by default when possible. This enables to detect whether Logical Block Provisioning (also known as TRIM or UNMAP ) in SBC-3 (SCSI Block Commands-3) Specification is supported on the device.[r232942, r236804] The sysctl(8) variables kern.cam.da.da_send_ordered and kern.cam.ada.ada_send_ordered have been renamed with kern.cam.da.send_ordered and kern.cam.ada.send_ordered .[r247105] Performance of the da(4) driver has been improved. It now handles subsequent BIO_DELETE requests handled as a single TRIM request.[r234914] [amd64, i386] The hpt27xx(4) driver has been included in GENERIC kernel.[r245941] The hptiop(4) driver has been updated to version 1.8 and now supports HighPoint RocketRAID 4500/4311/4310/4211/4210/3560/3530.[r239159, r242216] The isci(4) driver now supports Intel C600 Serial Attached SCSI controllers with chip IDs from 0x1d6c to 0x1d6f .[r232554] A bug in the isci(4) driver which could not correctly handle READ CAPACITY(16) SCSI command for an SATA device has been fixed.[r233789] The isci(4) driver now supports SCSI UNMAP to ATA DSM translation.[r239735] A bug in isci(4) driver which could prevent smartctl ( sysutils/smartmontools in the Ports Collection) from working.[r236264] The mfi(4) driver now supports LSI MegaRAID SAS cards named "Drake Skinny" and "ThunderBolt". This includes Dell PERC H810/H800/H710/H700 and Intel RAID Controller RS25DB080/RS25NB008.[r235625] A bug which could make the mpt(4) driver attach LSI MegaRAID cards which should be handled by the mfi(4) driver has been fixed.[r232563] The mfi(4) driver now supports loader(8) tunable hw.mfi.allow_cam_disk_passthrough to control raw disk attachment. The default value is 0 (disabled).[r243826] The mps(4) driver has been updated to version 14.00.00.01-fbsd. This now supports Integrated RAID, WarpDrive controllers, WRITE12 and READ12 for direct I/O, SCSI protection information (EEDP), Transport Level Retries (TLR) for tape drives, and LSI's userland utility.[r237877] [sparc64, powerpc] The mps(4) driver has been added to GENERIC kernel.[r237944, r238074] The MULTIPATH geom(4) class has been updated. It now supports Active/Active mode, Active/Read mode as hybrid of Active/Active and Active/Passive, keeping a failed path without removing the geom provider, manual configuration without on-disk metadata, and add, remove, fail, restore, configure subcommands in the gmultipath(8) utility to manage the configured paths.[r234917] The PART_LDM geom(4) class has been added. This partition scheme has support for Logical Disk Manager, which is also known as dynamic volumes in Microsoft Windows NT. Note that JBOD, RAID0, and RAID5 volumes are not supported yet.[r234407] The RAID geom(4) class now supports the DDF metadata format, which is defined in the SNIA Common RAID Disk Data Format Specification v2.0. It can read non-degraded RAID4/5/5E/5EE/5R/6/MDF volumes. An -o option in graid(8) utility can be used to specify byte order for the DDF metadata.[r235875] The RAID geom(4) class now partially supports Intel Rapid Recover Technology (Intel RRT). It is alike to RAID1, but with dedicating master and recovery disks and providing manual control over synchronization. It allows to use recovery disk as snapshot of the master disk from the time of the last sync.[r246170] The RAID geom(4) class now supports sysctl(8) variables kern.geom.raid.enable and kern.geom.raid. format . kern.geom.raid.enable is to control on-disk metadata recognition in a systemwide basis. When it is set to 1 , it is enabled (the default value is 1 ). kern.geom.raid. format are similar variables to control enable/disable of specific metadata or transformation modules. The valid keywords for format are raid0 , raid1 , raid1e , raid5 , and concat .[r240554, r240556] The RAID geom(4) class now supports BIO_DELETE requests.[r243679] The tmpfs(5) filesystem is production ready, and no longer considered an experimental implementation.[r234512] The tws(4) driver has been updated to version 10.80.00.005 from LSI.[r241763] The umass(4) driver now supports Olympus FE-210 camera, LG UP3S MP3 player, Laser MP3-2GA13 MP3, and Garmin GPS devices.[r235086, r236654] A bug in the xen(4) blkfront driver has been fixed. It could not attach on Citrix XenServer configurations that advertise the multi-page ring extension.[r233791]