mirror_zfs/module/os/linux/zfs
Rob Norris e1a807b50d linux/zvol_os: fix crash with blk-mq on Linux 4.19
03987f71e3 (#16069) added a workaround to get the blk-mq hardware
context for older kernels that don't cache it in the struct request.
However, this workaround appears to be incomplete.

In 4.19, the rq data context is optional. If its not initialised, then
the cached rq->cpu will be -1, and so using it to index into mq_map
causes a crash.

Given that the upstream 4.19 is now in extended LTS and rarely seen,
RHEL8 4.18+ has long carried "modern" blk-mq support, and the cached
hardware context has been available since 5.1, I'm not going to huge
lengths to get queue selection correct for the very few people that are
likely to feel it. To that end, we simply call raw_smp_processor_id() to
get a valid CPU id and use that instead.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Reviewed-by: Paul Dagnelie <paul.dagnelie@klarasystems.com>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Closes #17597
2025-10-16 17:03:47 -07:00
..
abd_os.c abd_os: split userspace and Linux kernel code 2024-11-15 10:15:00 -08:00
arc_os.c arc_os: split userspace and Linux kernel code 2024-11-15 10:15:00 -08:00
mmp_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
policy.c cred: properly pass and test creds on other threads (#17273) 2025-06-02 16:49:51 -07:00
qat_compress.c Intel QAT 1.7 compatibility 2023-09-07 16:10:52 -07:00
qat_crypt.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
qat.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
spa_misc_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
trace.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
vdev_disk.c [zfs-2.2.8] Revert "vdev_disk: default to classic submission for 2.2.x" 2025-05-29 15:29:27 -07:00
vdev_file.c Use <fcntl.h> instead of <sys/fcntl.h> 2025-05-27 14:56:58 -07:00
zfs_acl.c Fix an uninitialized data access (#16511) 2024-11-05 15:43:52 -08:00
zfs_ctldir.c config: remove HAVE_FILEMAP_RANGE_HAS_PAGE 2024-11-15 10:14:59 -08:00
zfs_debug.c zfs_debug: specific variant for userspace 2024-11-15 10:15:01 -08:00
zfs_dir.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_file_os.c zfs_file: rename zfs_file_fallocate to zfs_file_deallocate 2024-11-15 10:15:00 -08:00
zfs_ioctl_os.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_racct.c module: zfs: fix unused, remove argsused 2021-12-23 09:42:47 -08:00
zfs_sysfs.c [2.2.5-only] Make 'rmmod zfs' work after zfs-2.2.4 (#16406) 2024-08-02 18:03:09 -07:00
zfs_uio.c linux/uio: remove "skip" offset for UIO_ITER 2025-05-27 14:41:45 -07:00
zfs_vfsops.c config: remove HAVE_SUPER_SETUP_BDI_NAME 2024-11-15 10:15:00 -08:00
zfs_vnops_os.c add get_name implementation for exports. (#16833) 2024-12-04 14:12:39 -08:00
zfs_znode_os.c Linux 6.12: PG_error flag was removed 2024-11-15 10:15:01 -08:00
zio_crypt.c ZIL: Assert record sizes in different places 2024-01-08 16:11:39 -08:00
zpl_ctldir.c Linux 6.15: mkdir now returns struct dentry * 2025-05-27 14:41:45 -07:00
zpl_export.c add get_name implementation for exports. (#16833) 2024-12-04 14:12:39 -08:00
zpl_file_range.c config: remove HAVE_VFS_COPY_FILE_RANGE 2024-11-15 10:14:59 -08:00
zpl_file.c Linux 6.16: remove writepage and readahead_page 2025-10-16 16:50:25 -07:00
zpl_inode.c Linux 6.15: mkdir now returns struct dentry * 2025-05-27 14:41:45 -07:00
zpl_super.c Linux: Fix zfs_prune panics v2 2025-05-27 14:41:45 -07:00
zpl_xattr.c config: remove HAVE_XATTR_LIST_SIMPLE 2024-11-15 10:14:59 -08:00
zvol_os.c linux/zvol_os: fix crash with blk-mq on Linux 4.19 2025-10-16 17:03:47 -07:00