mirror_zfs/module/os/freebsd/zfs
Mark Johnston 37e8f3ae17 Grab the rangelock unconditionally in zfs_getpages()
As a deadlock avoidance measure, zfs_getpages() would only try to
acquire a rangelock, falling back to a single-page read if this was not
possible.  However, this is incompatible with direct I/O.

Instead, release the busy lock before trying to acquire the rangelock in
blocking mode.  This means that it's possible for the page to be
replaced, so we have to re-lookup.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Mark Johnston <markj@FreeBSD.org>
Closes #16643
2024-11-14 16:51:20 -08:00
..
abd_os.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
arc_os.c FreeBSD: Add missing memory reclamation accounting 2024-08-05 09:21:29 -07:00
crypto_os.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
dmu_os.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
event_os.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
hkdf.c Remove bcopy(), bzero(), bcmp() 2022-03-15 15:13:42 -07:00
kmod_core.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
spa_os.c Fix build on FreeBSD 2023-03-22 09:24:41 -07:00
sysctl_os.c Remove unused sysctl node 2024-09-03 17:52:33 -07:00
vdev_file.c zfs_file: rename zfs_file_fallocate to zfs_file_deallocate 2024-09-18 11:35:04 -07:00
vdev_geom.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
vdev_label_os.c Use abd_zero_off() where applicable 2023-11-17 13:28:32 -08:00
zfs_acl.c Fix an uninitialized data access (#16511) 2024-09-10 09:08:45 -07:00
zfs_ctldir.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
zfs_debug.c zfs_debug: specific variant for userspace 2024-09-19 15:49:50 -07:00
zfs_dir.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zfs_file_os.c zfs_file: implement zfs_file_deallocate for FreeBSD 14 2024-09-18 11:35:48 -07:00
zfs_ioctl_compat.c freebsd: remove __FBSDID macro use 2023-11-17 14:02:09 -08:00
zfs_ioctl_os.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
zfs_racct.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
zfs_vfsops.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zfs_vnops_os.c Grab the rangelock unconditionally in zfs_getpages() 2024-11-14 16:51:20 -08:00
zfs_znode_os.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zio_crypt.c Fix gcc uninitialized warning in FreeBSD zio_crypt.c 2024-11-01 09:48:55 -07:00
zvol_os.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00