mirror_zfs/module
Mark Johnston 178682506f 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-13 07:25:39 -08:00
..
avl Suppress Clang Static Analyzer false positive in the AVL tree code. 2023-03-08 13:51:21 -08:00
icp icp: remove redundant FreeBSD check 2024-05-31 15:13:59 -07:00
lua lua: add flex array field to TString type 2024-09-30 10:30:03 -07:00
nvpair xdr: header cleanup 2024-04-03 15:13:27 -07:00
os Grab the rangelock unconditionally in zfs_getpages() 2024-11-13 07:25:39 -08:00
unicode module: unicode: remove unused tolower transformations 2024-11-04 17:26:35 -08:00
zcommon Always validate checksums for Direct I/O reads 2024-10-09 12:28:08 -07:00
zfs ZFS send should use spill block prefetched from send_reader_thread 2024-11-06 11:52:01 -08:00
zstd compress: change zio_compress API to use ABDs 2024-08-22 16:22:24 -07:00
.gitignore FreeBSD: Ignore symlink to i386 includes 2022-08-02 16:34:23 -07:00
Kbuild.in module: unicode: remove unused uconv.c 2024-11-01 12:12:13 -07:00
Makefile.bsd module: unicode: remove unused uconv.c 2024-11-01 12:12:13 -07:00
Makefile.in check-zstd-symbols: also ignore __pfx_ symbols 2023-09-18 09:08:41 -07:00