|
|
Log in / Subscribe / Register

Topics in filesystem testing

By Jake Edge
July 15, 2026

LSFMM+BPF

It should come as no surprise that a gathering of filesystem developers would discuss filesystem testing; it has been a mainstay of the Linux Storage, Filesystem, Memory Management, and BPF Summit over the years and the 2026 summit was no exception. Ted Ts'o led the discussion this time; he had a few different topics to raise, including his perception of increasing regressions for ext4 in the stable kernels and what can be done to help reduce them. As with other similar sessions at the summit over the years, there is a lot of interest in collaborating on test inputs and outputs, but finding a way to centralize that information has so far eluded the filesystem community.

Ts'o began by noting that he has been noticing more ext4 regressions in the stable kernels of late. Part of the reason is that the ext4 developers have been working on features like support for folios; some of those patches "have subtle dependency requirements that aren't necessarily getting picked up by the automation".

[Ted Ts'o]

Another factor is that patches are being backported into older kernels more frequently, possibly with the assistance of LLMs, he said. So he has seen features that were backported into the 6.1 and 6.6 stable kernels, which led to bugs in those kernels. Some of the bugs caused the kernel to crash on certain tests in the fstests suite. Since there were more than a dozen patches backported, it was "quite painful to actually find those issues". He wondered if other filesystems that had not opted out of the automated patch selection for stable kernels were also encountering that problems.

He has set up a test runner that monitors the patches bound for stable kernels; it will run fstests on kernels with those patches. He has not had time to review the results and compare them to a baseline to find regressions, however. It is something he can automate, but has not gotten there yet.

Ts'o said that any filesystems that can be tested with fstests in his test runner, "which is most of them", could be added into the mix for testing with the stable-kernel patch candidates. He has the capacity to do so and can provide reports via email so that more filesystems can be tested with the stable backports. He also put out the word that he was looking for a Python programmer to develop a program to compare the test output from two runs to find regressions between them.

Ts'o has also been spending some time on automation for his xfstests-bld test appliance. He has added support for doing Git bisection, including for situations where the kernel crashes while running the tests. He would be happy to help get that set up for anyone interested. Kdevops is another option for filesystem developers to use. He suspects that there will be a lot more activity due to bug reports and patches from LLMs; "testing is the only way we can stay on top of it".

He then opened the floor for others to share their ideas about filesystem testing. One attendee suggested a shared database of the test matrix and the test results, noting that the idea has come up before. Others agreed, but noted that the environments used for testing—real hardware, virtual machines, different kinds of storage, and so on—make it hard to compare results from testing efforts.

Chuck Lever said that the kdevops project has an archive of results from running fstests, which might be a good starting point. He had also just found out that the kernel networking subsystem (netdev) stores its continuous-integration (CI) test results in patchwork, which has the ability to store data with the patches being tracked. Netdev is using that for storing its CI results. (More information can be found on the Netdev Infrastructure for Patch Automation wiki.)

Ts'o said that he had asked Konstantin Ryabitsev about setting up a mailing list for test results that would be archived at lore.kernel.org. When the request was made a year or so ago, Ryabitsev was not enthusiastic about having automated test results stored that way, probably because of the volume of data that might be produced. If others thought there might be value in a list like that, Ts'o said that he could raise the idea again.

Two attendees described dashboards that are used for testing reports in their companies. Ts'o suggested that any open-source efforts of that nature should be posted to the fstests mailing list, since there may be other developers who would use them. Developing a central database for test results with a dashboard that can be used to monitor them is an idea that comes up at every summit, Lever said. He thought it might be a "moonshot", but perhaps the Linux Foundation could be enlisted to help make that happen. Ts'o thinks the foundation believes it is already solving the problem with the KernelCI project, but that effort is not well-suited to filesystem testing.

Ts'o said it might be easier to get some one-time funding to simply develop a tool, rather than creating a project like KernelCI, but for filesystem testing, which requires ongoing fundraising to maintain. He suggested that getting filesystem developers to agree on what is needed, maybe around a prototype that someone has vibe-coded, might lead to funding to create a production-ready version of the tool. "We should put our heads together offline."

Another item that Ts'o wanted to raise was the files of test failures that he is maintaining. They are like fstests expunge files, which list tests that should not be run, but are based on the kernel version where the test does not pass. They cover per-filesystem-type failures as well as failures based on a combination of filesystem-type and test scenarios; they document tests that do not work in various long-term-stable (LTS) kernel versions and that likely never will work in those versions.

He said that distributions tend to simply pick up an older version of fstests that corresponds with the kernel they are using. But he does not want to maintain multiple versions of fstests and thinks there is value in running the latest tests; the newer versions of fstests will sometimes point out which kernel version fixed a bug, which may indicate useful backports. Running a newer fstests version does lead to more noise in the results because there are more tests that will never pass on, say, 6.1 or 6.6. That is why he maintains the test-failure files.

Those files currently live with his test appliance, but he wondered if they should move elsewhere and be maintained collaboratively. His focus is on ext4, so that's well-covered by the test-failure files. Lever suggested that the test-failure information be added to the fstests repository, but noted that there may be pushback to fix the tests instead. Ts'o said that the fstests maintainer has made it clear that they are not interested in tracking "what got fixed in what versions". There is a certain amount of sense to that because different people are using the tests in different ways; Ts'o only tracks LTS kernels, while distributions will want to track their kernels, which may diverge from the upstream kernel versions.

Christian Brauner raised the problem of "flaky" tests, those that only pass sometimes. Ts'o said he has an internal version of his harness that allows tests to be marked flaky; if they fail, they are run three more times and are only reported if all of those fail. He has meant to add that feature into the public version, since it is useful, but has not found the time.

Various people have their own versions of the expunge files for different kernel versions, so it would be nice to put them all together, Ts'o said. Since fstests is not the right place, maybe the kernel would be, he suggested. With that, the discussion wound down and the session ended.

[I would like to apologize for any errors here. The acoustics in the room were problematic for both hearing and recording. Misunderstanding and misidentification may have resulted.]


Index entries for this article
KernelFilesystems/Testing
ConferenceStorage, Filesystem, Memory-Management and BPF Summit/2026


to post comments

rr

Posted Jul 15, 2026 18:19 UTC (Wed) by quotemstr (subscriber, #45331) [Link]

> Christian Brauner raised the problem of "flaky" tests, those that only pass sometimes. Ts'o said he has an internal version of his harness that allows tests to be marked flaky; if they fail, they are run three more times and are only reported if all of those fail. He has meant to add that feature into the public version, since it is useful, but has not found the time.

Why not run the fs tests in UML, as a normal process, under rr, so that any flakiness can be replayed and debugged deterministically? You could even use --chaos to explore more interleavings.

Couple points

Posted Jul 16, 2026 15:23 UTC (Thu) by koverstreet (subscriber, #4296) [Link]

- Testing needs to be not just a filesystem thing, but a kernel thing. When bcachefs was in the kernel, it was really quite shocking how frequently (every release cycle!) my test dashboard would blow up due to regressions from other subsystems. Frequently when I went to report these the subsystem maintainers didn't even have the resources to reproduce them. It's far more time consuming for someone else to debug your code, who doesn't know it, after it's hit mainline and is mixed in with thousands of other patches; lack of testing is a giant tax on developer time.

But - the xfstests model of writing tests is extremely dated, the "golden master" approach to deciding if a test passes or fails is pretty painful to work with. So I don't see how a solution designed only for running xfstests is going to be of use to the rest of the kernel.

> Ts'o said it might be easier to get some one-time funding to simply develop a tool, rather than creating a project like KernelCI, but for filesystem testing, which requires ongoing fundraising to maintain

Machine resources do require ongoing funding, though - and there's a real disconnect here, the machine resources required to do real filesystem or kernel testing are significant. With Hetzner's recent increase in prices, the monthly bill for bcachefs testing is now $2800/month, that I pay for out of pocket, and that's doing it the most economical way possible - and I keep those machines loaded. When I was talking to Darrick Wong about XFS testing, he mentioned that his OCI bill (that Oracle covers) is $30k/month - a cloud vendor like Google or Oracle is going to charge you ~10x more for the same compute as getting bare metal machines from Hetzner.

When I went to the KernelCI board about making ktest available to the kernel community, the response I got from a board member was "well, we don't see the point of spending that much, we'd maybe do $500/month, and we'd need to see PowerPoint slides first".

Google and Intel pay for pretty significant machine resources for Syzbot and 0day - it's not like there aren't deep pocketed vendors who depend on Linux and have demonstrated a willingness to fund testing, and it would be to everyone's benefit to have a rack or a couple racks of machine for general kernel testing available to the maintainer community, but someone's got to make that argument (especially that it'll get used!).

> Christian Brauner raised the problem of "flaky" tests, those that only pass sometimes. Ts'o said he has an internal version of his harness that allows tests to be marked flaky; if they fail, they are run three more times and are only reported if all of those fail. He has meant to add that feature into the public version, since it is useful, but has not found the time.

This hides bugs. There's always a "long tail" of bugs that rarely reproduce until you throw a ton of resources at them. My approach is - run the full test suite on every commit, and my dashboard can show me the history of any test; that means if a test is flaky I can check - did it start being flaky recently, has it always been flaky - a lot of subtle behavioral regressions (especially subtle performance regressions) show up this way.

Glad to see testing being talked about more, I hope it translates into real progress.

kdevops-ng

Posted Jul 21, 2026 9:46 UTC (Tue) by dagmcr (subscriber, #143683) [Link] (3 responses)

Some of the topics discussed here came up recently on the kdevops list:

https://lore.kernel.org/all/9f64bee9-ecc3-4587-9645-21902...

The thread is about moving kdevops onto Nix, after one too many distro
updates broke my test host setup. Nix fixes the environment problem
across any distro, and together with systemd to run QEMU guests and
drive tests as plain services, the proposal allows kernel tests
frameworks or benchmark suites to be reproducible and portable across
machines and distros. For the orchestration on top I stumbled on
Windmill, a workflow engine that turned out to fit really well, and you
get a CLI, a web UI, scheduling/CI, dashboards and runners out of it
for free.

The idea is to keep what kdevops already does, but with other tools
that enable these things mentioned. Also, results that record exactly
which kernel and environment produced them, which is the "environments
make results hard to compare" problem. Bisection (wip) and more.
Still a PoC and very much under discussion. Docs and demo videos:
https://kdevops-ng.readthedocs.io/.

kdevops-ng

Posted Jul 21, 2026 21:37 UTC (Tue) by koverstreet (subscriber, #4296) [Link] (2 responses)

Yeah, NixOS is perfect here. I haven't yet moved the core of my test infrastructure to Nix - the Rust migration has been higher priority - but it's been on the todo list for ages, and much of my server deployments are already converted.

For this kind of infrastructure, NixOS is just as big a deal as Rust is for kernel code.

kdevops-ng

Posted Jul 22, 2026 8:25 UTC (Wed) by dagmcr (subscriber, #143683) [Link] (1 responses)

> Yeah, NixOS is perfect here.

Quick clarification: you don't need full NixOS. Nix (the package manager) installs next to whatever distro you run, so there's no reinstall or infra migration. You keep your usual distro/userland. The tax is that you still have to learn the Nix way, which is probably the "yet another thing to learn" worry from the thread I linked. One payoff: the same /nix/store that boots the guests is what you run on baremetal too, so the two stop being separate setups to maintain.

But Nix is only one of the pieces. In the PoC, systemd runs the VM (and test suite) lifecycle, that let me cut the dependencies for running QEMU and
simplify both the process management and the QEMU incantations -> zero wrappers -> less things to maintain. Windmill ties all this together with a UI and a CLI, and your workflow steps can be in whatever language you like (Python, Bash, Rust, ...).

kdevops-ng

Posted Jul 23, 2026 6:19 UTC (Thu) by koverstreet (subscriber, #4296) [Link]

Yeah, I was referring to the test VM root filesystem.

For the uninitiated, NixOS has very slick stuff which completely removes the whole "generate a root image" step. Greatly simplifies deployment, and keeping everything updated and in sync :)


Copyright © 2026, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds