Skip to content

Conversation

@robn
Copy link
Member

@robn robn commented Dec 15, 2025

Motivation and Context

I was the only shepherd who missed the star that night
I was watching the flock when the others saw the light
They all witnessed the celestial fire
And rushed away to see the messiah
I just did the job I was hired to do
So sue me; screw you

– The Only Shepherd, Tripod, 2007.

6.19-rc1 arrives with the gift of minimal changes 🎄.

Description

Two changes (over three commits):

  • i_state in struct inode is no longer directly accessible, and a macro inode_state_read_once() is provided to get it. I've added a test for that macro and a definition for older kernels. We only use it in one place, so all together a very small change.

  • __vmalloc() is now warning on "invalid" GFP flags, which pointed out places where we're no longer correctly using __GFP_HIGHMEM and __GFP_COMP. Adjusted, see commit messages.

How Has This Been Tested?

Compile checked on: 4.19.325 5.10.240 6.1.159 6.6.101 6.12.41 6.18.0 and 6.19-rc1.

ZTS passed: 6.19-rc1.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance enhancement (non-breaking change which improves efficiency)
  • Code cleanup (non-breaking change which makes code smaller or more readable)
  • Quality assurance (non-breaking change which makes the code more robust against bugs)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Library ABI change (libzfs, libzfs_core, libnvpair, libuutil and libzfsbootenv)
  • Documentation (a change to man pages or other documentation)

Checklist:

@robn
Copy link
Member Author

robn commented Dec 15, 2025

Ahh, new when spl.ko loads:

[Mon Dec 15 20:43:00 2025] ------------[ cut here ]------------
[Mon Dec 15 20:43:00 2025] Unexpected gfp: 0x40002 (__GFP_HIGHMEM|__GFP_COMP). Fixing up to gfp: 0x2dc0 (GFP_KERNEL|__GFP_ZERO|__GFP_NOWARN). Fix your code!
[Mon Dec 15 20:43:00 2025] WARNING: mm/vmalloc.c:3939 at __vmalloc_noprof+0x69/0x80, CPU#5: modprobe/54693
[Mon Dec 15 20:43:00 2025] Modules linked in: zfs(POE+) spl(OE) binfmt_misc 9p intel_rapl_msr intel_rapl_common intel_uncore_frequency_common intel_pmc_core pmt_telemetry pmt_discovery pmt_class intel_pmc_ssram_telem
etry intel_vsec ghash_clmulni_intel aesni_intel rapl snd_pcm snd_timer 9pnet_virtio snd 9pnet soundcore netfs nfsd pcspkr button evdev auth_rpcgss nfs_acl lockd grace sunrpc drm nvme_fabrics configfs efi_pstore nfnet
link vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci autofs4 ext4 crc16 mbcache jbd2 btrfs blake2b libblake2b xor raid6_pq nvme nvme_core psmouse virtio_net nvme_keyring serio
_raw net_failover nvme_auth failover virtio_blk hkdf
[Mon Dec 15 20:43:00 2025] CPU: 5 UID: 0 PID: 54693 Comm: modprobe Tainted: P           OE       6.19.0-rc1 #1 PREEMPT(voluntary)
[Mon Dec 15 20:43:00 2025] Tainted: [P]=PROPRIETARY_MODULE, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
[Mon Dec 15 20:43:00 2025] Hardware name: FreeBSD BHYVE/BHYVE, BIOS 14.0 10/17/2021
[Mon Dec 15 20:43:00 2025] RIP: 0010:__vmalloc_noprof+0x71/0x80
[Mon Dec 15 20:43:00 2025] Code: ff be 01 00 00 00 5b e9 dd f3 ff ff 89 d1 89 74 24 04 81 e1 e0 ad 51 00 89 0c 24 48 8d 3d 17 59 87 01 48 8d 54 24 04 49 89 e0 <67> 48 0f b9 3a 8b 14 24 eb ad e8 00 a6 99 00 90 90 90 9
0 90 90 90
[Mon Dec 15 20:43:00 2025] RSP: 0018:ffffacfc003a3a18 EFLAGS: 00010206
[Mon Dec 15 20:43:00 2025] RAX: 0000000000100000 RBX: 0000000002000000 RCX: 0000000000002dc0
[Mon Dec 15 20:43:00 2025] RDX: ffffacfc003a3a1c RSI: 0000000000040002 RDI: ffffffffa248a9e0
[Mon Dec 15 20:43:00 2025] RBP: 0000000000003000 R08: ffffacfc003a3a18 R09: 0000000000000004
[Mon Dec 15 20:43:00 2025] R10: 000000000002e674 R11: ffff936c012e4800 R12: 0000000000042dc0
[Mon Dec 15 20:43:00 2025] R13: 00000000ffffffff R14: ffff936c40044d80 R15: ffff936c18864418
[Mon Dec 15 20:43:00 2025] FS:  00007fbc9067cf00(0000) GS:ffff93737cff0000(0000) knlGS:0000000000000000
[Mon Dec 15 20:43:00 2025] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[Mon Dec 15 20:43:00 2025] CR2: 00007fbc8fef1c70 CR3: 00000001030b6002 CR4: 00000000003706f0
[Mon Dec 15 20:43:00 2025] Call Trace:
[Mon Dec 15 20:43:00 2025]  <TASK>
[Mon Dec 15 20:43:00 2025]  spl_kmem_alloc_impl+0x50/0xe0 [spl]
[Mon Dec 15 20:43:00 2025]  buf_init+0x4b/0x1c0 [zfs]
[Mon Dec 15 20:43:00 2025]  arc_init+0x146/0x3f0 [zfs]
[Mon Dec 15 20:43:00 2025]  dmu_init+0x36/0x40 [zfs]
[Mon Dec 15 20:43:00 2025]  spa_init+0x138/0x180 [zfs]
[Mon Dec 15 20:43:00 2025]  zfs_kmod_init+0x29/0xc0 [zfs]
[Mon Dec 15 20:43:00 2025]  openzfs_init_os+0xb/0xb0 [zfs]
[Mon Dec 15 20:43:00 2025]  openzfs_init+0x30/0xd40 [zfs]
[Mon Dec 15 20:43:00 2025]  ? __pfx_openzfs_init+0x10/0x10 [zfs]
[Mon Dec 15 20:43:00 2025]  do_one_initcall+0x5a/0x310
[Mon Dec 15 20:43:00 2025]  do_init_module+0x60/0x240
[Mon Dec 15 20:43:00 2025]  init_module_from_file+0xd6/0x130
[Mon Dec 15 20:43:00 2025]  idempotent_init_module+0x114/0x310
[Mon Dec 15 20:43:00 2025]  __x64_sys_finit_module+0x71/0xe0
[Mon Dec 15 20:43:00 2025]  do_syscall_64+0x85/0x610
[Mon Dec 15 20:43:00 2025]  ? do_fault+0x348/0x5e0
[Mon Dec 15 20:43:00 2025]  ? __handle_mm_fault+0x936/0xf70
[Mon Dec 15 20:43:00 2025]  ? count_memcg_events+0xb6/0x150
[Mon Dec 15 20:43:00 2025]  ? handle_mm_fault+0x1d7/0x2e0
[Mon Dec 15 20:43:00 2025]  ? do_user_addr_fault+0x211/0x670
[Mon Dec 15 20:43:00 2025]  ? irqentry_exit+0x7b/0x590
[Mon Dec 15 20:43:00 2025]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[Mon Dec 15 20:43:00 2025] RIP: 0033:0x7fbc8ff18779
[Mon Dec 15 20:43:00 2025] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 4f 86 0d 00 f7 d8 6
4 89 01 48
[Mon Dec 15 20:43:00 2025] RSP: 002b:00007fff26a6a9f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[Mon Dec 15 20:43:00 2025] RAX: ffffffffffffffda RBX: 0000564c2ca0f9f0 RCX: 00007fbc8ff18779
[Mon Dec 15 20:43:00 2025] RDX: 0000000000000004 RSI: 0000564c0af7832b RDI: 0000000000000003
[Mon Dec 15 20:43:00 2025] RBP: 0000000000000004 R08: 0000000000000000 R09: 0000564c2ca123e0
[Mon Dec 15 20:43:00 2025] R10: 0000000000000000 R11: 0000000000000246 R12: 0000564c0af7832b
[Mon Dec 15 20:43:00 2025] R13: 0000000000040000 R14: 0000564c2ca0faf0 R15: 0000000000000000
[Mon Dec 15 20:43:00 2025]  </TASK>
[Mon Dec 15 20:43:00 2025] ---[ end trace 0000000000000000 ]---

Seems like it keeps running ok, but obviously gonna need to do some updates. i'll have a look when I can this week.

@robn robn added the Status: Revision Needed Changes are required for the PR to be accepted label Dec 15, 2025
robn added 3 commits December 17, 2025 22:14
Sponsored-by: https://despairlabs.com/sponsor/
Signed-off-by: Rob Norris <robn@despairlabs.com>
Since Linux 4.12 (torvalds/linux@19809c2da28ae) __GFP_HIGHMEM has been
automatically added to calls to __vmalloc() internally, so we don't need
it anymore. This is good, because since 6.19 the kernel warns if you use
__GFP_HIGHMEM.

Sponsored-by: https://despairlabs.com/sponsor/
Signed-off-by: Rob Norris <robn@despairlabs.com>
It hasn't been necessary since Linux 3.13
(torvalds/linux@a57a49887eb33), and since 6.19 the kernel warns if you
use it.

Sponsored-by: https://despairlabs.com/sponsor/
Signed-off-by: Rob Norris <robn@despairlabs.com>
@robn robn force-pushed the linux-6.19-compat branch from 1651202 to 3125c8b Compare December 17, 2025 11:20
@github-actions github-actions bot removed the Status: Revision Needed Changes are required for the PR to be accepted label Dec 17, 2025
@robn
Copy link
Member Author

robn commented Dec 17, 2025

Last push hopefully sorts out the vmalloc flag changes.

@behlendorf behlendorf added the Status: Code Review Needed Ready for review and testing label Dec 17, 2025
Copy link
Contributor

@behlendorf behlendorf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks again Rob for working through these changes. The churn is never ending! It's nice that what was needed was pretty minimal this time around. Plus those new warnings prompted us to drop those old flags.

@behlendorf behlendorf added Status: Accepted Ready to integrate (reviewed, tested) and removed Status: Code Review Needed Ready for review and testing labels Dec 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Accepted Ready to integrate (reviewed, tested)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants