November 30, 2017

There’s a lot of work in progress right now supported by the Foundation! We have projects supported by individual grants and student stipends, as well as work being done by the Foundation’s own staff and co-operative education students from the University of Waterloo. This month, I’ll give a brief update on the many Foundation-supported projects that are in progress.

First, we have a relatively large project to supportĀ online RAID-Z expansion in ZFS. An often-requested feature for ZFS is the ability to enlarge an existing RAID-Z filesystem one disk at a time. Blog posts from ten years ago discussed the lack of support.

The Foundation is working with Matt Ahrens of Delphix, with support from iXsystems, to add this feature into ZFS on FreeBSD and from there into OpenZFS. Matt presented the feature at the recent OpenZFS Developer Summit to great interest from the audience. Matt has been making good progress and we expect the feature to be committed to FreeBSD in 2018, in time for FreeBSD 12.0.

Next, Edward Napierala has a project grant for improving the out-of-the-box experience with FreeBSD as a USB target on hardware like the Beaglebone Black. FreeBSD can emulate a variety of USB devices when the hardware supports USB On-The-Go (OTG), but configuration is inflexible and cumbersome. The goal of this project is to allow a single USB cable to provide power and a USB connection to the FreeBSD target, and have FreeBSD provide an emulated serial console, network interface, and mass storage (USB flash) device. Edward has committed some initial code clean-up as part of this project, and is currently working on implementing automatic re-enumeration for the USB target.

Landon Fuller is making great progress on his project to modernize the Broadcom Wi-Fi infrastructure in FreeBSD. Many changes have been committed into the FreeBSD development repository already, and additional changes are in review.

We are providing stipends to two Masters students at the University Politehnica of Bucharest. Darius Mihai and Alexandru Elise are both working on projects involving Bhyve (FreeBSD’s bespoke hypervisor) on Arm processors. Darius is improving the existing 32-bit (ARMv7) Bhyve port, while Alexandru is porting Bhyve to ARMv8 and 64-bit FreeBSD/arm64. Both of these projects are showing promising results.

As part of our partnership with Intel, Foundation staff member Konstantin (Kostik) Belousov is continuing to add support for recent generation Intel CPUs, and supporting others in the FreeBSD community who are adding related functionality. Kostik is also developing kernel-side nonvolatile memory (NVDIMM) support, and has shared an initial patch for review and testing.

Co-op student Zak Nafziger has been working on a number of projects. He investigated the “Lua Loader” project produced during a previous Google Summer of Code, and has been collaborating with FreeBSD developers working on integrating this project into FreeBSD. There was some work left incomplete during GSoC and in previous efforts to integrate the project into FreeBSD, and Zak updated the Lua loader with a goal of bringing it to parity with the existing loader.

Zak has also been working on integrating and testing UEFI Secure Boot support and has a working prototype which will undergo additional development before being merged into FreeBSD. Finally, Zak has been installing and testing FreeBSD on a number of Arm- and MIPS-based single board computers.

Our other co-op student Heqing (Scottie) Yan has been fixing a number of FreeBSD bugs, and has added test cases to the Capsicum test suite so that test coverage will be in place for future FreeBSD improvements and bug fixes. Scottie is currently working on the FreeBSD port of the Syzkaller kernel syscall fuzzing project. We aim to set up a permanent Syzkaller installation, which will allow us to search for weaknesses in various syscalls on an ongoing basis. Scottie has also submitted bug reports or fixes for issues found during this process.

Finally, I have been working on and collaborating with other FreeBSD developers on a number of tool chain improvements. We are making good progress on migrating to a modern, permissively licensed tool chain for our Tier-1 architectures. One of the final pieces of this work is the adoption of LLVM’s LLD linker. It is ready for use in the base system, but a number of software packages in the third-party ports collection are currently incompatible with LLD. We are working through addressing those before enabling LLD by default.

These projects, in addition to others the Foundation has invested in and will support in the future, will make a significant contribution to FreeBSD 12.0.

 

— Contributed by Ed Maste