Re: 'linux/task_io_accounting_ops.h' file not found

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Wed, 30 Sep 2026 07:53:47 UTC
On 29 Sep, Don Lewis wrote:
> On 29 Sep, Don Lewis wrote:
>> I'm trying to update a poudriere jail to CURRENT hash
>> 52b2056849e4f77581594b9ca21ac3feb60429c3 and have run into this buildworld
>> failure:
>> 
>> ===> lib/csu (install)
>> ===> lib/csu/i386 (install)
>> ===> lib/libc (install)
>> /var/poudriere/jails/CURRENTamd64/usr/src/sys/contrib/openzfs/module/os/linux/zfs/zfs_racct.c:29:10: fatal error: 'linux/task_io_accounting_ops.h' file not found
>>    29 | #include <linux/task_io_accounting_ops.h>
>>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 1 error generated.
>> --- zfs_racct.pico ---
>> *** [zfs_racct.pico] Error code 1
>> 
>> make[5]: stopped making "all" in /var/poudriere/jails/CURRENTamd64/usr/src/cddl/lib/libzpool
>> --- realinstall_subdir_lib/libc ---
>> 
>> make[4]: stopped making "install" in /var/poudriere/jails/CURRENTamd64/usr/src/lib
>> --- lib__L ---
>> 
>> make[3]: stopped making "_generic_libs" in /var/poudriere/jails/CURRENTamd64/usr/src
>> make[5]: 1 error
>> 
>> make[5]: stopped making "all" in /var/poudriere/jails/CURRENTamd64/usr/src/cddl/lib/libzpool
>> --- all_subdir_cddl/lib/libzpool ---
>> 
>> make[4]: stopped making "all" in /var/poudriere/jails/CURRENTamd64/usr/src/cddl/lib
>> --- cddl/lib__L ---
>> 
>> make[3]: stopped making "_generic_libs" in /var/poudriere/jails/CURRENTamd64/usr/src
>> --- libraries ---
>> 
>> make[2]: stopped making "libraries" in /var/poudriere/jails/CURRENTamd64/usr/src
>>        40.27 real       386.31 user        40.90 sys
>> --- build32 ---
>> *** [build32] Error code 2
>> 
>> make[1]: stopped making "buildworld" in /var/poudriere/jails/CURRENTamd64/usr/src
>> make[1]: 1 error
>> 
>> make[1]: stopped making "buildworld" in /var/poudriere/jails/CURRENTamd64/usr/src
>> --- buildworld ---
>> 
>> make: stopped making "buildworld" in /var/poudriere/jails/CURRENTamd64/usr/src
>> 
>> 
>> It looks like it is fallout from the recent openzfs import.  I have seen
>> other reports of breakage as well.
>> 
> 
> Still broken:
> 
> zipper:src 393%git log | head -1
> commit a179e72489f8601f37b9039c86d3f224c73b3d51
> zipper:src 394%git status
> On branch main
> Your branch is up to date with 'freebsd/main'.
> zipper:src 395%find /usr/src -name task_io_accounting_ops.h
> zipper:src 396%find /usr/src -type f -print0 | xargs -0 grep task_io_accounting_ops.h
> /usr/src/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c:#include <linux/task_io_accounting_ops.h>
> /usr/src/sys/contrib/openzfs/module/os/linux/zfs/zfs_racct.c:#include <linux/task_io_accounting_ops.h>
> zipper:src 397%git log sys/contrib/openzfs/module/os/linux/zfs/zfs_racct.c
> commit 34f9f5680c9d5d5138e427ba3aeab0138cec3882
> Merge: e1c59c909d63 1f380a4f34da
> Author: Martin Matuska <mm@FreeBSD.org>
> Date:   Tue Sep 29 09:25:04 2026 +0200
> 
>     zfs: merge openzfs/zfs@1f380a4f3
>     
>     Notable upstream pull request merges:
>      #17864 e903655c5 zpool: Add zpool status -vv error ranges
>      #18820 -multiple zdb: account pending DDT-log frees in leak detection
>      #18884 -multiple zio_crypt: establish platform interface; rework common
>                       code to use it
>      #19010 -multiple zfs_namecheck: reject '.' and '..' before a snapshot or
>                       bookmark
>      #19031 994fb1703 Fix metaslab count assertion in metaslab_group_alloc()
>                       for small vdevs
>      #19093 f5b2fc8e2 zfs_ctldir: make .zfs/snapshot/<name> btime the snapshot
>                       creation time
>      #19097 2dece2a34 zstream: report invalid record context without assertions
>      #19102 78f49e1dd vdev_disk: simplify alignment checks for linear ABDs
>      #19108 -multiple Fix permanent errors misfiled into the scrub error log
>      #19110 fa4bc4dec spa_errlog: don't let one unresolvable entry hide the
>                       whole error log
> [snip]
> 
> It looks to me like it is attempting to build linux modules.
> 

It turns out that buildworld succeeds on the host system, but fails to
build the same code in a poudriere jail.  There must be some sort of
subtle difference in the jail environment that breaks buildworld.

The host buildworld compiles
/usr/src/sys/contrib/openzfs/lib/libzpool/zfs_racct.c, not
/var/poudriere/jails/CURRENTamd64/usr/src/sys/contrib/openzfs/module/os/linux/zfs/zfs_racct.c